'ignore', r"DateTimeField .* received a naive datetime",
RuntimeWarning, r'django\.db\.models\.fields')
-EVENT_SLUG = 'events'
+EVENT_SLUG = 'agenda'
EVENT_GOOGLE_MAPS_DOMAIN = 'maps.google.fr'
EVENT_PER_PAGE = 50
EVENT_USE_FEATURED_IMAGE = True
--- /dev/null
+"""
+Provides abstract models and admin features used throughout the various
+Mezzanine apps.
+"""
+from __future__ import unicode_literals
+
+default_app_config = 'organization.agenda.apps.AgendaConfig'
--- /dev/null
+from __future__ import unicode_literals
+
+from copy import deepcopy
+
+from django.contrib import admin
+from django.utils.translation import ugettext_lazy as _
+
+from mezzanine.core.admin import *
+from mezzanine.pages.admin import PageAdmin
+from mezzanine.conf import settings
+from mezzanine.core.admin import DisplayableAdmin, OwnableAdmin
+
+from mezzanine_agenda.models import Event
+from mezzanine_agenda.admin import *
+
+from organization.core.models import *
+from organization.agenda.models import *
+
+
+class EventBlockInline(StackedDynamicInlineAdmin):
+
+ model = EventBlock
+
+
+class EventImageInline(TabularDynamicInlineAdmin):
+
+ model = EventImage
+
+
+class CustomEventAdmin(EventAdmin):
+ """
+ Admin class for events.
+ """
+
+ fieldsets = deepcopy(EventAdminBase.fieldsets)
+ exclude = ("short_url", )
+ list_display = ["title", "start", "end", "user", "status", "admin_link"]
+ if settings.EVENT_USE_FEATURED_IMAGE:
+ list_display.insert(0, "admin_thumb")
+ list_filter = deepcopy(DisplayableAdmin.list_filter) + ("location",)
+ inlines = [EventBlockInline, EventImageInline,]
+
+ def save_form(self, request, form, change):
+ """
+ Super class ordering is important here - user must get saved first.
+ """
+ OwnableAdmin.save_form(self, request, form, change)
+ return DisplayableAdmin.save_form(self, request, form, change)
+
+
+admin.site.unregister(Event)
+admin.site.register(Event, CustomEventAdmin)
--- /dev/null
+from django.apps import AppConfig
+
+from django.core.checks import register
+
+
+class AgendaConfig(AppConfig):
+
+ name = 'organization.agenda'
+ label = 'organization-agenda'
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-25 14:27
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('mezzanine_agenda', '0003_remove_event_blog_posts'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='EventBlock',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
+ ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('with_separator', models.BooleanField(default=False)),
+ ('background_color', models.CharField(blank=True, choices=[('black', 'black'), ('yellow', 'yellow'), ('red', 'red')], max_length=32, verbose_name='background color')),
+ ('event', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blocks', to='mezzanine_agenda.Event', verbose_name='event')),
+ ],
+ options={
+ 'verbose_name': 'block',
+ 'verbose_name_plural': 'blocks',
+ 'ordering': ('_order',),
+ },
+ ),
+ migrations.CreateModel(
+ name='EventImage',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('file', mezzanine.core.fields.FileField(max_length=1024, verbose_name='Image')),
+ ('credits', models.CharField(blank=True, max_length=256, null=True, verbose_name='credits')),
+ ('type', models.CharField(choices=[('logo', 'logo'), ('slider', 'slider'), ('card', 'card'), ('page_slider', 'page slider')], max_length=64, verbose_name='type')),
+ ('event', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='images', to='mezzanine_agenda.Event', verbose_name='event')),
+ ],
+ options={
+ 'verbose_name': 'image',
+ 'verbose_name_plural': 'images',
+ 'ordering': ('_order',),
+ },
+ ),
+ ]
--- /dev/null
+from __future__ import unicode_literals
+from future.builtins import str
+
+from django.utils.translation import ugettext_lazy as _
+
+from mezzanine_agenda.models import Event
+from organization.core.models import *
+
+
+class EventBlock(Block):
+
+ event = models.ForeignKey(Event, verbose_name=_('event'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL)
+
+ class Meta:
+ verbose_name = _("block")
+ verbose_name_plural = _("blocks")
+
+
+class EventImage(Image):
+
+ event = models.ForeignKey(Event, verbose_name=_('event'), related_name='images', blank=True, null=True, on_delete=models.SET_NULL)
+
+ class Meta:
+ verbose_name = _("image")
+ verbose_name_plural = _("images")
--- /dev/null
+from modeltranslation.translator import translator, register, TranslationOptions
+
+from organization.agenda.models import *
+
+
+@register(EventBlock)
+class EventBlockTranslationOptions(TranslationOptions):
+
+ fields = ()
+
+
+@register(EventImage)
+class EventImageTranslationOptions(TranslationOptions):
+
+ fields = ()
"organization.magazine",
"organization.media",
"organization.projects",
+ "organization.agenda",
]
# App urls
url("^", include('organization.urls')),
- url("^events/%s/" % settings.EVENT_SLUG, include("mezzanine_agenda.urls")),
+ url("^%s/" % settings.EVENT_SLUG, include("mezzanine_agenda.urls")),
url("^styles/$", direct_to_template, {"template": "styles.html"}, name="styles"),
# We don't want to presume how your homepage works, so here are a
-Subproject commit 3a5ba723573897568f1ca86eabbeeff47cde57d6
+Subproject commit e097aa19ade48f0b03d3b9068a39a0c14d6695d9