formdata: add |filter_by_internal_id filter (#59303)
gitea-wip/wcs/pipeline/head Build started...
Details
gitea-wip/wcs/pipeline/head Build started...
Details
This commit is contained in:
parent
16710ab21e
commit
4991be8979
|
@ -1474,6 +1474,19 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
tmpl = Template('{{form_objects|done|count}}')
|
||||
assert tmpl.render(context) == '4'
|
||||
|
||||
# test |filter_by_internal_id
|
||||
context = pub.substitutions.get_context_variables(mode='lazy')
|
||||
tmpl = Template('{{form_objects|filter_by_internal_id:"%s"|count}}' % finished_formdata.id)
|
||||
assert tmpl.render(context) == '1'
|
||||
tmpl = Template('{{form_objects|filter_by_internal_id:"%s"|count}}' % '0')
|
||||
assert tmpl.render(context) == '0'
|
||||
tmpl = Template('{{form_objects|filter_by_internal_id:"%s"|count}}' % 'invalid value')
|
||||
assert tmpl.render(context) == '0'
|
||||
if pub.is_using_postgresql():
|
||||
assert pub.loggederror_class.count() == 4
|
||||
logged_error = pub.loggederror_class.select()[3]
|
||||
assert logged_error.summary == 'Invalid value "invalid value" for "filter_by_internal_id"'
|
||||
|
||||
# test |filter_by_number
|
||||
context = pub.substitutions.get_context_variables(mode='lazy')
|
||||
tmpl = Template('{{form_objects|filter_by_number:"%s"|count}}' % finished_formdata.get_display_id())
|
||||
|
|
|
@ -675,6 +675,11 @@ def filter_by_status(queryset, status):
|
|||
return queryset.filter_by_status(status)
|
||||
|
||||
|
||||
@register.filter
|
||||
def filter_by_internal_id(queryset, form_internal_id):
|
||||
return queryset.filter_by_internal_id(unlazy(form_internal_id))
|
||||
|
||||
|
||||
@register.filter
|
||||
def filter_by_number(queryset, form_number):
|
||||
return queryset.filter_by_number(form_number)
|
||||
|
|
|
@ -172,6 +172,17 @@ class LazyFormDefObjectsManager:
|
|||
qs.pending_attr = attribute
|
||||
return qs
|
||||
|
||||
def filter_by_internal_id(self, value):
|
||||
try:
|
||||
int(value)
|
||||
except ValueError:
|
||||
get_publisher().record_error(
|
||||
_('Invalid value "%s" for "filter_by_internal_id"') % (value),
|
||||
formdata=self._formdata,
|
||||
)
|
||||
return self.none()
|
||||
return self._clone(self._criterias + [Equal('id', str(value))])
|
||||
|
||||
def filter_by_number(self, value):
|
||||
return self._clone(self._criterias + [Equal('id_display', str(value))])
|
||||
|
||||
|
|
Loading…
Reference in New Issue