Skip to content

Commit

Permalink
fix update_full_name() with existing name (#1371)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikkonie committed Mar 15, 2024
1 parent 2f285d2 commit 8daabb4
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 3 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ Changed
- Upgrade general Python dependencies (#1374)
- Reformat with ``black==24.2.0`` (#1374)

Fixed
-----

- **Projectroles**
- ``SODARUser.update_full_name()`` not working with existing name (#1371)

Removed
-------

Expand Down
14 changes: 11 additions & 3 deletions projectroles/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1344,11 +1344,19 @@ def update_full_name(self):
:return: String
"""
# Save user name from first_name and last_name into name
if self.name in ['', None] and self.first_name != '':
self.name = self.first_name + (
full_name = ''
if self.first_name != '':
full_name = self.first_name + (
' ' + self.last_name if self.last_name != '' else ''
)
self.save()
if self.name != full_name:
self.name = full_name
self.save()
logger.info(
'Full name updated for user {}: {}'.format(
self.username, self.name
)
)
return self.name

def update_ldap_username(self):
Expand Down
1 change: 1 addition & 0 deletions projectroles/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ def handle_ldap_login(sender, user, **kwargs):
"""Signal for LDAP login handling"""
try:
if hasattr(user, 'ldap_username'):
logger.debug('Updating LDAP user..')
user.update_full_name()
user.update_ldap_username()
except Exception as ex:
Expand Down
11 changes: 11 additions & 0 deletions projectroles/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1523,6 +1523,17 @@ def test_update_full_name(self):
self.user.update_full_name()
self.assertEqual(self.user.name, 'Full Name')

def test_update_full_name_non_empty(self):
"""Test update_full_name() with previously non-empty name"""
self.user.first_name = 'Old'
self.user.last_name = 'Placeholder'
self.user.update_full_name()
self.assertEqual(self.user.name, 'Old Placeholder')
self.user.first_name = 'Full'
self.user.last_name = 'Name'
self.user.update_full_name()
self.assertEqual(self.user.name, 'Full Name')

def test_update_ldap_username(self):
"""Test update_ldap_username()"""
self.user.username = 'user@example'
Expand Down

0 comments on commit 8daabb4

Please sign in to comment.