lib.itmens/catalog/models.py
2023-06-05 02:31:12 -04:00

83 lines
2.5 KiB
Python

from .common.models import Item, ItemSchema
from .book.models import Edition, Work, Series, EditionSchema, EditionInSchema
from .movie.models import Movie, MovieSchema, MovieInSchema
from .tv.models import (
TVShow,
TVSeason,
TVEpisode,
TVShowSchema,
TVShowInSchema,
TVSeasonSchema,
TVSeasonInSchema,
)
from .music.models import Album, AlbumSchema, AlbumInSchema
from .game.models import Game, GameSchema, GameInSchema
from .podcast.models import Podcast, PodcastSchema, PodcastInSchema, PodcastEpisode
from .performance.models import Performance, PerformanceProduction
from .collection.models import Collection as CatalogCollection
from .search.models import Indexer
from django.contrib.contenttypes.models import ContentType
from django.conf import settings
import logging
_logger = logging.getLogger(__name__)
# class Exhibition(Item):
# class Meta:
# proxy = True
# class Fanfic(Item):
# class Meta:
# proxy = True
_CATEGORY_LIST = None
_CONTENT_TYPE_LIST = None
def all_content_types():
global _CONTENT_TYPE_LIST
if _CONTENT_TYPE_LIST is None:
_CONTENT_TYPE_LIST = {}
for cls in Item.__subclasses__():
_CONTENT_TYPE_LIST[cls] = ContentType.objects.get(
app_label="catalog", model=cls.__name__.lower()
).id
return _CONTENT_TYPE_LIST
def all_categories():
global _CATEGORY_LIST
if _CATEGORY_LIST is None:
_CATEGORY_LIST = {}
for cls in Item.__subclasses__():
c = getattr(cls, "category", None)
if c not in _CATEGORY_LIST:
_CATEGORY_LIST[c] = [cls]
else:
_CATEGORY_LIST[c].append(cls)
return _CATEGORY_LIST
def init_catalog_search_models():
if settings.DISABLE_MODEL_SIGNAL:
_logger.warn(
"Catalog models are not being indexed with DISABLE_MODEL_SIGNAL configuration"
)
return
# skip indexing if the item type should never show up in search
Indexer.update_model_indexable(Edition)
# Indexer.update_model_indexable(Work)
Indexer.update_model_indexable(Movie)
Indexer.update_model_indexable(TVShow)
Indexer.update_model_indexable(TVSeason)
Indexer.update_model_indexable(Album)
Indexer.update_model_indexable(Game)
Indexer.update_model_indexable(Podcast)
Indexer.update_model_indexable(Performance)
# Indexer.update_model_indexable(PerformanceProduction)
# Indexer.update_model_indexable(CatalogCollection)