From 48fb9a94446da7f1b87a1b8eef55d4991008dab6 Mon Sep 17 00:00:00 2001 From: Emilie Date: Tue, 21 Feb 2017 17:11:55 +0100 Subject: [PATCH] [Event] : order by rank --- app/organization/agenda/admin.py | 12 ++++++-- .../agenda/migrations/0024_eventrank.py | 29 +++++++++++++++++++ app/organization/agenda/models.py | 10 +++++++ app/organization/agenda/translation.py | 6 ++++ app/organization/agenda/views.py | 2 ++ app/templates/agenda/event_list.html | 2 +- 6 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 app/organization/agenda/migrations/0024_eventrank.py diff --git a/app/organization/agenda/admin.py b/app/organization/agenda/admin.py index 9c0336fa..4af8bc88 100644 --- a/app/organization/agenda/admin.py +++ b/app/organization/agenda/admin.py @@ -82,6 +82,11 @@ class EventRelatedTitleAdmin(TranslationTabularInline): model = EventRelatedTitle +class EventRankAdmin(TranslationTabularInline): + + model = EventRank + + class EventPriceDescriptionAdmin(TranslationTabularInline): model = EventPriceDescription @@ -109,14 +114,17 @@ class CustomEventAdmin(EventAdmin): fieldsets = deepcopy(EventAdminBase.fieldsets) exclude = ("short_url", ) - list_display = ["title", "start", "end", "user", "status", "admin_link"] + list_display = ["title", "start", "end", "rank", "user", "status", "admin_link"] if settings.EVENT_USE_FEATURED_IMAGE: list_display.insert(0, "admin_thumb") list_filter = deepcopy(DisplayableAdmin.list_filter) + ("location", "category") - inlines = [EventPeriodInline, EventBlockInline, EventImageInline, EventDepartmentInline, + inlines = [EventRankAdmin, EventPeriodInline, EventBlockInline, EventImageInline, EventDepartmentInline, EventPersonInline, EventLinkInline, EventPlaylistInline, EventTrainingInline, EventRelatedTitleAdmin, DynamicContentEventInline] + def rank(self, obj): + return obj.event_rank.rank + def save_form(self, request, form, change): """ Super class ordering is important here - user must get saved first. diff --git a/app/organization/agenda/migrations/0024_eventrank.py b/app/organization/agenda/migrations/0024_eventrank.py new file mode 100644 index 00000000..036263fd --- /dev/null +++ b/app/organization/agenda/migrations/0024_eventrank.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.11 on 2017-02-21 14:44 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('mezzanine_agenda', '0016_auto_20161216_1558'), + ('organization-agenda', '0023_auto_20170214_1643'), + ] + + operations = [ + migrations.CreateModel( + name='EventRank', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('rank', models.IntegerField(blank=True, null=True, verbose_name='rank')), + ('event', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='event_rank', to='mezzanine_agenda.Event', verbose_name='event')), + ], + options={ + 'verbose_name_plural': 'ranks', + 'verbose_name': 'rank', + }, + ), + ] diff --git a/app/organization/agenda/models.py b/app/organization/agenda/models.py index cfd9523f..fe1cd5ed 100644 --- a/app/organization/agenda/models.py +++ b/app/organization/agenda/models.py @@ -70,6 +70,16 @@ class EventPerson(models.Model): verbose_name_plural = _("persons") +class EventRank(models.Model): + + event = models.OneToOneField(Event, verbose_name=_('event'), related_name='event_rank', blank=True, null=True, on_delete=models.SET_NULL) + rank = models.IntegerField(verbose_name=_('rank'), blank=True, null=True) + + class Meta: + verbose_name = _("rank") + verbose_name_plural = _("ranks") + + class EventLink(Link): event = models.ForeignKey(Event, verbose_name=_('event'), related_name='links', blank=True, null=True, on_delete=models.SET_NULL) diff --git a/app/organization/agenda/translation.py b/app/organization/agenda/translation.py index 6764de58..ccea6779 100644 --- a/app/organization/agenda/translation.py +++ b/app/organization/agenda/translation.py @@ -106,3 +106,9 @@ class EventPriceDescriptionTranslationOptions(TranslationOptions): class EventPriceTranslationOptions(TranslationOptions): fields = () + + +@register(EventRank) +class EventRankTranslationOptions(TranslationOptions): + + fields = () diff --git a/app/organization/agenda/views.py b/app/organization/agenda/views.py index 6b39fc7d..8972b488 100644 --- a/app/organization/agenda/views.py +++ b/app/organization/agenda/views.py @@ -73,9 +73,11 @@ class DynamicContentEventView(Select2QuerySetSequenceView): class CustomEventListView(EventListView): past_events = [] + paginate_by = settings.EVENT_PER_PAGE def get_queryset(self, tag=None): qs = super(CustomEventListView, self).get_queryset(tag=None) + qs = qs.order_by("event_rank__rank", "start") # loosing start ordering. Had to regive it. self.past_events = Event.objects.filter(Q(start__lt=datetime.now()) | Q(end__lt=datetime.now())).order_by("start") return qs diff --git a/app/templates/agenda/event_list.html b/app/templates/agenda/event_list.html index 031ed0ec..86f25d91 100644 --- a/app/templates/agenda/event_list.html +++ b/app/templates/agenda/event_list.html @@ -36,7 +36,7 @@
- {% for event in events.object_list %} + {% for event in events %} {% include 'agenda/includes/event_linecard.html' %} {% endfor %}
-- 2.39.5