From fb1728f26b2b2a3e70fff6f0731fc1f57aaa0e88 Mon Sep 17 00:00:00 2001 From: wlorenzetti Date: Tue, 9 Apr 2024 10:36:18 +0200 Subject: [PATCH 1/3] Ordering by `fformatter` field. --- g3w-admin/core/api/base/views.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/g3w-admin/core/api/base/views.py b/g3w-admin/core/api/base/views.py index 62ebf9623..6fa45b44a 100644 --- a/g3w-admin/core/api/base/views.py +++ b/g3w-admin/core/api/base/views.py @@ -547,6 +547,10 @@ def response_data_mode(self, request, export_features=False): if 'ffield' in self.request_data: req.GET['field'] = self.request_data.get('ffield') + # Add 'ordering' + if 'ordering' in self.request_data: + req.GET['ordering'] = self.request_data.get('ordering') + view = LayerVectorView.as_view() res = view(req, *[], **kwargs).render() uniques = json.loads(res.content)['data'] @@ -586,7 +590,13 @@ def response_data_mode(self, request, export_features=False): continue # sort values - values.sort() + if ('fformatter' in self.request_data + and 'ordering' in self.request_data + and self.request_data['fformatter'] in self.request_data['ordering']): + reverse = True if self.request_data['ordering'].startswith('-') else False + values.sort(reverse=reverse, key=lambda e: e[1]) + else: + values.sort() self.results.update({ 'data': values, 'count': len(values) From a20972a069809442ab90d70e66ca611993529ae7 Mon Sep 17 00:00:00 2001 From: wlorenzetti Date: Tue, 9 Apr 2024 11:06:42 +0200 Subject: [PATCH 2/3] Fix overwrite of `reverse`. --- g3w-admin/core/api/base/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/g3w-admin/core/api/base/views.py b/g3w-admin/core/api/base/views.py index 6fa45b44a..9be14ca13 100644 --- a/g3w-admin/core/api/base/views.py +++ b/g3w-admin/core/api/base/views.py @@ -593,8 +593,8 @@ def response_data_mode(self, request, export_features=False): if ('fformatter' in self.request_data and 'ordering' in self.request_data and self.request_data['fformatter'] in self.request_data['ordering']): - reverse = True if self.request_data['ordering'].startswith('-') else False - values.sort(reverse=reverse, key=lambda e: e[1]) + rev = True if self.request_data['ordering'].startswith('-') else False + values.sort(reverse=rev, key=lambda e: e[1]) else: values.sort() self.results.update({ From 0c9aca08eaf0f2d974781dcf0c4564ac249fee09 Mon Sep 17 00:00:00 2001 From: wlorenzetti Date: Tue, 9 Apr 2024 12:14:31 +0200 Subject: [PATCH 3/3] Fix or None value. --- g3w-admin/core/api/base/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/g3w-admin/core/api/base/views.py b/g3w-admin/core/api/base/views.py index 9be14ca13..bd6b62386 100644 --- a/g3w-admin/core/api/base/views.py +++ b/g3w-admin/core/api/base/views.py @@ -594,7 +594,7 @@ def response_data_mode(self, request, export_features=False): and 'ordering' in self.request_data and self.request_data['fformatter'] in self.request_data['ordering']): rev = True if self.request_data['ordering'].startswith('-') else False - values.sort(reverse=rev, key=lambda e: e[1]) + values.sort(reverse=rev, key=lambda e: (e[1] is None, e[1])) else: values.sort() self.results.update({