From 1e647690dd41cacb8a371f398afb3a968ac12ea6 Mon Sep 17 00:00:00 2001 From: Mikko Nieminen Date: Tue, 3 Sep 2024 11:58:30 +0200 Subject: [PATCH] add get_user_by_uuid() template tag, fix sync ui user settings (#1478) --- CHANGELOG.rst | 11 +++++++++-- .../projectroles/remoteproject_sync.html | 8 +++++--- .../templatetags/projectroles_common_tags.py | 15 +++++++-------- projectroles/tests/test_templatetags.py | 9 ++++++++- 4 files changed, 29 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index e3fdb165..cc8025e3 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -11,15 +11,23 @@ Unreleased Added ----- +- **Projectroles** + - ``get_user_by_uuid()`` common template tag (#1478) + +Changed +------- + - **Projectroles** - Truncate app setting values in ``remoteproject_sync.html`` (#1474) + - JSON app setting value rendering in ``remoteproject_sync.html`` (#1472) Fixed ----- - **Projectroles** - Incorrect app plugin link order in ``get_project_app_links()`` (#1468) - - Empty JSON value rendering in ``remoteproject_sync.html`` (#1472) + - Remote sync crash on updating user with additional email (#1476) + - User scope app setting display in ``remoteproject_sync.html`` (#1478) v1.0.1 (2024-08-08) @@ -44,7 +52,6 @@ Fixed - **Projectroles** - ``BatchUpdateRolesMixin`` removal breaking tests in other repos (#1464) - - Remote sync crash on updating user with additional email (#1476) - **Timeline** - Deprecated link dict ``blank`` field assumed as mandatory (#1462) diff --git a/projectroles/templates/projectroles/remoteproject_sync.html b/projectroles/templates/projectroles/remoteproject_sync.html index ad8e2388..059c510f 100644 --- a/projectroles/templates/projectroles/remoteproject_sync.html +++ b/projectroles/templates/projectroles/remoteproject_sync.html @@ -228,7 +228,7 @@

id="sodar-pr-remote-update-table-settings"> - {% get_display_name 'PROJECT' title=True %} + {% get_display_name 'PROJECT' title=True %}/User Name Plugin Value @@ -244,8 +244,10 @@

{% if p_obj %} {% get_project_link p_obj full_title=True as p_link %} {{ p_link | safe }} - {% else %} - {{ p.title }} + {% elif a.user_uuid %} + {% get_user_by_uuid a.user_uuid as u_obj %} + {% get_user_html u_obj as u_html %} + {{ u_html | safe }} {% endif %} {{ a.name }} diff --git a/projectroles/templatetags/projectroles_common_tags.py b/projectroles/templatetags/projectroles_common_tags.py index 96930c39..e1f5235a 100644 --- a/projectroles/templatetags/projectroles_common_tags.py +++ b/projectroles/templatetags/projectroles_common_tags.py @@ -57,19 +57,18 @@ def check_backend(name): @register.simple_tag def get_project_by_uuid(sodar_uuid): """Return Project by sodar_uuid""" - try: - return Project.objects.get(sodar_uuid=sodar_uuid) - except Project.DoesNotExist: - return None + return Project.objects.filter(sodar_uuid=sodar_uuid).first() + +@register.simple_tag +def get_user_by_uuid(sodar_uuid): + """Return SODARUser by sodar_uuid""" + return User.objects.filter(sodar_uuid=sodar_uuid).first() @register.simple_tag def get_user_by_username(username): """Return User by username""" - try: - return User.objects.get(username=username) - except User.DoesNotExist: - return None + return User.objects.filter(username=username).first() # Django helpers --------------------------------------------------------------- diff --git a/projectroles/tests/test_templatetags.py b/projectroles/tests/test_templatetags.py index e84668d7..cd3a814a 100644 --- a/projectroles/tests/test_templatetags.py +++ b/projectroles/tests/test_templatetags.py @@ -114,13 +114,20 @@ def test_check_backend(self): self.assertEqual(c_tags.check_backend('sodar_cache'), True) self.assertEqual(c_tags.check_backend('NON_EXISTING_PLUGIN'), False) - def test_get_projcet_by_uuid(self): + def test_get_project_by_uuid(self): """Test get_project_by_uuid()""" self.assertEqual( c_tags.get_project_by_uuid(self.project.sodar_uuid), self.project ) self.assertEqual(c_tags.get_project_by_uuid(NON_EXISTING_UUID), None) + def test_get_user_by_uuid(self): + """Test get_user_by_uuid()""" + self.assertEqual( + c_tags.get_user_by_uuid(self.user.sodar_uuid), self.user + ) + self.assertEqual(c_tags.get_user_by_uuid(NON_EXISTING_UUID), None) + def test_get_user_by_username(self): """Test get_user_by_username()""" self.assertEqual(