diff --git a/src/pretix/base/models/memberships.py b/src/pretix/base/models/memberships.py index 540cba6233..190ef73d03 100644 --- a/src/pretix/base/models/memberships.py +++ b/src/pretix/base/models/memberships.py @@ -159,6 +159,12 @@ class Membership(models.Model): de = date_format(self.date_end, 'SHORT_DATE_FORMAT') return f'{self.membership_type.name}: {self.attendee_name} ({ds} – {de})' + @property + def percentage_used(self): + if self.membership_type.max_usages and self.usages: + return int(self.usages / self.membership_type.max_usages * 100) + return 0 + @property def attendee_name(self): return build_name(self.attendee_name_parts, fallback_scheme=lambda: self.customer.organizer.settings.name_scheme) diff --git a/src/pretix/presale/templates/pretixpresale/organizers/customer_memberships.html b/src/pretix/presale/templates/pretixpresale/organizers/customer_memberships.html index 029f1d15fc..13f1a81b15 100644 --- a/src/pretix/presale/templates/pretixpresale/organizers/customer_memberships.html +++ b/src/pretix/presale/templates/pretixpresale/organizers/customer_memberships.html @@ -18,79 +18,46 @@ {% for m in memberships %}
  • -
    {% trans "Membership type" %}
    -
    - {% if m.canceled %}{% endif %} - {{ m.membership_type.name }} - {% if m.canceled %}{% endif %} - {% if m.testmode %}{% trans "TEST MODE" %}{% endif %} -
    -
    {% trans "Valid from" %}
    -
    {{ m.date_start|date:"SHORT_DATETIME_FORMAT" }}
    -
    {% trans "Valid until" %}
    -
    {{ m.date_end|date:"SHORT_DATETIME_FORMAT" }}
    -
    {% trans "Attendee name" %}
    -
    {{ m.attendee_name }}
    -
    {% trans "Usages" %}
    -
    -
    -
    -
    +
    +
    + {% if m.canceled %}{% endif %} + {{ m.membership_type.name }} + {% if m.membership_type.transferable %} + + {% endif %} + {% if m.canceled %} + + + {% trans "Canceled" %} + + + {% endif %} + {% if m.testmode %}{% trans "TEST MODE" %}{% endif %} +
    +
    + {% if not m.membership_type.transferable %} + + {% 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" }}
    + +
    +
    +
    +
    +
    +
    +
    +
    + {{ m.usages }} / + {{ m.membership_type.max_usages|default_if_none:"∞" }}
    -
    - {{ m.usages }} / - {{ m.membership_type.max_usages|default_if_none:"∞" }} -
    -
    - -
    {% trans "Actions" %}
    -
    - - - {% trans "Details" %} -
    -
    - -
    -
    -
    {% trans "Order" %}
    -
    - - - {{ o.code }} - - {% if o.customer_id != customer.pk %} - - {% endif %} - {% include "pretixpresale/event/fragment_order_status.html" with order=o event=o.event %} -
    -
    - {% if o.testmode and False %} -
    {% trans "TEST MODE" %}
    - {% endif %} -
    -
    -
    {% trans "Order total" %}
    -
    {{ o.total|money:o.event.currency }}
    -
    {% trans "Positions" %}
    -
    {% blocktranslate count counter=o.count_positions|default_if_none:0 %}{{ counter }} item{% plural %}{{ counter }} items{% endblocktranslate %}
    -
    -
    {% trans "Event" %}
    -
    - {{ o.event }} - {% if not o.event.has_subevents and o.event.settings.show_dates_on_frontpage %} -
    {{ o.event.get_date_range_display }} - {% endif %} -
    -
    -
    +
    {% trans "Actions" %}