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.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

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> </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">