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

Merge branch 'feature/polymorphic-extensible-model' into 'master'

Introduce an ExtensiblePolymorphicModel

See merge request !701
parents 6aadb183 c6a2d812
No related branches found
No related tags found
1 merge request!701Introduce an ExtensiblePolymorphicModel
Pipeline #38139 passed
Pipeline: AlekSIS

#38141

    ......@@ -40,6 +40,7 @@ Added
    * OpenID Connect scope and accompanying claim ``groups``
    * Support config files in JSON format
    * Allow apps to dynamically generate OAuth scopes
    * Provide an ``ExtensiblePolymorphicModel`` to support the features of extensible models for polymorphic models and vice-versa.
    Changed
    ~~~~~~~
    ......
    ......@@ -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