From c6ef30da0f55cde20d1d2f50b31adba7e3eee07d Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Mon, 4 May 2020 12:08:30 +0200
Subject: [PATCH] Fix behaviour of meta class and rename to django naming
 scheme

---
 aleksis/core/mixins.py | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/aleksis/core/mixins.py b/aleksis/core/mixins.py
index 2f8093931..e66f113b4 100644
--- a/aleksis/core/mixins.py
+++ b/aleksis/core/mixins.py
@@ -17,16 +17,23 @@ from material.base import Layout, LayoutNode
 from rules.contrib.admin import ObjectPermissionsModelAdmin
 
 
-class ExtensibleModelVersioning(type):
-    """Meta class to add django-reversion decorator."""
+class _ExtensibleModelBase(models.ModelBase):
+    """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):
-        if not mcls["Meta"].abstract:
-            return reversion.register(super().__new__, (name, bases, attrs))
-        else:
-            return 
+        mcls = super().__new__(name, bases, attrs)
+
+        if "Meta" not in attrs or not attrs["Meta"].abstract:
+            # 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.
 
     This base model ensures all objects in AlekSIS apps fulfill the
-- 
GitLab