diff --git a/src/pretix/base/models/items.py b/src/pretix/base/models/items.py index 3e01777e5d..6386217757 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 8df1ac1ecd..adec0e9eeb 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 %}