fixes content type lookups when db is uninitialized #13116

This commit is contained in:
Abhimanyu Saharan 2023-07-07 12:16:19 +05:30 committed by Jeremy Stretch
parent 63c33ff4be
commit bc7678c716

View File

@ -2,6 +2,7 @@ from django.apps import apps
from django.contrib.contenttypes.models import ContentType
from django.contrib.postgres.aggregates import JSONBAgg
from django.db.models import OuterRef, Subquery, Q
from django.db.utils import ProgrammingError
from extras.models.tags import TaggedItem
from utilities.query_functions import EmptyGroupByJSONBAgg
@ -160,7 +161,13 @@ class ObjectChangeQuerySet(RestrictedQuerySet):
def valid_models(self):
# Exclude any change records which refer to an instance of a model that's no longer installed. This
# can happen when a plugin is removed but its data remains in the database, for example.
try:
content_types = ContentType.objects.get_for_models(*apps.get_models()).values()
except ProgrammingError:
# Handle the case where the database schema has not yet been initialized
content_types = ContentType.objects.none()
content_type_ids = set(
ct.pk for ct in ContentType.objects.get_for_models(*apps.get_models()).values()
ct.pk for ct in content_types
)
return self.filter(changed_object_type_id__in=content_type_ids)