From 03f27bb6daad3a94e725b6dbf5abae9376338341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 30 Apr 2015 15:02:33 +0200 Subject: [PATCH] api: allow named parameters as filters for formdata listing (#7115) --- wcs/backoffice/root.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/wcs/backoffice/root.py b/wcs/backoffice/root.py index 5736869..7932cf2 100644 --- a/wcs/backoffice/root.py +++ b/wcs/backoffice/root.py @@ -631,6 +631,7 @@ class FakeField(object): self.type = type_ self.label = label self.fake = True + self.varname = None def get_view_value(self, value): # just here to quack like a duck @@ -882,11 +883,23 @@ class FormPage(Directory): if filter_field.type not in ('item', 'period-date'): continue - if not get_request().form.get('filter-%s' % filter_field.id): - # the field is not enabled + filter_field_key = None + + if filter_field.varname: + # if this is a field with a varname and filter-%(varname)s is + # present in the query string, enable this filter. + if get_request().form.get('filter-%s' % filter_field.varname): + filter_field_key = 'filter-%s' % filter_field.varname + + if get_request().form.get('filter-%s' % filter_field.id): + # if there's a filter-%(id)s, it is used to enable the actual + # filter, and the value will be found in filter-%s-value. + filter_field_key = 'filter-%s-value' % filter_field.id + + if not filter_field_key: + # if there's not known filter key, skip. continue - filter_field_key = 'filter-%s-value' % filter_field.id filter_field_value = get_request().form.get(filter_field_key) if not filter_field_value: continue -- 2.1.4