Projet

Général

Profil

0001-general-add-queryset-filter-on-form_number-52763.patch

Frédéric Péters, 13 avril 2021 08:24

Télécharger (2,7 ko)

Voir les différences:

Subject: [PATCH] general: add queryset filter on form_number (#52763)

(and fallbacks so |filter_by can be used with specialized filters)
 tests/test_formdata.py            | 9 +++++++++
 wcs/qommon/templatetags/qommon.py | 5 +++++
 wcs/variables.py                  | 3 +++
 3 files changed, 17 insertions(+)
tests/test_formdata.py
1126 1126
        formdata.jump_status('finished')
1127 1127
        formdata.store()
1128 1128

  
1129
    finished_formdata = formdata
1130

  
1129 1131
    formdata = data_class()
1130 1132
    formdata.data = {'0': 'bar', 'bo1': 'plop1'}
1131 1133
    formdata.status = 'draft'
......
1317 1319
    assert LazyFormData(formdata).objects.pending().count == 7
1318 1320
    assert LazyFormData(formdata).objects.pending().filter_by('foo_foo').apply_filter_value('foo').count == 0
1319 1321

  
1322
    # test |filter_by_form_number
1323
    context = pub.substitutions.get_context_variables(mode='lazy')
1324
    tmpl = Template('{{form_objects|filter_by_form_number:"%s"|count}}' % finished_formdata.get_display_id())
1325
    assert tmpl.render(context) == '1'
1326
    tmpl = Template('{{form_objects|filter_by_form_number:"%s"|count}}' % 'invalid value')
1327
    assert tmpl.render(context) == '0'
1328

  
1320 1329
    # test |is_empty
1321 1330
    tmpl = Template('{{form_objects|pending|is_empty}}')
1322 1331
    assert tmpl.render(context) == 'False'
wcs/qommon/templatetags/qommon.py
639 639
    return queryset.filter_by_status(status)
640 640

  
641 641

  
642
@register.filter
643
def filter_by_form_number(queryset, form_number):
644
    return queryset.filter_by_form_number(form_number)
645

  
646

  
642 647
@register.filter
643 648
def pending(queryset):
644 649
    return queryset.pending()
wcs/variables.py
167 167
        qs.pending_attr = attribute
168 168
        return qs
169 169

  
170
    def filter_by_form_number(self, value):
171
        return self._clone(self._criterias + [Equal('id_display', str(value))])
172

  
170 173
    def get_field(self, key):
171 174
        for field in self._formdef.get_all_fields():
172 175
            if getattr(field, 'varname', None) == key:
173
-