improve membership validity display

This commit is contained in:
Richard Schreiber
2024-11-22 12:41:39 +01:00
parent 20c14b8b24
commit 3ec0fdb4d2
2 changed files with 49 additions and 18 deletions

View File

@@ -169,6 +169,14 @@ class Membership(models.Model):
def attendee_name(self): def attendee_name(self):
return build_name(self.attendee_name_parts, fallback_scheme=lambda: self.customer.organizer.settings.name_scheme) 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): def is_valid(self, ev=None, ticket_valid_from=None, valid_from_not_chosen=False):
if valid_from_not_chosen: if valid_from_not_chosen:
return not self.canceled and self.date_end >= time_machine_now() return not self.canceled and self.date_end >= time_machine_now()

View File

@@ -24,30 +24,53 @@
<a href="{% abseventurl request.organizer "presale:organizer.customer.membership" id=m.id %}"> <a href="{% abseventurl request.organizer "presale:organizer.customer.membership" id=m.id %}">
{{ m.membership_type.name }} {{ m.membership_type.name }}
</a> </a>
{% if m.canceled %}</del>{% endif %}
{% if m.membership_type.transferable %} {% if m.membership_type.transferable %}
<span class="text-muted fa fa-users" aria-hidden="true" title="{% trans "Membership is transferable" %}"></span> <span class="text-muted fa fa-users" aria-hidden="true" title="{% trans "Membership is transferable" %}"></span>
{% endif %} {% endif %}
{% if m.canceled %}</del>
<small>
{% textblob "danger" icon="times" %}
{% trans "Canceled" %}
{% endtextblob %}
</small>
{% endif %}
{% if m.testmode %}
{% textblob "warning" %}
{% trans "TEST MODE" %}
{% endtextblob %}
{% endif %}
</dt> </dt>
<dd class="text-muted"> <dd class="text-muted">
{% if not m.membership_type.transferable %} {% if not m.membership_type.transferable %}
<span class="fa fa-id-badge" aria-hidden="true"></span> <span class="fa fa-id-badge" aria-hidden="true"></span>
{% endif %}
{{ m.attendee_name|default_if_none:"" }}
</dd>
<dd class="text-muted">
<small>
{% if m.canceled %}
{% textblob "danger" icon="times" %}
{% trans "Canceled" %}
{% endtextblob %}
{% elif m.expired %}
{% icon "minus-square-o" %}
{% trans "Expired since" %}
<time datetime="{{ m.date_end|date:"Y-m-d H:i" }}">
{{ m.date_end|date:"SHORT_DATETIME_FORMAT" }}
</time>
{% elif m.not_yet_valid %}
{% icon "clock-o" %}
{% trans "Valid from" %}
<time datetime="{{ m.date_start|date:"Y-m-d H:i" }}">
{{ m.date_start|date:"SHORT_DATETIME_FORMAT" }}
</time>
{% else %}
{% icon "check" %}
{% trans "Valid until" %}
<time datetime="{{ m.date_end|date:"Y-m-d H:i" }}">
{{ m.date_end|date:"SHORT_DATETIME_FORMAT" }}
</time>
{% endif %}
</small>
</dd>
{% if m.testmode %}
<dd>
<small>
{% textblob "warning" %}
{% trans "TEST MODE" %}
{% endtextblob %}
</small>
</dd>
{% endif %} {% endif %}
{{ m.attendee_name|default_if_none:"" }}</dd>
<dd class="text-muted"><small>{% trans "Valid from" %} {{ m.date_start|date:"SHORT_DATETIME_FORMAT" }}</small></dd>
<dd class="text-muted"><small>{% trans "Valid until" %} {{ m.date_end|date:"SHORT_DATETIME_FORMAT" }}</small></dd>
</div> </div>
<div class="col-xs-5"> <div class="col-xs-5">
<dd> <dd>