From f8140e0856d61edef2b60854a00b734c9eda67f5 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 29 Jan 2014 23:38:21 +0100 Subject: [PATCH] =?UTF-8?q?rep=C3=A8re=20les=20num=C3=A9ros=20de=20demande?= =?UTF-8?q?=20et=20les=20num=C3=A9ros=20d'engagement=20provisionnel=20dans?= =?UTF-8?q?=20le=20champ=20de=20recherche=20libre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes #4018 --- polynum/base/models/request.py | 3 +++ polynum/request/views.py | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/polynum/base/models/request.py b/polynum/base/models/request.py index 3cdb2cb..0c8dcce 100644 --- a/polynum/base/models/request.py +++ b/polynum/base/models/request.py @@ -176,6 +176,9 @@ class Request(models.Model): u"soumise(s) au droit d'auteur")), ) + NUMBER_RE = re.compile(r'(\d\d\d\d)-(\d+)-(\d+)') + FINANCIAL_CODE_RE = re.compile(r'\d{6,}') + class Meta: app_label = 'base' verbose_name = _(u'Demande de reprographie'); diff --git a/polynum/request/views.py b/polynum/request/views.py index 2d4c71d..476e735 100644 --- a/polynum/request/views.py +++ b/polynum/request/views.py @@ -456,9 +456,9 @@ class ListRequest(ListView): self.qs(**{'search': None})])) def apply_filter_search(sefl, qs, value): - return qs.filter(Q(uploadfile__contains=value) - | Q(name__contains=value) - | Q(user__username__contains=value)) + q = Q(uploadfile__contains=value) | Q(name__contains=value) \ + | Q(user__username__contains=value) + return qs.filter(q) def handle_entity_filter(self, min_depth=app_settings.MIN_ENTITY_FILTER_DEPTH, @@ -619,6 +619,18 @@ class ListRequest(ListView): def apply_filter_free_text(self, qs, value): for elt in value.split(): + m = Request.NUMBER_RE.match(elt) + if m: + year, month, month_order = m.groups() + qs = qs.filter(creation_date__year=int(year), + creation_date__month=int(month), + month_order=int(month_order)) + continue + m = Request.FINANCIAL_CODE_RE.match(elt) + if m: + financial_code = m.group() + qs = qs.filter(financial_code=financial_code) + continue qs = qs.filter(Q(entity__description__icontains=elt) |Q(entity__description_override__icontains=elt) |Q(entity__code__icontains=elt)