Commit 9e2b432d by Zia Fazal Committed by Jonathan Piacenti

added avatar url field

added avatar url field
parent f585d4c3
...@@ -273,9 +273,10 @@ class UserProfile(models.Model): ...@@ -273,9 +273,10 @@ class UserProfile(models.Model):
country = CountryField(blank=True, null=True) country = CountryField(blank=True, null=True)
goals = models.TextField(blank=True, null=True) goals = models.TextField(blank=True, null=True)
allow_certificate = models.BooleanField(default=1) allow_certificate = models.BooleanField(default=1)
<<<<<<< HEAD
bio = models.CharField(blank=True, null=True, max_length=3000, db_index=False) bio = models.CharField(blank=True, null=True, max_length=3000, db_index=False)
profile_image_uploaded_at = models.DateTimeField(null=True) profile_image_uploaded_at = models.DateTimeField(null=True)
title = models.CharField(blank=True, max_length=255, null=True)
avatar_url = models.CharField(blank=True, max_length=255, null=True) # pointer to avatar/image resource
@property @property
def has_profile_image(self): def has_profile_image(self):
...@@ -284,9 +285,6 @@ class UserProfile(models.Model): ...@@ -284,9 +285,6 @@ class UserProfile(models.Model):
this user has uploaded a profile image. this user has uploaded a profile image.
""" """
return self.profile_image_uploaded_at is not None return self.profile_image_uploaded_at is not None
=======
title = models.CharField(blank=True, max_length=255, null=True)
>>>>>>> 947d2c7... asadiqbal08/api_support_title_field_userprofile: [MCKIN-1241] Added support for title field to edX user profile
def get_meta(self): # pylint: disable=missing-docstring def get_meta(self): # pylint: disable=missing-docstring
js_str = self.meta js_str = self.meta
......
...@@ -232,7 +232,8 @@ class UsersApiTests(TestCase): ...@@ -232,7 +232,8 @@ class UsersApiTests(TestCase):
local_username = self.test_username + str(randint(11, 99)) local_username = self.test_username + str(randint(11, 99))
data = { data = {
'email': self.test_email, 'username': local_username, 'password': self.test_password, 'first_name': self.test_first_name, 'email': self.test_email, 'username': local_username, 'password': self.test_password, 'first_name': self.test_first_name,
'last_name': self.test_last_name, 'city': self.test_city, 'country': 'PK', 'level_of_education': 'b', 'year_of_birth': '2000', "gender": 'male', "title": 'Software Engineer'} 'last_name': self.test_last_name, 'city': self.test_city, 'country': 'PK', 'level_of_education': 'b', 'year_of_birth': '2000',
'gender': 'male', 'title': 'Software Engineer', 'avatar_url': 'http://example.com/avatar.png'}
response = self.do_post(test_uri, data) response = self.do_post(test_uri, data)
self.assertEqual(response.status_code, 201) self.assertEqual(response.status_code, 201)
test_uri = test_uri + '/' + str(response.data['id']) test_uri = test_uri + '/' + str(response.data['id'])
...@@ -253,12 +254,14 @@ class UsersApiTests(TestCase): ...@@ -253,12 +254,14 @@ class UsersApiTests(TestCase):
""" """
Create a user, then add the user profile with invalid year of birth Create a user, then add the user profile with invalid year of birth
Profile Must be added with year_of_birth will be none Profile Must be added with year_of_birth will be none
and avatar_url None
""" """
test_uri = '/api/users' test_uri = '/api/users'
local_username = self.test_username + str(randint(11, 99)) local_username = self.test_username + str(randint(11, 99))
data = { data = {
'email': self.test_email, 'username': local_username, 'password': self.test_password, 'first_name': self.test_first_name, 'email': self.test_email, 'username': local_username, 'password': self.test_password, 'first_name': self.test_first_name,
'last_name': self.test_last_name, 'city': self.test_city, 'country': 'PK', 'level_of_education': 'b', 'year_of_birth': 'abcd', "gender": 'male', "title": 'Software Engineer'} 'last_name': self.test_last_name, 'city': self.test_city, 'country': 'PK', 'level_of_education': 'b', 'year_of_birth': 'abcd',
'gender': 'male', 'title': 'Software Engineer', 'avatar_url': None}
response = self.do_post(test_uri, data) response = self.do_post(test_uri, data)
self.assertEqual(response.status_code, 201) self.assertEqual(response.status_code, 201)
test_uri_1 = test_uri + '/' + str(response.data['id']) test_uri_1 = test_uri + '/' + str(response.data['id'])
...@@ -871,6 +874,7 @@ class UsersApiTests(TestCase): ...@@ -871,6 +874,7 @@ class UsersApiTests(TestCase):
self.assertEqual(response.data['country'], data["country"]) self.assertEqual(response.data['country'], data["country"])
self.assertEqual(response.data['gender'], data["gender"]) self.assertEqual(response.data['gender'], data["gender"])
self.assertEqual(response.data['title'], data["title"]) self.assertEqual(response.data['title'], data["title"])
self.assertEqual(response.data['avatar_url'], data["avatar_url"])
self.assertEqual( self.assertEqual(
response.data['level_of_education'], data["level_of_education"]) response.data['level_of_education'], data["level_of_education"])
self.assertEqual( self.assertEqual(
......
...@@ -60,6 +60,7 @@ def _serialize_user_profile(response_data, user_profile): ...@@ -60,6 +60,7 @@ def _serialize_user_profile(response_data, user_profile):
response_data['level_of_education'] = user_profile.level_of_education response_data['level_of_education'] = user_profile.level_of_education
response_data['year_of_birth'] = user_profile.year_of_birth response_data['year_of_birth'] = user_profile.year_of_birth
response_data['gender'] = user_profile.gender response_data['gender'] = user_profile.gender
response_data['avatar_url'] = user_profile.avatar_url
return response_data return response_data
...@@ -130,6 +131,7 @@ class UsersList(SecureAPIView): ...@@ -130,6 +131,7 @@ class UsersList(SecureAPIView):
* level_of_education * level_of_education
* year_of_birth, Four-digit integer value * year_of_birth, Four-digit integer value
* gender, Single-character value (M/F) * gender, Single-character value (M/F)
* avatar_url, pointer to the avatar/image resource
- POST Example: - POST Example:
{ {
...@@ -146,6 +148,7 @@ class UsersList(SecureAPIView): ...@@ -146,6 +148,7 @@ class UsersList(SecureAPIView):
"level_of_education" : "hs", "level_of_education" : "hs",
"year_of_birth" : "1996", "year_of_birth" : "1996",
"gender" : "F", "gender" : "F",
"avatar_url" : "http://example.com/avatar.png"
} }
### Use Cases/Notes: ### Use Cases/Notes:
* GET requests for _all_ users are not currently allowed via the API * GET requests for _all_ users are not currently allowed via the API
...@@ -173,6 +176,7 @@ class UsersList(SecureAPIView): ...@@ -173,6 +176,7 @@ class UsersList(SecureAPIView):
year_of_birth = request.DATA.get('year_of_birth', '') year_of_birth = request.DATA.get('year_of_birth', '')
gender = request.DATA.get('gender', '') gender = request.DATA.get('gender', '')
title = request.DATA.get('title', '') title = request.DATA.get('title', '')
avatar_url = request.DATA.get('avatar_url', None)
# enforce password complexity as an optional feature # enforce password complexity as an optional feature
if settings.FEATURES.get('ENFORCE_PASSWORD_POLICY', False): if settings.FEATURES.get('ENFORCE_PASSWORD_POLICY', False):
try: try:
...@@ -218,6 +222,7 @@ class UsersList(SecureAPIView): ...@@ -218,6 +222,7 @@ class UsersList(SecureAPIView):
profile.level_of_education = level_of_education profile.level_of_education = level_of_education
profile.gender = gender profile.gender = gender
profile.title = title profile.title = title
profile.avatar_url = avatar_url
try: try:
profile.year_of_birth = int(year_of_birth) profile.year_of_birth = int(year_of_birth)
...@@ -265,6 +270,7 @@ class UsersDetail(SecureAPIView): ...@@ -265,6 +270,7 @@ class UsersDetail(SecureAPIView):
* level_of_education * level_of_education
* year_of_birth, Four-digit integer value * year_of_birth, Four-digit integer value
* gender, Single-character value (M/F) * gender, Single-character value (M/F)
* avatar_url, pointer to the avatar/image resource
- POST Example: - POST Example:
{ {
...@@ -281,6 +287,7 @@ class UsersDetail(SecureAPIView): ...@@ -281,6 +287,7 @@ class UsersDetail(SecureAPIView):
"level_of_education" : "hs", "level_of_education" : "hs",
"year_of_birth" : "1996", "year_of_birth" : "1996",
"gender" : "F", "gender" : "F",
"avatar_url" : "http://example.com/avatar.png"
} }
### Use Cases/Notes: ### Use Cases/Notes:
* Use the UsersDetail view to obtain the current state for a specific User * Use the UsersDetail view to obtain the current state for a specific User
...@@ -452,6 +459,10 @@ class UsersDetail(SecureAPIView): ...@@ -452,6 +459,10 @@ class UsersDetail(SecureAPIView):
title = request.DATA.get('title') title = request.DATA.get('title')
if title: if title:
existing_user_profile.title = title existing_user_profile.title = title
avatar_url = request.DATA.get('avatar_url')
if avatar_url:
existing_user_profile.avatar_url = avatar_url
existing_user_profile.save() existing_user_profile.save()
return Response(response_data, status=status.HTTP_200_OK) return Response(response_data, status=status.HTTP_200_OK)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment