repère les numéros de demande et les numéros d'engagement provisionnel dans le champ de recherche libre

fixes #4018
This commit is contained in:
Benjamin Dauvergne 2014-01-29 23:38:21 +01:00
parent 3395059936
commit f8140e0856
2 changed files with 18 additions and 3 deletions

View File

@ -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');

View File

@ -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)