Skip to content

Commit fe448cc

Browse files
committed
FIX : Limit & Sort with Filter
1 parent b7e8464 commit fe448cc

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

lizmap_server/expression_service.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -868,30 +868,6 @@ def virtualFields(params: Dict[str, str], response: QgsServerResponse, project:
868868

869869
req = QgsFeatureRequest()
870870

871-
# set limit
872-
req_limit = params.get('LIMIT', '-1')
873-
try:
874-
req.setLimit(int(req_limit))
875-
except ValueError:
876-
raise ExpressionServiceError(
877-
"Bad request error",
878-
f"Invalid LIMIT for 'VirtualFields': \"{req_limit}\"",
879-
400)
880-
881-
# set orderby
882-
req_sorting_order_param = params.get('SORTING_ORDER', '')
883-
884-
if req_sorting_order_param in ('asc', 'desc'):
885-
# QGIS expects a boolean to know how to sort
886-
req_sorting_field = params.get('SORTING_FIELD', '')
887-
order_by_clause = QgsFeatureRequest.OrderByClause(req_sorting_field, req_sorting_order_param == 'asc')
888-
req.setOrderBy(QgsFeatureRequest.OrderBy([order_by_clause]))
889-
elif req_sorting_order_param != '' :
890-
raise ExpressionServiceError(
891-
"Bad request error",
892-
f"Invalid SORTING_ORDER for 'VirtualFields': \"{req_sorting_order_param}\"",
893-
400)
894-
895871
# get filter
896872
req_filter = params.get('FILTER', '')
897873
if req_filter:
@@ -916,6 +892,30 @@ def virtualFields(params: Dict[str, str], response: QgsServerResponse, project:
916892
req_exp.prepare(exp_context)
917893
req = QgsFeatureRequest(req_exp, exp_context)
918894

895+
# set limit
896+
req_limit = params.get('LIMIT', '-1')
897+
try:
898+
req.setLimit(int(req_limit))
899+
except ValueError:
900+
raise ExpressionServiceError(
901+
"Bad request error",
902+
f"Invalid LIMIT for 'VirtualFields': \"{req_limit}\"",
903+
400)
904+
905+
# set orderby
906+
req_sorting_order_param = params.get('SORTING_ORDER', '')
907+
908+
if req_sorting_order_param in ('asc', 'desc'):
909+
# QGIS expects a boolean to know how to sort
910+
req_sorting_field = params.get('SORTING_FIELD', '')
911+
order_by_clause = QgsFeatureRequest.OrderByClause(req_sorting_field, req_sorting_order_param == 'asc')
912+
req.setOrderBy(QgsFeatureRequest.OrderBy([order_by_clause]))
913+
elif req_sorting_order_param != '' :
914+
raise ExpressionServiceError(
915+
"Bad request error",
916+
f"Invalid SORTING_ORDER for 'VirtualFields': \"{req_sorting_order_param}\"",
917+
400)
918+
919919
# With geometry
920920
with_geom = to_bool(params.get('WITH_GEOMETRY'))
921921
if not with_geom:

0 commit comments

Comments
 (0)