# 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')}, }, ), ]