40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
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)
|