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):
|
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
|
lazy_formdata = variable_test_data
|
||||||
formdef = lazy_formdata._formdef
|
formdef = lazy_formdata._formdef
|
||||||
|
formdef.workflow = wf
|
||||||
formdef.store()
|
formdef.store()
|
||||||
data_class = lazy_formdata._formdef.data_class()
|
data_class = lazy_formdata._formdef.data_class()
|
||||||
for i in range(6):
|
for i in range(6):
|
||||||
formdata = data_class()
|
formdata = data_class()
|
||||||
formdata.data = {'0': 'bar'}
|
formdata.data = {'0': 'bar', 'bo1': 'plop1'}
|
||||||
formdata.just_created()
|
formdata.just_created()
|
||||||
formdata.store()
|
formdata.store()
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
formdata = data_class()
|
formdata = data_class()
|
||||||
formdata.data = {'0': 'foo'}
|
formdata.data = {'0': 'foo', 'bo1': 'plop2'}
|
||||||
formdata.just_created()
|
formdata.just_created()
|
||||||
formdata.jump_status('finished')
|
formdata.jump_status('finished')
|
||||||
formdata.store()
|
formdata.store()
|
||||||
|
|
||||||
formdata = data_class()
|
formdata = data_class()
|
||||||
formdata.data = {'0': 'bar'}
|
formdata.data = {'0': 'bar', 'bo1': 'plop1'}
|
||||||
formdata.status = 'draft'
|
formdata.status = 'draft'
|
||||||
formdata.store()
|
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')
|
queryset = lazy_formdata.objects.filter_by('foo_foo').apply_filter_value('X')
|
||||||
assert queryset.count == 0
|
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
|
# filter using attribute name
|
||||||
queryset = lazy_formdata.objects.filter_by_foo_foo().apply_filter_value('bar')
|
queryset = lazy_formdata.objects.filter_by_foo_foo().apply_filter_value('bar')
|
||||||
assert queryset.count == 7
|
assert queryset.count == 7
|
||||||
|
|
|
@ -123,7 +123,7 @@ class LazyFormDefObjectsManager(object):
|
||||||
|
|
||||||
def apply_filter_value(self, value):
|
def apply_filter_value(self, value):
|
||||||
assert self.pending_attr
|
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:
|
if getattr(field, 'varname', None) == self.pending_attr:
|
||||||
from wcs import sql
|
from wcs import sql
|
||||||
criteria = Equal(sql.get_field_id(field), value)
|
criteria = Equal(sql.get_field_id(field), value)
|
||||||
|
|
Loading…
Reference in New Issue