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

Fix behaviour of meta class and rename to django naming scheme

parent b51fa5d1
No related branches found
No related tags found
1 merge request!249Add metaclass for model versioning
Pipeline #1961 passed with warnings
...@@ -17,16 +17,23 @@ from material.base import Layout, LayoutNode ...@@ -17,16 +17,23 @@ from material.base import Layout, LayoutNode
from rules.contrib.admin import ObjectPermissionsModelAdmin from rules.contrib.admin import ObjectPermissionsModelAdmin
class ExtensibleModelVersioning(type): class _ExtensibleModelBase(models.ModelBase):
"""Meta class to add django-reversion decorator.""" """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): def __new__(mcls, name, bases, attrs):
if not mcls["Meta"].abstract: mcls = super().__new__(name, bases, attrs)
return reversion.register(super().__new__, (name, bases, attrs))
else: if "Meta" not in attrs or not attrs["Meta"].abstract:
return # Register all non-abstract models with django-reversion
mcls = reversion.register(super().__new__(name, bases, attrs))
class ExtensibleModel(models.Model, metaclass=ExtensibleModelVersioning): 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
......
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