From 94f2ad932501e3cab5bfa3e1f71583870207cbfa Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 29 Nov 2018 10:13:43 +0100 Subject: [PATCH] Highlight items that are unavailable by time --- src/pretix/base/models/items.py | 14 +++++++---- .../templates/pretixcontrol/items/index.html | 23 +++++++++++++++---- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/pretix/base/models/items.py b/src/pretix/base/models/items.py index 3e01777e5..638621775 100644 --- a/src/pretix/base/models/items.py +++ b/src/pretix/base/models/items.py @@ -364,17 +364,21 @@ class Item(LoggedModel): rate=Decimal('0.00'), name='') return self.tax_rule.tax(price, base_price_is=base_price_is) + def is_available_by_time(self, now_dt: datetime=None) -> bool: + now_dt = now_dt or now() + if self.available_from and self.available_from > now_dt: + return False + if self.available_until and self.available_until < now_dt: + return False + return True + def is_available(self, now_dt: datetime=None) -> bool: """ Returns whether this item is available according to its ``active`` flag and its ``available_from`` and ``available_until`` fields """ now_dt = now_dt or now() - if not self.active: - return False - if self.available_from and self.available_from > now_dt: - return False - if self.available_until and self.available_until < now_dt: + if not self.active or not self.is_available_by_time(now_dt): return False return True diff --git a/src/pretix/control/templates/pretixcontrol/items/index.html b/src/pretix/control/templates/pretixcontrol/items/index.html index 8df1ac1ec..adec0e9ee 100644 --- a/src/pretix/control/templates/pretixcontrol/items/index.html +++ b/src/pretix/control/templates/pretixcontrol/items/index.html @@ -54,8 +54,16 @@ {% if i.available_from or i.available_until %} - - + {% if not i.is_available_by_time %} + + + + + {% else %} + + + {% endif %} {% endif %} @@ -69,10 +77,15 @@ {% endif %} - {% if i.hide_without_voucher %} - + {% if i.category.is_addon %} + + {% elif i.hide_without_voucher %} + {% elif i.require_voucher %} - + {% endif %} {% if i.category %}{{ i.category.name }}{% endif %}