Initial commit

This commit is contained in:
2023-01-04 17:55:18 -05:00
commit ece9a68165
29 changed files with 3191 additions and 0 deletions

0
videos/__init__.py Normal file
View File

28
videos/admin.py Normal file
View File

@ -0,0 +1,28 @@
from django.contrib import admin
from videos.models import Series, Video
class SeriesAdmin(admin.ModelAdmin):
date_hierarchy = "created"
list_display = ("name", "tagline")
ordering = ("-created",)
class VideoAdmin(admin.ModelAdmin):
date_hierarchy = "created"
list_display = (
"title",
"video_type",
"year",
"tv_series",
"season_number",
"episode_number",
"imdb_id",
)
list_filter = ("year", "tv_series")
ordering = ("-created",)
admin.site.register(Series, SeriesAdmin)
admin.site.register(Video, VideoAdmin)

5
videos/apps.py Normal file
View File

@ -0,0 +1,5 @@
from django.apps import AppConfig
class VideosConfig(AppConfig):
name = 'videos'

View File

@ -0,0 +1,128 @@
# Generated by Django 4.1.5 on 2023-01-04 21:33
from django.db import migrations, models
import django.db.models.deletion
import django_extensions.db.fields
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name='Series',
fields=[
(
'id',
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name='ID',
),
),
(
'created',
django_extensions.db.fields.CreationDateTimeField(
auto_now_add=True, verbose_name='created'
),
),
(
'modified',
django_extensions.db.fields.ModificationDateTimeField(
auto_now=True, verbose_name='modified'
),
),
('name', models.CharField(max_length=255)),
('overview', models.TextField(blank=True, null=True)),
('tagline', models.TextField(blank=True, null=True)),
],
options={
'get_latest_by': 'modified',
'abstract': False,
},
),
migrations.CreateModel(
name='Video',
fields=[
(
'id',
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name='ID',
),
),
(
'created',
django_extensions.db.fields.CreationDateTimeField(
auto_now_add=True, verbose_name='created'
),
),
(
'modified',
django_extensions.db.fields.ModificationDateTimeField(
auto_now=True, verbose_name='modified'
),
),
(
'video_type',
models.CharField(
choices=[
('U', 'Unknown'),
('E', 'TV Episode'),
('M', 'Movie'),
],
default='U',
max_length=1,
),
),
(
'title',
models.CharField(blank=True, max_length=255, null=True),
),
('overview', models.TextField(blank=True, null=True)),
('tagline', models.TextField(blank=True, null=True)),
(
'run_time',
models.CharField(blank=True, max_length=8, null=True),
),
(
'run_time_ticks',
models.BigIntegerField(blank=True, null=True),
),
('year', models.IntegerField()),
('season_number', models.IntegerField(blank=True, null=True)),
('episode_number', models.IntegerField(blank=True, null=True)),
(
'tvdb_id',
models.CharField(blank=True, max_length=20, null=True),
),
(
'imdb_id',
models.CharField(blank=True, max_length=20, null=True),
),
(
'tvrage_id',
models.CharField(blank=True, max_length=20, null=True),
),
(
'tv_series',
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
to='videos.series',
),
),
],
options={
'get_latest_by': 'modified',
'abstract': False,
},
),
]

View File

39
videos/models.py Normal file
View File

@ -0,0 +1,39 @@
from django.db import models
from django_extensions.db.models import TimeStampedModel
from django.utils.translation import gettext_lazy as _
BNULL = {"blank": True, "null": True}
class Series(TimeStampedModel):
name = models.CharField(max_length=255)
overview = models.TextField(**BNULL)
tagline = models.TextField(**BNULL)
class Video(TimeStampedModel):
class VideoType(models.TextChoices):
UNKNOWN = 'U', _('Unknown')
TV_EPISODE = 'E', _('TV Episode')
MOVIE = 'M', _('Movie')
# General fields
video_type = models.CharField(
max_length=1,
choices=VideoType.choices,
default=VideoType.UNKNOWN,
)
title = models.CharField(max_length=255, **BNULL)
overview = models.TextField(**BNULL)
tagline = models.TextField(**BNULL)
run_time = models.CharField(max_length=8, **BNULL)
run_time_ticks = models.BigIntegerField(**BNULL)
year = models.IntegerField()
# TV show specific fields
tv_series = models.ForeignKey(Series, on_delete=models.DO_NOTHING, **BNULL)
season_number = models.IntegerField(**BNULL)
episode_number = models.IntegerField(**BNULL)
tvdb_id = models.CharField(max_length=20, **BNULL)
imdb_id = models.CharField(max_length=20, **BNULL)
tvrage_id = models.CharField(max_length=20, **BNULL)