20 lines
778 B
Python
20 lines
778 B
Python
def organize_media_by_event(eventmedia_queryset):
|
|
"""Organizes event media by event.
|
|
|
|
Given a queryset of event media, it returns a list of 'objects'
|
|
with the following properties:
|
|
|
|
* event (event object)
|
|
* date (date object for most recently posted media from event)
|
|
* media_list (a string of the available media types)
|
|
"""
|
|
|
|
media_by_event = {}
|
|
for media in eventmedia_queryset:
|
|
media_by_event.setdefault(media.event.id, []).append(media)
|
|
mbe = [{'event': x[0].event,
|
|
'date': max(y.date_created for y in x),
|
|
'media_list': ', '.join({y.get_format_display() for y in x})}
|
|
for x in list(media_by_event.values())]
|
|
mbe.sort(key=(lambda x: x['date']), reverse=True) # sort by date
|
|
return mbe
|