]> git.parisson.com Git - mezzo.git/commitdiff
add Playlist
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Tue, 22 Mar 2016 00:02:15 +0000 (01:02 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Tue, 22 Mar 2016 00:02:15 +0000 (01:02 +0100)
app/festival/admin.py
app/festival/migrations/0010_playlist.py [new file with mode: 0644]
app/festival/models.py
app/sandbox/local_settings.py

index df00c8a0bb21d43ecaa8c1df4b3dfeec0d6f5b00..69998f24ad559b0e2b578edca7190fe9c1115ea0 100644 (file)
@@ -48,3 +48,4 @@ admin.site.register(PageCategory)
 admin.site.register(Artist, ArtistAdminDisplayable)
 admin.site.register(Video, VideoAdminDisplayable)
 admin.site.register(Audio, AudioAdminDisplayable)
+admin.site.register(Playlist)
diff --git a/app/festival/migrations/0010_playlist.py b/app/festival/migrations/0010_playlist.py
new file mode 100644 (file)
index 0000000..e73b327
--- /dev/null
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.2 on 2016-03-22 00:00
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('mezzanine_agenda', '0003_auto_20160309_1621'),
+        ('festival', '0009_auto_20160322_0021'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Playlist',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('title', models.CharField(max_length=512, verbose_name='title')),
+                ('description', models.TextField(blank=True, verbose_name='description')),
+                ('audios', models.ManyToManyField(blank=True, related_name='playlists', to='festival.Audio', verbose_name='audios')),
+                ('event', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='playlists', to='mezzanine_agenda.Event', verbose_name='event')),
+            ],
+            options={
+                'abstract': False,
+            },
+        ),
+    ]
index a9b690ab8bdf4bdddcb279e04baa9e150cdedec2..bc10e2a6ae491bf06799261d9e0b97b933a6db6f 100644 (file)
@@ -156,3 +156,10 @@ class Video(Media):
 
     def get_absolute_url(self):
         return reverse("festival-video-detail", kwargs={"slug": self.slug})
+
+
+class Playlist(BaseTitleModel):
+    """(Playlist description)"""
+
+    audios = models.ManyToManyField(Audio, verbose_name=_('audios'), related_name='playlists', blank=True)
+    event = models.ForeignKey(Event, related_name='playlists', verbose_name=_('event'), blank=True, null=True, on_delete=models.SET_NULL)
index 7ea53d1d4b927d327b0c51488da6f1bcd3fa5b68..3cc0a20640ab50d095a4c09fe355c43933a48e75 100644 (file)
@@ -78,7 +78,7 @@ EVENT_USE_FEATURED_IMAGE = True
 
 ADMIN_MENU_ORDER = (
     (_("Content"), ("pages.Page", "blog.BlogPost", "mezzanine_agenda.Event",
-        "festival.Artist", "festival.Video", "festival.Audio",
+        "festival.Artist", "festival.Video", "festival.Audio", "festival.Playlist",
         "generic.ThreadedComment", (_("Media Library"), "fb_browse"),)),
     (_("Site"), ("sites.Site", "redirects.Redirect", "conf.Setting")),
     (_("Users"), ("auth.User", "auth.Group",)),