From 76111885352a4c0ccd0988ee5184f5c5fd089cec Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 16 Apr 2018 17:19:17 +0200 Subject: [PATCH] Localize date-based subevent search --- src/pretix/control/views/typeahead.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/pretix/control/views/typeahead.py b/src/pretix/control/views/typeahead.py index 7048c05fa6..078dd701eb 100644 --- a/src/pretix/control/views/typeahead.py +++ b/src/pretix/control/views/typeahead.py @@ -7,6 +7,7 @@ from django.db.models import Max, Min, Q from django.db.models.functions import Coalesce, Greatest from django.http import JsonResponse from django.urls import reverse +from django.utils.formats import get_format from django.utils.timezone import make_aware from django.utils.translation import pgettext, ugettext as _ @@ -84,15 +85,18 @@ def subevent_select2(request, **kwargs): qf = Q(name__icontains=i18ncomp(query)) | Q(location__icontains=query) tz = request.event.timezone - try: - dt = parse(query) - except ValueError: - pass - else: - if dt: - dt_start = make_aware(datetime.combine(dt.date(), time(hour=0, minute=0, second=0)), tz) - dt_end = make_aware(datetime.combine(dt.date(), time(hour=23, minute=59, second=59)), tz) - qf |= Q(date_from__gte=dt_start) & Q(date_from__lte=dt_end) + dt = None + for f in get_format('DATE_INPUT_FORMATS'): + try: + dt = datetime.strptime(query, f) + break + except (ValueError, TypeError): + continue + + if dt: + dt_start = make_aware(datetime.combine(dt.date(), time(hour=0, minute=0, second=0)), tz) + dt_end = make_aware(datetime.combine(dt.date(), time(hour=23, minute=59, second=59)), tz) + qf |= Q(date_from__gte=dt_start) & Q(date_from__lte=dt_end) qs = request.event.subevents.filter( qf