lib.itmens/catalog/models.py

96 lines
2.7 KiB
Python
Raw Normal View History

from .common.models import (
ExternalResource,
Item,
ItemSchema,
item_content_types,
item_categories,
)
2023-02-15 15:45:57 -05:00
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,
2023-06-19 21:32:11 -04:00
TVEpisodeSchema,
2023-02-15 15:45:57 -05:00
)
from .music.models import Album, AlbumSchema, AlbumInSchema
from .game.models import Game, GameSchema, GameInSchema
2023-04-19 22:31:27 -04:00
from .podcast.models import Podcast, PodcastSchema, PodcastInSchema, PodcastEpisode
2023-06-06 13:21:27 -04:00
from .performance.models import (
Performance,
PerformanceProduction,
PerformanceSchema,
PerformanceProductionSchema,
)
2022-12-12 16:46:37 +00:00
from .collection.models import Collection as CatalogCollection
2023-06-03 11:10:48 -04:00
from .search.models import Indexer
2022-12-27 14:52:03 -05:00
from django.contrib.contenttypes.models import ContentType
2022-12-31 17:16:47 -05:00
from django.conf import settings
import logging
2023-06-18 23:13:30 -04:00
from auditlog.registry import auditlog
2022-12-31 17:16:47 -05:00
_logger = logging.getLogger(__name__)
2022-12-31 17:16:47 -05:00
# class Exhibition(Item):
# class Meta:
# proxy = True
# class Fanfic(Item):
# class Meta:
# proxy = True
2022-12-31 17:16:47 -05:00
def init_catalog_search_models():
if settings.DISABLE_MODEL_SIGNAL:
_logger.warn(
"Catalog models are not being indexed with DISABLE_MODEL_SIGNAL configuration"
)
return
2023-06-05 02:04:52 -04:00
# skip indexing if the item type should never show up in search
2022-12-31 17:16:47 -05:00
Indexer.update_model_indexable(Edition)
2023-06-05 02:04:52 -04:00
# Indexer.update_model_indexable(Work)
2022-12-31 17:16:47 -05:00
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)
2023-01-08 22:10:48 -05:00
Indexer.update_model_indexable(Podcast)
Indexer.update_model_indexable(Performance)
2023-06-05 02:04:52 -04:00
# Indexer.update_model_indexable(PerformanceProduction)
2023-01-08 22:10:48 -05:00
# Indexer.update_model_indexable(CatalogCollection)
2023-06-18 23:13:30 -04:00
def init_catalog_audit_log():
for cls in Item.__subclasses__():
auditlog.register(
2023-06-19 00:17:56 -04:00
cls,
2023-06-19 16:37:35 -04:00
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",
],
2023-06-18 23:13:30 -04:00
)
auditlog.register(
ExternalResource, include_fields=["item", "id_type", "id_value", "url"]
)
# _logger.debug(f"Catalog audit log initialized for {item_content_types().values()}")