From 3ec0fdb4d25aa73f036e2cbf3234577c1669a642 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Fri, 22 Nov 2024 12:41:39 +0100 Subject: [PATCH] improve membership validity display --- src/pretix/base/models/memberships.py | 8 +++ .../organizers/customer_memberships.html | 59 +++++++++++++------ 2 files changed, 49 insertions(+), 18 deletions(-) diff --git a/src/pretix/base/models/memberships.py b/src/pretix/base/models/memberships.py index 190ef73d03..14640b2cf2 100644 --- a/src/pretix/base/models/memberships.py +++ b/src/pretix/base/models/memberships.py @@ -169,6 +169,14 @@ class Membership(models.Model): def attendee_name(self): return build_name(self.attendee_name_parts, fallback_scheme=lambda: self.customer.organizer.settings.name_scheme) + @property + def expired(self): + return time_machine_now() > self.date_end + + @property + def not_yet_valid(self): + return time_machine_now() < self.date_start + def is_valid(self, ev=None, ticket_valid_from=None, valid_from_not_chosen=False): if valid_from_not_chosen: return not self.canceled and self.date_end >= time_machine_now() diff --git a/src/pretix/presale/templates/pretixpresale/organizers/customer_memberships.html b/src/pretix/presale/templates/pretixpresale/organizers/customer_memberships.html index 251d8de427..a74730aa2d 100644 --- a/src/pretix/presale/templates/pretixpresale/organizers/customer_memberships.html +++ b/src/pretix/presale/templates/pretixpresale/organizers/customer_memberships.html @@ -24,30 +24,53 @@ {{ m.membership_type.name }} + {% if m.canceled %}{% endif %} {% if m.membership_type.transferable %} {% endif %} - {% if m.canceled %} - - {% textblob "danger" icon="times" %} - {% trans "Canceled" %} - {% endtextblob %} - - {% endif %} - {% if m.testmode %} - {% textblob "warning" %} - {% trans "TEST MODE" %} - {% endtextblob %} - {% endif %}
- {% if not m.membership_type.transferable %} - + {% if not m.membership_type.transferable %} + + {% endif %} + {{ m.attendee_name|default_if_none:"" }} +
+
+ + {% if m.canceled %} + {% textblob "danger" icon="times" %} + {% trans "Canceled" %} + {% endtextblob %} + {% elif m.expired %} + {% icon "minus-square-o" %} + {% trans "Expired since" %} + + {% elif m.not_yet_valid %} + {% icon "clock-o" %} + {% trans "Valid from" %} + + {% else %} + {% icon "check" %} + {% trans "Valid until" %} + + {% endif %} + +
+ {% if m.testmode %} +
+ + {% textblob "warning" %} + {% trans "TEST MODE" %} + {% endtextblob %} + +
{% endif %} - {{ m.attendee_name|default_if_none:"" }} - -
{% trans "Valid from" %} {{ m.date_start|date:"SHORT_DATETIME_FORMAT" }}
-
{% trans "Valid until" %} {{ m.date_end|date:"SHORT_DATETIME_FORMAT" }}