From 0cab3cdaf03928b0722517e6b7a9db3d97962b6c Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Tue, 22 Mar 2016 01:02:15 +0100 Subject: [PATCH] add Playlist --- app/festival/admin.py | 1 + app/festival/migrations/0010_playlist.py | 30 ++++++++++++++++++++++++ app/festival/models.py | 7 ++++++ app/sandbox/local_settings.py | 2 +- 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 app/festival/migrations/0010_playlist.py diff --git a/app/festival/admin.py b/app/festival/admin.py index df00c8a0..69998f24 100644 --- a/app/festival/admin.py +++ b/app/festival/admin.py @@ -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 index 00000000..e73b3274 --- /dev/null +++ b/app/festival/migrations/0010_playlist.py @@ -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, + }, + ), + ] diff --git a/app/festival/models.py b/app/festival/models.py index a9b690ab..bc10e2a6 100644 --- a/app/festival/models.py +++ b/app/festival/models.py @@ -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) diff --git a/app/sandbox/local_settings.py b/app/sandbox/local_settings.py index 7ea53d1d..3cc0a206 100644 --- a/app/sandbox/local_settings.py +++ b/app/sandbox/local_settings.py @@ -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",)), -- 2.39.5