Skip to content
Snippets Groups Projects
Verified Commit 4727c5bd authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Add UninstallRenitentPolymorphicManager

This manager uses django-polymorphic's `instance_of` QuerySet method
to filter for models that are known subclasses at the time of execution.
parent 6058124c
No related branches found
No related tags found
1 merge request!477Resolve "Handle broken DashboardWidgets correctly"
......@@ -5,6 +5,7 @@ from django.contrib.sites.managers import CurrentSiteManager as _CurrentSiteMana
from django.db.models import QuerySet
from calendarweek import CalendarWeek
from polymorphic.managers import PolymorphicManager
class CurrentSiteManagerWithoutMigrations(_CurrentSiteManager):
......@@ -91,3 +92,10 @@ class GroupManager(CurrentSiteManagerWithoutMigrations):
class GroupQuerySet(SchoolTermRelatedQuerySet):
pass
class UninstallRenitentPolymorphicManager(PolymorphicManager):
"""A custom manager for django-polymorphic that filters out submodels of unavailable apps."""
def get_queryset(self):
return super().get_queryset().instance_of(*self.model.__subclasses__())
......@@ -35,6 +35,7 @@ from .managers import (
GroupManager,
GroupQuerySet,
SchoolTermQuerySet,
UninstallRenitentPolymorphicManager,
)
from .mixins import (
ExtensibleModel,
......@@ -737,6 +738,8 @@ class DashboardWidget(PolymorphicModel, PureDjangoModel):
)
"""
objects = UninstallRenitentPolymorphicManager()
data_checks = [BrokenDashboardWidgetDataCheck]
@staticmethod
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment