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

Merge branch 'fix-model-versioning'

parents 8fd01037 4561d59c
No related branches found
No related tags found
1 merge request!249Add metaclass for model versioning
Pipeline #1963 failed
...@@ -17,8 +17,25 @@ from material.base import Layout, LayoutNode ...@@ -17,8 +17,25 @@ from material.base import Layout, LayoutNode
from rules.contrib.admin import ObjectPermissionsModelAdmin from rules.contrib.admin import ObjectPermissionsModelAdmin
@reversion.register class _ExtensibleModelBase(models.base.ModelBase):
class ExtensibleModel(models.Model): """Ensure predefined behaviour on model creation.
This metaclass serves the following purposes:
- Register all AlekSIS models with django-reverseion
"""
def __new__(mcls, name, bases, attrs):
mcls = super().__new__(mcls, name, bases, attrs)
if "Meta" not in attrs or not attrs["Meta"].abstract:
# Register all non-abstract models with django-reversion
mcls = reversion.register(mcls)
return mcls
class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase):
"""Base model for all objects in AlekSIS apps. """Base model for all objects in AlekSIS apps.
This base model ensures all objects in AlekSIS apps fulfill the This base model ensures all objects in AlekSIS apps fulfill the
...@@ -212,8 +229,8 @@ class PureDjangoModel(object): ...@@ -212,8 +229,8 @@ class PureDjangoModel(object):
class _ExtensibleFormMetaclass(ModelFormMetaclass): class _ExtensibleFormMetaclass(ModelFormMetaclass):
def __new__(cls, mcs, name, bases, dct): def __new__(cls, name, bases, dct):
x = super().__new__(mcs, name, bases, dct) x = super().__new__(cls, name, bases, dct)
# Enforce a default for the base layout for forms that o not specify one # Enforce a default for the base layout for forms that o not specify one
if hasattr(x, "layout"): if hasattr(x, "layout"):
......
...@@ -10,7 +10,6 @@ from django.utils.translation import gettext_lazy as _ ...@@ -10,7 +10,6 @@ from django.utils.translation import gettext_lazy as _
from templated_email import send_templated_mail from templated_email import send_templated_mail
from ..models import Notification
from .core_helpers import lazy_preference from .core_helpers import lazy_preference
try: try:
......
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