Show event meta data in backend list of events

This commit is contained in:
Raphael Michel
2019-07-11 11:16:07 +02:00
parent fb66434fc9
commit f066ed01ff
3 changed files with 19 additions and 5 deletions

View File

@@ -710,8 +710,12 @@ class Event(EventMixin, LoggedModel):
@property @property
def meta_data(self): def meta_data(self):
data = {p.name: p.default for p in self.organizer.meta_properties.all()} data = {p.name: p.default for p in self.organizer.meta_properties.all()}
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()}) data.update({v.property.name: v.value for v in self.meta_values.select_related('property').all()})
return data
return OrderedDict((k, v) for k, v in sorted(data.items(), key=lambda k: k[0]))
@property @property
def has_payment_provider(self): def has_payment_provider(self):

View File

@@ -87,6 +87,11 @@
<td class="event-name-col"> <td class="event-name-col">
<strong><a href="{% url "control:event.index" organizer=e.organizer.slug event=e.slug %}">{{ e.name }}</a></strong> <strong><a href="{% url "control:event.index" organizer=e.organizer.slug event=e.slug %}">{{ e.name }}</a></strong>
<br><small>{{ e.slug }}</small> <br><small>{{ e.slug }}</small>
{% for k, v in e.meta_data.items %}
{% if v %}
<span class="text-muted">&middot; {{ k }}: {{ v }}</span>
{% endif %}
{% endfor %}
</td> </td>
{% if not hide_orga %}<td>{{ e.organizer }}</td>{% endif %} {% if not hide_orga %}<td>{{ e.organizer }}</td>{% endif %}
<td class="event-date-col"> <td class="event-date-col">

View File

@@ -17,7 +17,7 @@ from i18nfield.strings import LazyI18nString
from pretix.base.forms import SafeSessionWizardView from pretix.base.forms import SafeSessionWizardView
from pretix.base.i18n import language 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 ( from pretix.control.forms.event import (
EventWizardBasicsForm, EventWizardCopyForm, EventWizardFoundationForm, EventWizardBasicsForm, EventWizardCopyForm, EventWizardFoundationForm,
) )
@@ -32,8 +32,13 @@ class EventList(PaginationMixin, ListView):
template_name = 'pretixcontrol/events/index.html' template_name = 'pretixcontrol/events/index.html'
def get_queryset(self): def get_queryset(self):
qs = self.request.user.get_events_with_any_permission(self.request).select_related('organizer').prefetch_related( qs = self.request.user.get_events_with_any_permission(self.request).prefetch_related(
'_settings_objects', 'organizer___settings_objects' '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') ).order_by('-date_from')
qs = qs.annotate( qs = qs.annotate(