import logging from auditlog.registry import auditlog from django.conf import settings from django.contrib.contenttypes.models import ContentType from .book.models import Edition, EditionInSchema, EditionSchema, Series, Work from .collection.models import Collection as CatalogCollection from .common.models import ( ExternalResource, IdType, Item, ItemCategory, ItemInSchema, ItemSchema, ItemType, SiteName, item_categories, item_content_types, ) from .game.models import Game, GameInSchema, GameSchema from .movie.models import Movie, MovieInSchema, MovieSchema from .music.models import Album, AlbumInSchema, AlbumSchema from .performance.models import ( Performance, PerformanceProduction, PerformanceProductionSchema, PerformanceSchema, ) from .podcast.models import Podcast, PodcastEpisode, PodcastInSchema, PodcastSchema from .tv.models import ( TVEpisode, TVEpisodeSchema, TVSeason, TVSeasonInSchema, TVSeasonSchema, TVShow, TVShowInSchema, TVShowSchema, ) from .search.models import Indexer # isort:skip _logger = logging.getLogger(__name__) # class Exhibition(Item): # class Meta: # proxy = True # class Fanfic(Item): # class Meta: # proxy = True 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) def init_catalog_audit_log(): for cls in Item.__subclasses__(): auditlog.register( cls, exclude_fields=[ "id", "item_ptr", "polymorphic_ctype", "metadata", "created_time", "edited_time", "last_editor", # related fields are not supported in django-auditlog yet "lookup_ids", "external_resources", "merged_from_items", "focused_comments", ], ) auditlog.register( ExternalResource, include_fields=["item", "id_type", "id_value", "url"] ) # _logger.debug(f"Catalog audit log initialized for {item_content_types().values()}")