diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py index a4d0733a86..04c1165478 100644 --- a/src/pretix/base/models/event.py +++ b/src/pretix/base/models/event.py @@ -710,8 +710,12 @@ class Event(EventMixin, LoggedModel): @property def meta_data(self): data = {p.name: p.default for p in self.organizer.meta_properties.all()} - data.update({v.property.name: v.value for v in self.meta_values.select_related('property').all()}) - return data + if hasattr(self, 'meta_values_cached'): + data.update({v.property.name: v.value for v in self.meta_values_cached}) + else: + data.update({v.property.name: v.value for v in self.meta_values.select_related('property').all()}) + + return OrderedDict((k, v) for k, v in sorted(data.items(), key=lambda k: k[0])) @property def has_payment_provider(self): diff --git a/src/pretix/control/templates/pretixcontrol/events/index.html b/src/pretix/control/templates/pretixcontrol/events/index.html index a7205138d7..d1202ba581 100644 --- a/src/pretix/control/templates/pretixcontrol/events/index.html +++ b/src/pretix/control/templates/pretixcontrol/events/index.html @@ -87,6 +87,11 @@ {{ e.name }}
{{ e.slug }} + {% for k, v in e.meta_data.items %} + {% if v %} + · {{ k }}: {{ v }} + {% endif %} + {% endfor %} {% if not hide_orga %}{{ e.organizer }}{% endif %} diff --git a/src/pretix/control/views/main.py b/src/pretix/control/views/main.py index 6ab86eaaa6..4d19473dd8 100644 --- a/src/pretix/control/views/main.py +++ b/src/pretix/control/views/main.py @@ -17,7 +17,7 @@ from i18nfield.strings import LazyI18nString from pretix.base.forms import SafeSessionWizardView from pretix.base.i18n import language -from pretix.base.models import Event, Organizer, Quota, Team +from pretix.base.models import Event, EventMetaValue, Organizer, Quota, Team from pretix.control.forms.event import ( EventWizardBasicsForm, EventWizardCopyForm, EventWizardFoundationForm, ) @@ -32,8 +32,13 @@ class EventList(PaginationMixin, ListView): template_name = 'pretixcontrol/events/index.html' def get_queryset(self): - qs = self.request.user.get_events_with_any_permission(self.request).select_related('organizer').prefetch_related( - '_settings_objects', 'organizer___settings_objects' + qs = self.request.user.get_events_with_any_permission(self.request).prefetch_related( + 'organizer', '_settings_objects', 'organizer___settings_objects', 'organizer__meta_properties', + Prefetch( + 'meta_values', + EventMetaValue.objects.select_related('property'), + to_attr='meta_values_cached' + ) ).order_by('-date_from') qs = qs.annotate(