Fix #37 -- Clever displaying of date ranges

This commit is contained in:
Raphael Michel
2016-12-25 22:51:19 +01:00
parent a4218fa1b9
commit f4672564ce
3 changed files with 29 additions and 2 deletions

View File

@@ -17,6 +17,7 @@ from pretix.base.i18n import I18nCharField
from pretix.base.models.base import LoggedModel
from pretix.base.settings import SettingsProxy
from pretix.base.validators import EventSlugBlacklistValidator
from pretix.helpers.daterange import daterange
from .auth import User
from .organizer import Organizer
@@ -153,6 +154,12 @@ class Event(LoggedModel):
"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":
"""
Returns an :py:class:`ObjectRelatedCache` object. This behaves equivalent to

View 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")
)

View File

@@ -29,8 +29,7 @@
</a>
{% else %}
<a href="{% eventurl event "presale:event.index" %}">{{ event.name }}</a>
<small>{{ event.date_from|date:"DATE_FORMAT" }}{% if event.settings.show_date_to %}
{{ event.date_to|date:"DATE_FORMAT" }}{% endif %}</small>
<small>{{ event.get_date_range_display }}</small>
{% endif %}
</h1>
<div class="pull-right loginbox">