1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-07-31 06:40:39 +00:00

fix bug in update user profile contact email (#3409)

* fix bug in update user profile contact email
This commit is contained in:
Leo 2019-05-06 15:48:57 +08:00 committed by lian
parent e6ea2aa129
commit bf6c2e79c2
2 changed files with 25 additions and 11 deletions

View File

@ -88,18 +88,23 @@ class User(APIView):
# argument check for contact_email
contact_email = request.data.get("contact_email", None)
if contact_email:
if not ENABLE_USER_SET_CONTACT_EMAIL:
error_msg = _(u'Feature disabled.')
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
profile = Profile.objects.get_profile_by_contact_email(contact_email)
if not profile:
# update contact email
if not ENABLE_USER_SET_CONTACT_EMAIL:
error_msg = _(u'Feature disabled.')
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
contact_email = contact_email.strip()
if not is_valid_email(contact_email):
error_msg = 'contact_email invalid.'
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
if Profile.objects.get_profile_by_contact_email(contact_email):
error_msg = _('Contact email %s already exists.' % contact_email)
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
contact_email = contact_email.strip()
if not is_valid_email(contact_email):
error_msg = 'contact_email invalid.'
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
else:
# if profile is other user(contact_email already exists)
# else: input same contact email of this user, let it pass
if profile.user != email:
error_msg = _('Contact email %s already exists.' % contact_email)
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
# agrument check for telephone
telephone = request.data.get('telephone', None)

View File

@ -122,6 +122,7 @@ class AccountTest(BaseTestCase):
resp = self.client.put(self.url, data, 'application/x-www-form-urlencoded')
self.assertEqual(400, resp.status_code)
@patch('seahub.api2.endpoints.user.ENABLE_USER_SET_CONTACT_EMAIL', False)
def test_update_user_contact_email_feature_disabled(self):
self.login_as(self.user)
Profile.objects.add_or_update(self.user_name, contact_email='2@2.com')
@ -147,6 +148,14 @@ class AccountTest(BaseTestCase):
json_resp = json.loads(resp.content)
assert json_resp['contact_email'] == random_contact_email
# same contact email as his/her own contact email
contact_email = Profile.objects.get_contact_email_by_user(self.user_name)
data = 'contact_email=%s' % contact_email
resp = self.client.put(self.url, data, 'application/x-www-form-urlencoded')
json_resp = json.loads(resp.content)
self.assertEqual(200, resp.status_code)
assert json_resp['contact_email'] == contact_email
# test invalid contact email
random_contact_email = generate_random_parammeter(0, 0, 'contact_email_invalid')
data = 'contact_email=%s' % random_contact_email