Fix #898 -- Add setting to configure subevent ordering on frontpage (#906)

Fixes #898.
This commit is contained in:
Felix Rindt
2018-05-31 12:28:44 +02:00
committed by Raphael Michel
parent c4ed210fed
commit 6fe02f156a
6 changed files with 56 additions and 3 deletions

View File

@@ -2,6 +2,7 @@ import string
import uuid
from collections import OrderedDict
from datetime import datetime, time
from operator import attrgetter
import pytz
from django.conf import settings
@@ -535,6 +536,23 @@ class Event(EventMixin, LoggedModel):
)
).order_by('date_from', 'name')
@property
def subevent_list_subevents(self):
ordering = self.settings.get('frontpage_subevent_ordering', default='date_ascending', as_type=str)
orderfields = {
'date_ascending': ('date_from', 'name'),
'date_descending': ('-date_from', 'name'),
'name_ascending': ('name', 'date_from'),
'name_descending': ('-name', 'date_from'),
}[ordering]
subevs = self.subevents.filter(
Q(active=True) & (
Q(Q(date_to__isnull=True) & Q(date_from__gte=now()))
| Q(date_to__gte=now())
)
) # order_by doesn't make sense with I18nField
return sorted(subevs, key=attrgetter(*orderfields))
@property
def meta_data(self):
data = {p.name: p.default for p in self.organizer.meta_properties.all()}

View File

@@ -495,6 +495,10 @@ Your {event} team"""))
'default': '',
'type': LazyI18nString
},
'frontpage_subevent_ordering': {
'default': 'date_ascending',
'type': str
},
}
settings_hierarkey = Hierarkey(attribute_name='settings')