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, PerformanceSchema, PerformanceProductionSchema, ) 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)