mirror of
https://github.com/barkeser2002/offline-db.git
synced 2026-09-25 02:19:59 +03:00
157 lines
6.8 KiB
Python
157 lines
6.8 KiB
Python
# Generated by Django 5.1.6 on 2026-01-23 18:41
|
|
|
|
import django.db.models.deletion
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('content', '0010_watchparty_max_participants'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='Character',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('mal_id', models.PositiveIntegerField(unique=True, verbose_name='MyAnimeList Character ID')),
|
|
('name', models.CharField(max_length=255)),
|
|
('name_kanji', models.CharField(blank=True, max_length=255)),
|
|
('image_url', models.URLField(blank=True, null=True)),
|
|
('about', models.TextField(blank=True)),
|
|
],
|
|
options={
|
|
'verbose_name': 'Character',
|
|
'verbose_name_plural': 'Characters',
|
|
'ordering': ['name'],
|
|
},
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='anime',
|
|
options={'ordering': ['-created_at'], 'verbose_name': 'Anime', 'verbose_name_plural': 'Animes'},
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='aired_from',
|
|
field=models.DateField(blank=True, null=True),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='aired_to',
|
|
field=models.DateField(blank=True, null=True),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='banner_image',
|
|
field=models.URLField(blank=True, null=True, verbose_name='Banner Image'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='duration',
|
|
field=models.CharField(blank=True, help_text="e.g., '24 min per ep'", max_length=50),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='english_title',
|
|
field=models.CharField(blank=True, max_length=255, verbose_name='English Title'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='japanese_title',
|
|
field=models.CharField(blank=True, max_length=255, verbose_name='Japanese Title'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='mal_id',
|
|
field=models.PositiveIntegerField(blank=True, null=True, unique=True, verbose_name='MyAnimeList ID'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='members',
|
|
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='MAL Members'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='popularity',
|
|
field=models.PositiveIntegerField(blank=True, null=True),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='rank',
|
|
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='MAL Rank'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='rating',
|
|
field=models.CharField(blank=True, help_text="e.g., 'PG-13', 'R'", max_length=50),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='score',
|
|
field=models.DecimalField(blank=True, decimal_places=2, max_digits=4, null=True, verbose_name='MAL Score'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='source',
|
|
field=models.CharField(blank=True, help_text='Manga, Light Novel, Original, etc.', max_length=100),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='status',
|
|
field=models.CharField(blank=True, choices=[('Currently Airing', 'Currently Airing'), ('Finished Airing', 'Finished Airing'), ('Not yet aired', 'Not yet aired')], max_length=50),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='studio',
|
|
field=models.CharField(blank=True, max_length=255),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='total_episodes',
|
|
field=models.PositiveIntegerField(blank=True, null=True),
|
|
),
|
|
migrations.AddField(
|
|
model_name='anime',
|
|
name='updated_at',
|
|
field=models.DateTimeField(auto_now=True),
|
|
),
|
|
migrations.CreateModel(
|
|
name='ExternalSource',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('source_type', models.CharField(choices=[('hianime', 'HiAnime'), ('zoro', 'Zoro'), ('gogoanime', 'GogoAnime'), ('other', 'Other')], max_length=50)),
|
|
('embed_url', models.URLField(help_text='Embed/iframe URL')),
|
|
('quality', models.CharField(blank=True, max_length=20)),
|
|
('language', models.CharField(default='sub', help_text='sub or dub', max_length=10)),
|
|
('is_working', models.BooleanField(default=True)),
|
|
('last_checked', models.DateTimeField(auto_now=True)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('episode', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='external_sources', to='content.episode')),
|
|
],
|
|
options={
|
|
'verbose_name': 'External Source',
|
|
'verbose_name_plural': 'External Sources',
|
|
'ordering': ['-created_at'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='AnimeCharacter',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('role', models.CharField(choices=[('Main', 'Main'), ('Supporting', 'Supporting')], default='Supporting', max_length=20)),
|
|
('voice_actor_name', models.CharField(blank=True, max_length=255)),
|
|
('voice_actor_language', models.CharField(blank=True, default='Japanese', max_length=50)),
|
|
('voice_actor_image', models.URLField(blank=True, null=True)),
|
|
('anime', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='anime_characters', to='content.anime')),
|
|
('character', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='anime_appearances', to='content.character')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Anime Character',
|
|
'verbose_name_plural': 'Anime Characters',
|
|
'ordering': ['role', 'character__name'],
|
|
'unique_together': {('anime', 'character')},
|
|
},
|
|
),
|
|
]
|