misc: |filter_value and integers (#50422)
This commit is contained in:
parent
568a419982
commit
9f80066e0e
|
@ -1062,12 +1062,12 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
data_class = lazy_formdata._formdef.data_class()
|
||||
for i in range(6):
|
||||
formdata = data_class()
|
||||
formdata.data = {'0': 'bar', 'bo1': 'plop1'}
|
||||
formdata.data = {'0': 'bar', '1': True, 'bo1': 'plop1', '10': '3'}
|
||||
formdata.just_created()
|
||||
formdata.store()
|
||||
for i in range(4):
|
||||
formdata = data_class()
|
||||
formdata.data = {'0': 'foo', '3': datetime.date(2018, 7, 31).timetuple(), 'bo1': 'plop2'}
|
||||
formdata.data = {'0': 'foo', '1': False, '3': datetime.date(2018, 7, 31).timetuple(), 'bo1': 'plop2', '10': '4'}
|
||||
formdata.just_created()
|
||||
formdata.jump_status('finished')
|
||||
formdata.store()
|
||||
|
@ -1113,6 +1113,24 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
logged_error = pub.loggederror_class.select()[1]
|
||||
assert logged_error.summary == 'Invalid value "not a date" for filter "datefield"'
|
||||
|
||||
queryset = lazy_formdata.objects.filter_by('boolfield').apply_filter_value(True)
|
||||
assert queryset.count == 6
|
||||
queryset = lazy_formdata.objects.filter_by('boolfield').apply_filter_value(1)
|
||||
assert queryset.count == 6
|
||||
queryset = lazy_formdata.objects.filter_by('boolfield').apply_filter_value('yes')
|
||||
assert queryset.count == 6
|
||||
queryset = lazy_formdata.objects.filter_by('boolfield').apply_filter_value(False)
|
||||
assert queryset.count == 5
|
||||
queryset = lazy_formdata.objects.filter_by('boolfield').apply_filter_value(0)
|
||||
assert queryset.count == 5
|
||||
|
||||
queryset = lazy_formdata.objects.filter_by('term1').apply_filter_value('3')
|
||||
assert queryset.count == 7
|
||||
queryset = lazy_formdata.objects.filter_by('term1').apply_filter_value(3)
|
||||
assert queryset.count == 7
|
||||
queryset = lazy_formdata.objects.filter_by('term1').apply_filter_value('foobar')
|
||||
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
|
||||
|
@ -1167,8 +1185,11 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
pub.substitutions.feed(formdata)
|
||||
tmpl = Template('{{form_objects|filter_by:"foo_foo"|filter_value:form_var_foo_foo|count}}')
|
||||
assert tmpl.render(context) == '7'
|
||||
|
||||
tmpl = Template('{{form.objects|filter_by:"foo_foo"|filter_value:form_var_foo_foo|count}}')
|
||||
tmpl = Template('{{form_objects|filter_by:"datefield"|filter_value:form_var_datefield|count}}')
|
||||
assert tmpl.render(context) == '5'
|
||||
tmpl = Template('{{form_objects|filter_by:"boolfield"|filter_value:form_var_boolfield|count}}')
|
||||
assert tmpl.render(context) == '5'
|
||||
tmpl = Template('{{form_objects|filter_by:"term1"|filter_value:form_var_term1|count}}')
|
||||
assert tmpl.render(context) == '7'
|
||||
|
||||
tmpl = Template('{{form.objects|exclude_self|filter_by:"foo_foo"|filter_value:form_var_foo_foo|count}}')
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
import warnings
|
||||
|
||||
from django.utils import six
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.functional import SimpleLazyObject
|
||||
|
||||
|
@ -26,7 +25,7 @@ from pyproj import Geod
|
|||
|
||||
from .qommon import misc, force_str, _
|
||||
from .qommon.evalutils import make_datetime
|
||||
from .qommon.templatetags.qommon import parse_date, parse_datetime
|
||||
from .qommon.templatetags.qommon import parse_datetime
|
||||
from .qommon.storage import (Or, Equal, NotEqual, Null)
|
||||
from .qommon.substitution import CompatibilityNamesDict
|
||||
|
||||
|
@ -170,11 +169,6 @@ class LazyFormDefObjectsManager(object):
|
|||
qs.pending_attr = attribute
|
||||
return qs
|
||||
|
||||
def format_value(self, field, value):
|
||||
if field.key != 'date':
|
||||
return value
|
||||
return parse_date(value).timetuple()
|
||||
|
||||
def get_field(self, key):
|
||||
for field in self._formdef.get_all_fields():
|
||||
if getattr(field, 'varname', None) == key:
|
||||
|
@ -189,7 +183,7 @@ class LazyFormDefObjectsManager(object):
|
|||
return self.none()
|
||||
|
||||
try:
|
||||
value = self.format_value(field, value)
|
||||
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()
|
||||
|
@ -286,7 +280,7 @@ class LazyList(object):
|
|||
field = self._lazy_manager.get_field(self._key)
|
||||
if field is not None:
|
||||
try:
|
||||
value = self._lazy_manager.format_value(field, value)
|
||||
value = field.convert_value_from_anything(value)
|
||||
except (ValueError, AttributeError):
|
||||
pass
|
||||
return value in list(self)
|
||||
|
|
Loading…
Reference in New Issue