lib.itmens/catalog/models.py

103 lines
2.8 KiB
Python
Raw Normal View History

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,
2023-08-11 01:43:19 -04:00
IdType,
Item,
ItemCategory,
2023-08-11 01:43:19 -04:00
ItemInSchema,
ItemSchema,
2023-08-11 01:43:19 -04:00
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
2023-06-06 13:21:27 -04:00
from .performance.models import (
Performance,
PerformanceProduction,
PerformanceProductionSchema,
PerformanceSchema,
2023-06-06 13:21:27 -04:00
)
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
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",
# 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()}")