diff --git a/tests/test_formdata.py b/tests/test_formdata.py index c141d68f8..c75a94368 100644 --- a/tests/test_formdata.py +++ b/tests/test_formdata.py @@ -935,24 +935,34 @@ def test_lazy_formdata_queryset_distance(pub, variable_test_data): def test_lazy_formdata_queryset_filter(pub, variable_test_data): + wf = Workflow.get_default_workflow() + wf.id = None + wf.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(wf) + wf.backoffice_fields_formdef.fields = [ + fields.StringField(id='bo1', label='1st backoffice field', + type='string', varname='backoffice_blah'), + ] + wf.store() + lazy_formdata = variable_test_data formdef = lazy_formdata._formdef + formdef.workflow = wf formdef.store() data_class = lazy_formdata._formdef.data_class() for i in range(6): formdata = data_class() - formdata.data = {'0': 'bar'} + formdata.data = {'0': 'bar', 'bo1': 'plop1'} formdata.just_created() formdata.store() for i in range(4): formdata = data_class() - formdata.data = {'0': 'foo'} + formdata.data = {'0': 'foo', 'bo1': 'plop2'} formdata.just_created() formdata.jump_status('finished') formdata.store() formdata = data_class() - formdata.data = {'0': 'bar'} + formdata.data = {'0': 'bar', 'bo1': 'plop1'} formdata.status = 'draft' formdata.store() @@ -969,6 +979,14 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data): queryset = lazy_formdata.objects.filter_by('foo_foo').apply_filter_value('X') assert queryset.count == 0 + # filter function on backoffice field + queryset = lazy_formdata.objects.filter_by('backoffice_blah').apply_filter_value('plop1') + assert queryset.count == 6 + queryset = lazy_formdata.objects.filter_by('backoffice_blah').apply_filter_value('plop2') + assert queryset.count == 4 + queryset = lazy_formdata.objects.filter_by('backoffice_blah').apply_filter_value('X') + assert queryset.count == 0 + # filter using attribute name queryset = lazy_formdata.objects.filter_by_foo_foo().apply_filter_value('bar') assert queryset.count == 7 diff --git a/wcs/variables.py b/wcs/variables.py index 256d5dac7..abc43a212 100644 --- a/wcs/variables.py +++ b/wcs/variables.py @@ -123,7 +123,7 @@ class LazyFormDefObjectsManager(object): def apply_filter_value(self, value): assert self.pending_attr - for field in self._formdef.fields: + for field in self._formdef.get_all_fields(): if getattr(field, 'varname', None) == self.pending_attr: from wcs import sql criteria = Equal(sql.get_field_id(field), value)