mirror of
https://github.com/pretix/pretix.git
synced 2025-12-20 16:32:26 +00:00
Compare commits
4 Commits
widget-dia
...
fix-eventl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2cb7160ed7 | ||
|
|
7575a6f0d1 | ||
|
|
4c6bd30437 | ||
|
|
6bd34c79ee |
@@ -42,7 +42,7 @@ from django.db.models.functions import Coalesce, Greatest
|
|||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.formats import date_format, get_format
|
from django.utils.formats import date_format
|
||||||
from django.utils.timezone import make_aware
|
from django.utils.timezone import make_aware
|
||||||
from django.utils.translation import gettext as _, pgettext
|
from django.utils.translation import gettext as _, pgettext
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ from pretix.control.permissions import (
|
|||||||
event_permission_required, organizer_permission_required,
|
event_permission_required, organizer_permission_required,
|
||||||
)
|
)
|
||||||
from pretix.helpers.daterange import daterange
|
from pretix.helpers.daterange import daterange
|
||||||
from pretix.helpers.i18n import i18ncomp
|
from pretix.helpers.i18n import i18ncomp, parse_date_localized
|
||||||
|
|
||||||
|
|
||||||
def serialize_user(u):
|
def serialize_user(u):
|
||||||
@@ -408,13 +408,7 @@ def subevent_select2(request, **kwargs):
|
|||||||
qf = Q(name__icontains=i18ncomp(query)) | Q(location__icontains=query)
|
qf = Q(name__icontains=i18ncomp(query)) | Q(location__icontains=query)
|
||||||
tz = request.event.timezone
|
tz = request.event.timezone
|
||||||
|
|
||||||
dt = None
|
dt = parse_date_localized(query)
|
||||||
for f in get_format('DATE_INPUT_FORMATS'):
|
|
||||||
try:
|
|
||||||
dt = datetime.strptime(query, f)
|
|
||||||
break
|
|
||||||
except (ValueError, TypeError):
|
|
||||||
continue
|
|
||||||
|
|
||||||
if dt:
|
if dt:
|
||||||
dt_start = make_aware(datetime.combine(dt.date(), time(hour=0, minute=0, second=0)), tz)
|
dt_start = make_aware(datetime.combine(dt.date(), time(hour=0, minute=0, second=0)), tz)
|
||||||
@@ -458,13 +452,7 @@ def quotas_select2(request, **kwargs):
|
|||||||
qf = Q(name__icontains=query) | Q(subevent__name__icontains=i18ncomp(query))
|
qf = Q(name__icontains=query) | Q(subevent__name__icontains=i18ncomp(query))
|
||||||
tz = request.event.timezone
|
tz = request.event.timezone
|
||||||
|
|
||||||
dt = None
|
dt = parse_date_localized(query)
|
||||||
for f in get_format('DATE_INPUT_FORMATS'):
|
|
||||||
try:
|
|
||||||
dt = datetime.strptime(query, f)
|
|
||||||
break
|
|
||||||
except (ValueError, TypeError):
|
|
||||||
continue
|
|
||||||
|
|
||||||
if dt and request.event.has_subevents:
|
if dt and request.event.has_subevents:
|
||||||
dt_start = make_aware(datetime.combine(dt.date(), time(hour=0, minute=0, second=0)), tz)
|
dt_start = make_aware(datetime.combine(dt.date(), time(hour=0, minute=0, second=0)), tz)
|
||||||
|
|||||||
@@ -23,7 +23,9 @@ import gettext as gettext_module
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
from datetime import datetime
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@@ -222,3 +224,15 @@ def get_language_score(locale):
|
|||||||
else:
|
else:
|
||||||
score = len(list(catalog.items())) or 1
|
score = len(list(catalog.items())) or 1
|
||||||
return score
|
return score
|
||||||
|
|
||||||
|
|
||||||
|
def parse_date_localized(date_str) -> Optional[datetime]:
|
||||||
|
"""Parses a date according to the localized date input formats. Returns None if invalid."""
|
||||||
|
dt = None
|
||||||
|
for f in get_format('DATE_INPUT_FORMATS'):
|
||||||
|
try:
|
||||||
|
dt = datetime.strptime(date_str, f)
|
||||||
|
break
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
continue
|
||||||
|
return dt
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ from pretix.helpers.formats.en.formats import (
|
|||||||
SHORT_MONTH_DAY_FORMAT, WEEK_FORMAT,
|
SHORT_MONTH_DAY_FORMAT, WEEK_FORMAT,
|
||||||
)
|
)
|
||||||
from pretix.helpers.http import redirect_to_url
|
from pretix.helpers.http import redirect_to_url
|
||||||
|
from pretix.helpers.i18n import parse_date_localized
|
||||||
from pretix.helpers.thumb import get_thumbnail
|
from pretix.helpers.thumb import get_thumbnail
|
||||||
from pretix.multidomain.urlreverse import build_absolute_uri, eventreverse
|
from pretix.multidomain.urlreverse import build_absolute_uri, eventreverse
|
||||||
from pretix.presale.forms.organizer import EventListFilterForm
|
from pretix.presale.forms.organizer import EventListFilterForm
|
||||||
@@ -927,10 +928,7 @@ class DayCalendarView(OrganizerViewMixin, EventListMixin, TemplateView):
|
|||||||
def _set_date(self):
|
def _set_date(self):
|
||||||
if 'date' in self.request.GET:
|
if 'date' in self.request.GET:
|
||||||
self.tz = self.request.organizer.timezone
|
self.tz = self.request.organizer.timezone
|
||||||
try:
|
self.date = parse_date_localized(self.request.GET.get('date')).date() or now().astimezone(self.tz).date()
|
||||||
self.date = dateutil.parser.parse(self.request.GET.get('date')).date()
|
|
||||||
except ValueError:
|
|
||||||
self.date = now().astimezone(self.tz).date()
|
|
||||||
else:
|
else:
|
||||||
self._set_date_to_next_event()
|
self._set_date_to_next_event()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user