]> git.parisson.com Git - mezzo.git/commitdiff
[Event] : order by rank
authorEmilie <zawadzki@ircam.fr>
Tue, 21 Feb 2017 16:11:55 +0000 (17:11 +0100)
committerEmilie <zawadzki@ircam.fr>
Tue, 21 Feb 2017 16:11:55 +0000 (17:11 +0100)
app/organization/agenda/admin.py
app/organization/agenda/migrations/0024_eventrank.py [new file with mode: 0644]
app/organization/agenda/models.py
app/organization/agenda/translation.py
app/organization/agenda/views.py
app/templates/agenda/event_list.html

index 9c0336fa1d2e69e39f7a70f77b0621b795367934..4af8bc8822d895d6a5ba034008b02fe967415008 100644 (file)
@@ -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 (file)
index 0000000..036263f
--- /dev/null
@@ -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',
+            },
+        ),
+    ]
index cfd9523fe8659728d2de7206ff59a5ba85f11b4b..fe1cd5ed2b1c1c54aedd03e484e562bddfb5c2b1 100644 (file)
@@ -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)
index 6764de58509dc64d66cc8c077de41bec901417b6..ccea677978612e7c7f60ed8a2a7537c4068860f3 100644 (file)
@@ -106,3 +106,9 @@ class EventPriceDescriptionTranslationOptions(TranslationOptions):
 class EventPriceTranslationOptions(TranslationOptions):
 
     fields = ()
+
+
+@register(EventRank)
+class EventRankTranslationOptions(TranslationOptions):
+
+    fields = ()
index 6b39fc7d1048259966a093fabd636f34aeeacaab..8972b4887ba8901d78f59b155c7e84054eaea979 100644 (file)
@@ -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
 
index 031ed0ecf3b33719828033ed1e6a5da149b020c5..86f25d910c6238decaea51926e718253650d925b 100644 (file)
@@ -36,7 +36,7 @@
             <div class="row">
                 <div class="mb2 col-md-12 col-md-push-2 page__content" data-summary-content>
                     <div class="page__content">
-                        {% for event in events.object_list %}
+                        {% for event in events %}
                             {% include 'agenda/includes/event_linecard.html' %}
                         {% endfor %}
                     </div>