You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

170 lines
9.2 KiB

# Generated by Django 5.1.8 on 2025-05-06 11:46
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='PodcastCategory',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255, verbose_name='title')),
('slug', models.SlugField(allow_unicode=True, unique=True, verbose_name='slug')),
('status', models.BooleanField(default=True, verbose_name='status')),
('order', models.PositiveIntegerField(default=0, verbose_name='order')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
],
options={
'verbose_name': 'Podcast Category',
'verbose_name_plural': 'Podcast Categories',
'ordering': ['order'],
},
),
migrations.CreateModel(
name='PodcastCollection',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(help_text='This title will not be displayed anywhere', max_length=255)),
('slug', models.SlugField(max_length=255, unique=True)),
('summary', models.CharField(blank=True, help_text='could be null', max_length=512, null=True)),
('pin_top', models.BooleanField(default=True, verbose_name='pin top')),
('thumbnail', models.ImageField(blank=True, help_text='image allowed', null=True, upload_to='podcast/collection/')),
('order', models.IntegerField(default=0, verbose_name='order')),
('status', models.BooleanField(default=True, verbose_name='status')),
('display_position', models.CharField(choices=[('pinned', 'Pinned'), ('middle', 'Middle Section')], default='pinned', max_length=20, verbose_name='Display Position')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
],
options={
'verbose_name': 'Podcast Collection',
'verbose_name_plural': 'Podcasts Collections',
},
),
migrations.CreateModel(
name='PodcastPlaylist',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255, verbose_name='title')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
],
options={
'verbose_name': 'Podcast Playlist',
'verbose_name_plural': 'Podcast Playlists',
},
),
migrations.CreateModel(
name='Podcast',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255, null=True)),
('slug', models.SlugField(allow_unicode=True, unique=True)),
('thumbnail', models.ImageField(blank=True, help_text='image allowed', null=True, upload_to='book_thumbnails/')),
('description', models.TextField(null=True)),
('audio_file', models.FileField(blank=True, null=True, upload_to='podcast/audio/')),
('audio_time', models.TimeField()),
('view_count', models.PositiveBigIntegerField(default=0, verbose_name='view count')),
('download_count', models.PositiveBigIntegerField(default=0, verbose_name='view count')),
('status', models.BooleanField(default=True, verbose_name='status')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
('categories', models.ManyToManyField(related_name='podcasts', to='podcast.podcastcategory', verbose_name='categories')),
],
options={
'verbose_name': 'Podcast',
'verbose_name_plural': 'Podcasts',
},
),
migrations.CreateModel(
name='MiddlePodcastCollection',
fields=[
],
options={
'verbose_name': 'Middle Section Podcast Collection',
'verbose_name_plural': 'Middle Section Podcast Collections',
'proxy': True,
'indexes': [],
'constraints': [],
},
bases=('podcast.podcastcollection',),
),
migrations.CreateModel(
name='PinnedPodcastCollection',
fields=[
],
options={
'verbose_name': 'Pinned Podcast Collection',
'verbose_name_plural': 'Pinned Podcast Collections',
'proxy': True,
'indexes': [],
'constraints': [],
},
bases=('podcast.podcastcollection',),
),
migrations.CreateModel(
name='PodcastInCollection',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('order', models.PositiveIntegerField(default=0, verbose_name='order')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
('collection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='collection_podcasts', to='podcast.podcastcollection', verbose_name='collection')),
('podcast', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='collection_items', to='podcast.podcast', verbose_name='podcast')),
],
options={
'verbose_name': 'Podcast in Collection',
'verbose_name_plural': 'Podcasts in Collections',
'ordering': ['order'],
'unique_together': {('collection', 'podcast')},
},
),
migrations.AddField(
model_name='podcastcollection',
name='podcasts',
field=models.ManyToManyField(related_name='collections', through='podcast.PodcastInCollection', to='podcast.podcast', verbose_name='podcasts'),
),
migrations.CreateModel(
name='PlaylistItem',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('priority', models.PositiveIntegerField(default=0, verbose_name='priority')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
('podcast', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='playlist_appearances', to='podcast.podcast', verbose_name='podcast')),
('playlist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='playlist_items', to='podcast.podcastplaylist', verbose_name='playlist')),
],
options={
'verbose_name': 'Playlist Item',
'verbose_name_plural': 'Playlist Items',
'ordering': ['priority'],
'unique_together': {('playlist', 'podcast')},
},
),
migrations.CreateModel(
name='UserPlaylist',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('status', models.BooleanField(default=True, verbose_name='status')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
('podcast', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_playlists', to='podcast.podcast', verbose_name='podcast')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='podcast_playlists', to=settings.AUTH_USER_MODEL, verbose_name='user')),
],
options={
'verbose_name': 'User Playlist',
'verbose_name_plural': 'User Playlists',
'unique_together': {('user', 'podcast')},
},
),
]