misc: check converting any value is possible before trying it in filter (#51117)
This commit is contained in:
parent
2f012a4ae7
commit
7114f4ab8f
|
@ -610,6 +610,7 @@ def variable_test_data(pub):
|
|||
fields.StringField(id='11', label='number2', varname='term2'),
|
||||
fields.StringField(id='12', label='float1', varname='value'),
|
||||
fields.PasswordField(id='13', label='pwd', varname='pwd'),
|
||||
fields.EmailField(id='14', label='email', varname='email'),
|
||||
]
|
||||
formdef.workflow_roles = {'_receiver': role.id}
|
||||
formdef.geolocations = {'base': 'Base'}
|
||||
|
@ -638,6 +639,7 @@ def variable_test_data(pub):
|
|||
'md5': '0cc175b9c0f1b6a831c399e269772661',
|
||||
'sha1': '86f7e437faa5a7fce15d1ddcb9eaeaea377667b8',
|
||||
},
|
||||
'14': 'test@localhost',
|
||||
}
|
||||
formdata.data['5'].receive([b'hello world'])
|
||||
formdata.geolocations = {'base': {'lat': 1, 'lon': 2}}
|
||||
|
@ -1170,6 +1172,11 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
queryset = lazy_formdata.objects.filter_by('term1').apply_filter_value('foobar')
|
||||
assert queryset.count == 0
|
||||
|
||||
queryset = lazy_formdata.objects.filter_by('email').apply_filter_value('bar')
|
||||
assert queryset.count == 0
|
||||
queryset = lazy_formdata.objects.filter_by('email').apply_filter_value('test@localhost')
|
||||
assert queryset.count == 1
|
||||
|
||||
# filter function on backoffice field
|
||||
queryset = lazy_formdata.objects.filter_by('backoffice_blah').apply_filter_value('plop1')
|
||||
assert queryset.count == 6
|
||||
|
|
|
@ -185,13 +185,15 @@ class LazyFormDefObjectsManager(object):
|
|||
)
|
||||
return self.none()
|
||||
|
||||
try:
|
||||
value = field.convert_value_from_anything(value)
|
||||
except (ValueError, AttributeError):
|
||||
get_publisher().record_error(
|
||||
_('Invalid value "%s" for filter "%s"') % (value, self.pending_attr), formdata=self._formdata
|
||||
)
|
||||
return self.none()
|
||||
if field.convert_value_from_anything:
|
||||
try:
|
||||
value = field.convert_value_from_anything(value)
|
||||
except (ValueError, AttributeError):
|
||||
get_publisher().record_error(
|
||||
_('Invalid value "%s" for filter "%s"') % (value, self.pending_attr),
|
||||
formdata=self._formdata,
|
||||
)
|
||||
return self.none()
|
||||
|
||||
from wcs import sql
|
||||
|
||||
|
|
Loading…
Reference in New Issue