From ca03dbc32befa08683f8ddf1606390d1808ceadd Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Tue, 29 Oct 2024 16:56:13 -0400 Subject: [PATCH] feat: add Playlist model --- program/migrations/0118_delete_playlist.py | 16 ++++++++ program/migrations/0119_playlist.py | 48 ++++++++++++++++++++++ program/models.py | 13 ++++++ 3 files changed, 77 insertions(+) create mode 100644 program/migrations/0118_delete_playlist.py create mode 100644 program/migrations/0119_playlist.py diff --git a/program/migrations/0118_delete_playlist.py b/program/migrations/0118_delete_playlist.py new file mode 100644 index 00000000..df20e6b2 --- /dev/null +++ b/program/migrations/0118_delete_playlist.py @@ -0,0 +1,16 @@ +# Generated by Django 4.2.16 on 2024-10-29 20:44 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("program", "0117_alter_timeslot_options"), + ] + + operations = [ + migrations.DeleteModel( + name="Playlist", + ), + ] diff --git a/program/migrations/0119_playlist.py b/program/migrations/0119_playlist.py new file mode 100644 index 00000000..355f224c --- /dev/null +++ b/program/migrations/0119_playlist.py @@ -0,0 +1,48 @@ +# Generated by Django 4.2.16 on 2024-10-29 20:44 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("program", "0118_delete_playlist"), + ] + + operations = [ + migrations.CreateModel( + name="Playlist", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("created_at", models.DateTimeField(auto_now_add=True)), + ("created_by", models.CharField(default="root", max_length=150)), + ("description", models.TextField(blank=True)), + ("playout_mode", models.CharField(blank=True, default="linear", max_length=8)), + ("updated_at", models.DateTimeField(auto_now=True, null=True)), + ("updated_by", models.CharField(blank=True, default="", max_length=150)), + ( + "show", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="playlists", + to="program.show", + ), + ), + ], + options={ + "permissions": [ + ("add__file", "Can add file media-source"), + ("add__import", "Can add import media-source"), + ("add__line", "Can add line media-source"), + ("add__m3ufile", "Can add m3u media-source"), + ("add__stream", "Can add stream media-source"), + ], + }, + ), + ] diff --git a/program/models.py b/program/models.py index 6984ea9a..37520c42 100644 --- a/program/models.py +++ b/program/models.py @@ -563,6 +563,16 @@ class CBA(models.Model): class Playlist(models.Model): + created_at = models.DateTimeField(auto_now_add=True) + created_by = models.CharField(max_length=150, default="root") + description = models.TextField(blank=True) + playout_mode = models.CharField(blank=True, null=False, default="linear", max_length=8) + show = models.ForeignKey( + "Show", null=False, on_delete=models.CASCADE, related_name="playlists" + ) + updated_at = models.DateTimeField(auto_now=True, blank=True, null=True) + updated_by = models.CharField(blank=True, default="", max_length=150) + class Meta: permissions = [ ("add__file", "Can add file media-source"), @@ -572,6 +582,9 @@ class Playlist(models.Model): ("add__stream", "Can add stream media-source"), ] + def __str__(self): + return f"{self.show.name} - {self.description}" if self.description else self.show.name + class ImageAspectRadioField(models.CharField): validators = [ -- GitLab