lib.itmens/catalog/movie/models.py

134 lines
3.9 KiB
Python
Raw Normal View History

from catalog.common import *
2022-12-15 17:29:35 -05:00
from django.utils.translation import gettext_lazy as _
from django.db import models
class Movie(Item):
2022-12-11 23:20:28 +00:00
category = ItemCategory.Movie
2022-12-29 23:57:02 -05:00
url_path = "movie"
imdb = PrimaryLookupIdDescriptor(IdType.IMDB)
tmdb_movie = PrimaryLookupIdDescriptor(IdType.TMDB_Movie)
douban_movie = PrimaryLookupIdDescriptor(IdType.DoubanMovie)
2022-12-29 23:57:02 -05:00
demonstrative = _("这部电影")
2022-12-15 17:29:35 -05:00
METADATA_COPY_LIST = [
2022-12-29 23:57:02 -05:00
"title",
"orig_title",
"other_title",
"director",
"playwright",
"actor",
"genre",
"showtime",
"site",
"area",
"language",
"year",
"duration",
2023-01-05 03:06:13 -05:00
# "season_number",
# "episodes",
# "single_episode_length",
2022-12-29 23:57:02 -05:00
"brief",
2022-12-15 17:29:35 -05:00
]
2022-12-29 23:57:02 -05:00
orig_title = jsondata.CharField(
2023-01-05 03:06:13 -05:00
verbose_name=_("原始标题"), blank=True, default="", max_length=500
2022-12-29 23:57:02 -05:00
)
other_title = jsondata.ArrayField(
2023-01-05 03:06:13 -05:00
base_field=models.CharField(blank=True, default="", max_length=500),
verbose_name=_("其他标题"),
2022-12-29 23:57:02 -05:00
null=True,
blank=True,
default=list,
)
director = jsondata.ArrayField(
2023-01-05 03:06:13 -05:00
verbose_name=_("导演"),
base_field=models.CharField(blank=True, default="", max_length=200),
2022-12-29 23:57:02 -05:00
null=True,
blank=True,
default=list,
)
playwright = jsondata.ArrayField(
2023-01-05 03:06:13 -05:00
verbose_name=_("编剧"),
base_field=models.CharField(blank=True, default="", max_length=200),
2022-12-29 23:57:02 -05:00
null=True,
blank=True,
default=list,
)
actor = jsondata.ArrayField(
2023-01-05 03:06:13 -05:00
verbose_name=_("演员"),
base_field=models.CharField(blank=True, default="", max_length=200),
2022-12-29 23:57:02 -05:00
null=True,
blank=True,
default=list,
)
genre = jsondata.ArrayField(
2023-01-05 03:06:13 -05:00
verbose_name=_("类型"),
base_field=models.CharField(blank=True, default="", max_length=50),
2022-12-29 23:57:02 -05:00
null=True,
blank=True,
default=list,
) # , choices=MovieGenreEnum.choices
2023-01-05 03:06:13 -05:00
showtime = jsondata.JSONField(
_("上映日期"),
2022-12-29 23:57:02 -05:00
null=True,
blank=True,
default=list,
)
2023-01-05 03:06:13 -05:00
site = jsondata.URLField(
verbose_name=_("官方网站"), blank=True, default="", max_length=200
)
2022-12-29 23:57:02 -05:00
area = jsondata.ArrayField(
2023-01-05 03:06:13 -05:00
verbose_name=_("国家地区"),
base_field=models.CharField(
2022-12-29 23:57:02 -05:00
blank=True,
default="",
max_length=100,
),
null=True,
blank=True,
default=list,
)
language = jsondata.ArrayField(
2023-01-05 03:06:13 -05:00
verbose_name=_("语言"),
base_field=models.CharField(
2022-12-29 23:57:02 -05:00
blank=True,
default="",
max_length=100,
),
null=True,
blank=True,
default=list,
)
2023-01-05 03:06:13 -05:00
year = jsondata.IntegerField(verbose_name=_("年份"), null=True, blank=True)
duration = jsondata.CharField(
verbose_name=_("片长"), blank=True, default="", max_length=200
)
season_number = jsondata.IntegerField(
null=True, blank=True
) # TODO remove after migration
episodes = jsondata.IntegerField(
null=True, blank=True
) # TODO remove after migration
single_episode_length = jsondata.IntegerField(
null=True, blank=True
) # TODO remove after migration
@classmethod
def lookup_id_type_choices(cls):
id_types = [
IdType.IMDB,
IdType.TMDB_Movie,
IdType.DoubanMovie,
IdType.Bangumi,
]
return [(i.value, i.label) for i in id_types]
@classmethod
def lookup_id_cleanup(cls, lookup_id_type, lookup_id_value):
if lookup_id_type == IdType.IMDB.value and lookup_id_value:
if lookup_id_value[:2] == "tt":
return lookup_id_type, lookup_id_value
else:
return None, None
return super().lookup_id_cleanup(lookup_id_type, lookup_id_value)