misc: add backoffice fields support to |filter_by (#46173)
This commit is contained in:
parent
ab485f0f3e
commit
ce23766bc9
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue