From 9775773726e27fd03a64c9d856e919ccca3f018f Mon Sep 17 00:00:00 2001 From: Walter Lorenzetti Date: Mon, 4 Mar 2024 10:44:04 +0100 Subject: [PATCH] Add `macrogroup_id` to group serializer. (#761) * Add `macrogroup_id` to group serializer. * :bug: Client https://github.com/g3w-suite/g3w-client/pull/579 * :sparkles: Client https://github.com/g3w-suite/g3w-client/pull/579 * :sparkles: Client https://github.com/g3w-suite/g3w-client/commit/ebb57cdffbf6f92b6c6acb75be269919383d7d57 * Typo: fix 'nomacrogroup' filter. * Typo. * Fix testing. * :bug: Client https://github.com/g3w-suite/g3w-client/pull/590 --------- Co-authored-by: wlorenzetti Co-authored-by: volterra79 Co-authored-by: Raruto (cherry picked from commit ee5486e1fc1fe01a6c1d926de86f911df23d95c9) --- g3w-admin/about/api/filters.py | 14 +++++++++----- g3w-admin/about/tests/test_api.py | 13 +++++++++---- g3w-admin/core/api/serializers.py | 3 +++ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/g3w-admin/about/api/filters.py b/g3w-admin/about/api/filters.py index 072ed24f3..9864677ad 100644 --- a/g3w-admin/about/api/filters.py +++ b/g3w-admin/about/api/filters.py @@ -34,7 +34,7 @@ def filter_queryset(self, request, queryset, view): class UserProjectFilter(BaseFilterBackend): - """A filter backend for portal module for qdjango project""" + """A filter backend for about module for qdjango project""" def filter_queryset(self, request, queryset, view): """ @@ -47,20 +47,24 @@ def filter_queryset(self, request, queryset, view): class GroupProjectFilter(BaseFilterBackend): - """A filter backend for portal module for qdjango project , filter by group""" + """A filter backend for about module for qdjango project , filter by group""" def filter_queryset(self, request, queryset, view): """ Return a filtered queryset by group_id """ + if 'group_id' in view.kwargs: queryset = queryset.filter(group_id=view.kwargs['group_id']).order_by('order') + if resolve(request.path_info).url_name == 'about-group-without-macrogroup-api-list': + queryset = queryset.filter(macrogroups__pk=None) + return queryset class MacroGroupGroupFilter(BaseFilterBackend): - """A filter backend for portal module for group, filter by macrogroup""" + """A filter backend for about module for group, filter by macrogroup""" def filter_queryset(self, request, queryset, view): """ @@ -70,14 +74,14 @@ def filter_queryset(self, request, queryset, view): queryset = queryset.filter(macrogroups__pk=view.kwargs['macrogroup_id']) # check for group without macrogroup - if resolve(request.path_info).url_name == 'portal-group-without-macrogroup-api-list': + if resolve(request.path_info).url_name == 'about-group-without-macrogroup-api-list': queryset = queryset.filter(macrogroups__pk=None) return queryset class PanoramicProjectFilter(BaseFilterBackend): - """A filter backend for portal module for qdjango project , filter by not panoramic""" + """A filter backend for about module for qdjango project , filter by not panoramic""" def filter_queryset(self, request, queryset, view): diff --git a/g3w-admin/about/tests/test_api.py b/g3w-admin/about/tests/test_api.py index 68c6c36d9..38792d017 100644 --- a/g3w-admin/about/tests/test_api.py +++ b/g3w-admin/about/tests/test_api.py @@ -92,6 +92,11 @@ def setUpTestData(cls): cls.project_group2.save() + cls.project_group3 = CoreGroup(name='Group3', title='Group3', header_logo_img='', + srid=G3WSpatialRefSys.objects.get(auth_srid=3857)) + + cls.project_group3.save() + # create macrogroups cls.macrogroup = MacroGroup(title='Macrogroup1', logo_img='macrogroup.png') cls.macrogroup.save() @@ -173,7 +178,7 @@ def test_group(self): response = client.get(url) self.assertEqual(response.status_code, 200) jcontent = json.loads(response.content) - self.assertEqual(len(jcontent), 2) + self.assertEqual(len(jcontent), 3) feature = jcontent[0] self.assertIn('edit_url', feature) group = CoreGroup.objects.filter(pk=feature['id'])[0] @@ -318,7 +323,7 @@ def test_macrogroup(self): response = client.get(url) self.assertEqual(response.status_code, 200) jcontent = json.loads(response.content) - self.assertEqual(len(jcontent), 2) + self.assertEqual(len(jcontent), 1) # ad new group without macrogroup new_group = CoreGroup(name='Group33', title='Group33', header_logo_img='', @@ -328,8 +333,8 @@ def test_macrogroup(self): response = client.get(url) self.assertEqual(response.status_code, 200) jcontent = json.loads(response.content) - self.assertEqual(len(jcontent), 3) - self.assertEqual(jcontent[2]['name'], 'Group33') + self.assertEqual(len(jcontent), 2) + self.assertEqual(jcontent[1]['name'], 'Group33') client.logout() diff --git a/g3w-admin/core/api/serializers.py b/g3w-admin/core/api/serializers.py index 8c6e91f08..d088d93ed 100644 --- a/g3w-admin/core/api/serializers.py +++ b/g3w-admin/core/api/serializers.py @@ -273,6 +273,9 @@ def to_representation(self, instance): mapcontrol.name: options }) + # Macrogroups + ret['macrogroup_id'] = [macrogroup.id for macrogroup in instance.macrogroups.all()] + return ret class Meta: