forked from CGM_Public/pretix_original
Fix #37 -- Clever displaying of date ranges
This commit is contained in:
@@ -17,6 +17,7 @@ from pretix.base.i18n import I18nCharField
|
|||||||
from pretix.base.models.base import LoggedModel
|
from pretix.base.models.base import LoggedModel
|
||||||
from pretix.base.settings import SettingsProxy
|
from pretix.base.settings import SettingsProxy
|
||||||
from pretix.base.validators import EventSlugBlacklistValidator
|
from pretix.base.validators import EventSlugBlacklistValidator
|
||||||
|
from pretix.helpers.daterange import daterange
|
||||||
|
|
||||||
from .auth import User
|
from .auth import User
|
||||||
from .organizer import Organizer
|
from .organizer import Organizer
|
||||||
@@ -153,6 +154,12 @@ class Event(LoggedModel):
|
|||||||
"DATETIME_FORMAT" if self.settings.show_times else "DATE_FORMAT"
|
"DATETIME_FORMAT" if self.settings.show_times else "DATE_FORMAT"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def get_date_range_display(self, tz=None) -> str:
|
||||||
|
tz = tz or pytz.timezone(self.settings.timezone)
|
||||||
|
if not self.settings.show_date_to or not self.date_to:
|
||||||
|
return _date(self.date_from.astimezone(tz), "DATE_FORMAT")
|
||||||
|
return daterange(self.date_from.astimezone(tz), self.date_to.astimezone(tz))
|
||||||
|
|
||||||
def get_cache(self) -> "pretix.base.cache.ObjectRelatedCache":
|
def get_cache(self) -> "pretix.base.cache.ObjectRelatedCache":
|
||||||
"""
|
"""
|
||||||
Returns an :py:class:`ObjectRelatedCache` object. This behaves equivalent to
|
Returns an :py:class:`ObjectRelatedCache` object. This behaves equivalent to
|
||||||
|
|||||||
21
src/pretix/helpers/daterange.py
Normal file
21
src/pretix/helpers/daterange.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
from django.template.defaultfilters import date as _date
|
||||||
|
from django.utils.translation import get_language, ugettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
def daterange(df, dt):
|
||||||
|
lng = get_language()
|
||||||
|
|
||||||
|
if lng.startswith("de"):
|
||||||
|
if df.year == dt.year and df.month == dt.month:
|
||||||
|
return "{}.–{}".format(_date(df, "j"), _date(dt, "j. F Y"))
|
||||||
|
elif df.year == dt.year:
|
||||||
|
return "{} – {}".format(_date(df, "j. F"), _date(dt, "j. F Y"))
|
||||||
|
elif lng.startswith("en"):
|
||||||
|
if df.year == dt.year and df.month == dt.month:
|
||||||
|
return "{} – {}".format(_date(df, "N jS"), _date(dt, "jS, Y"))
|
||||||
|
elif df.year == dt.year:
|
||||||
|
return "{} – {}".format(_date(df, "N jS"), _date(dt, "N jS, Y"))
|
||||||
|
|
||||||
|
return _("{date_from} – {date_to}").format(
|
||||||
|
date_from=_date(df, "DATE_FORMAT"), date_to=_date(dt, "DATE_FORMAT")
|
||||||
|
)
|
||||||
@@ -29,8 +29,7 @@
|
|||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{% eventurl event "presale:event.index" %}">{{ event.name }}</a>
|
<a href="{% eventurl event "presale:event.index" %}">{{ event.name }}</a>
|
||||||
<small>{{ event.date_from|date:"DATE_FORMAT" }}{% if event.settings.show_date_to %} –
|
<small>{{ event.get_date_range_display }}</small>
|
||||||
{{ event.date_to|date:"DATE_FORMAT" }}{% endif %}</small>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</h1>
|
</h1>
|
||||||
<div class="pull-right loginbox">
|
<div class="pull-right loginbox">
|
||||||
|
|||||||
Reference in New Issue
Block a user