model = EventRelatedTitle
+class EventRankAdmin(TranslationTabularInline):
+
+ model = EventRank
+
+
class EventPriceDescriptionAdmin(TranslationTabularInline):
model = EventPriceDescription
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.
--- /dev/null
+# -*- 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',
+ },
+ ),
+ ]
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)
class EventPriceTranslationOptions(TranslationOptions):
fields = ()
+
+
+@register(EventRank)
+class EventRankTranslationOptions(TranslationOptions):
+
+ fields = ()
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
<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>