Skip to content
Snippets Groups Projects
Verified Commit 42eedc00 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Introduce a ExtensiblePolymorphicModel

parent 9a55dd98
No related branches found
No related tags found
1 merge request!701Introduce an ExtensiblePolymorphicModel
Pipeline #25557 passed with warnings
......@@ -13,6 +13,7 @@ Added
~~~~~
* Allow apps to dynamically generate OAuth scopes
* Provide a ``ExtensiblePolymorphicModel`` to support the features of extensible models for polymorphic models and vice-versa.
Removed
~~~~~~~
......
......@@ -120,3 +120,7 @@ class InstalledWidgetsDashboardWidgetOrderManager(Manager):
# [obj["id"] for obj in list(Person.objects.all().values("id"))]
return super().get_queryset().filter(widget_id__in=dashboard_widget_pks)
class PolymorphicCurrentSiteManager(_CurrentSiteManager, PolymorphicManager):
"""Default manager for extensible, polymorphic models."""
......@@ -24,9 +24,16 @@ from guardian.admin import GuardedModelAdmin
from guardian.core import ObjectPermissionChecker
from jsonstore.fields import IntegerField, JSONFieldMixin
from material.base import Layout, LayoutNode
from polymorphic.base import PolymorphicModelBase
from polymorphic.managers import PolymorphicManager
from polymorphic.models import PolymorphicModel
from rules.contrib.admin import ObjectPermissionsModelAdmin
from aleksis.core.managers import CurrentSiteManagerWithoutMigrations, SchoolTermRelatedQuerySet
from aleksis.core.managers import (
CurrentSiteManagerWithoutMigrations,
PolymorphicCurrentSiteManager,
SchoolTermRelatedQuerySet,
)
class _ExtensibleModelBase(models.base.ModelBase):
......@@ -351,6 +358,22 @@ class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase):
abstract = True
class _ExtensiblePolymorphicModelBase(_ExtensibleModelBase, PolymorphicModelBase):
"""Base class for extensible, polymorphic models."""
class ExtensiblePolymorphicModel(
ExtensibleModel, PolymorphicModel, metaclass=_ExtensiblePolymorphicModelBase
):
"""Model class for extensible, polymorphic models."""
objects = PolymorphicCurrentSiteManager()
objects_all_sites = PolymorphicManager()
class Meta:
abstract = True
class PureDjangoModel(object):
"""No-op mixin to mark a model as deliberately not using ExtensibleModel."""
......
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