From bd6fbd16c620967f9ab5371b171f3b3a622ff587 Mon Sep 17 00:00:00 2001 From: Hangzhi Yu <hangzhi@protonmail.com> Date: Thu, 4 Feb 2021 11:01:11 +0100 Subject: [PATCH] Add new model for global permissions --- aleksis/core/migrations/0001_initial.py | 4 ---- aleksis/core/mixins.py | 10 ++++++++++ aleksis/core/models.py | 12 ++++++++---- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/aleksis/core/migrations/0001_initial.py b/aleksis/core/migrations/0001_initial.py index 9999e1a66..bdfa9da40 100644 --- a/aleksis/core/migrations/0001_initial.py +++ b/aleksis/core/migrations/0001_initial.py @@ -26,15 +26,11 @@ class Migration(migrations.Migration): name='GlobalPermissions', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('extended_data', django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False)), ], options={ 'permissions': (('view_system_status', 'Can view system status'), ('link_persons_accounts', 'Can link persons to accounts'), ('manage_data', 'Can manage data'), ('impersonate', 'Can impersonate'), ('search', 'Can use search'), ('change_site_preferences', 'Can change site preferences'), ('change_person_preferences', 'Can change person preferences'), ('change_group_preferences', 'Can change group preferences')), 'managed': False, }, - managers=[ - ('objects', django.contrib.sites.managers.CurrentSiteManager()), - ], ), migrations.CreateModel( name='AdditionalField', diff --git a/aleksis/core/mixins.py b/aleksis/core/mixins.py index e44caa020..c91887a22 100644 --- a/aleksis/core/mixins.py +++ b/aleksis/core/mixins.py @@ -283,6 +283,16 @@ class PureDjangoModel(object): pass +class GlobalPermissionModel(models.Model): + """Base model for global permissions. + + This base model ensures that global permissions are not managed.""" + + class Meta: + abstract = True + managed = False + + class _ExtensibleFormMetaclass(ModelFormMetaclass): def __new__(cls, name, bases, dct): x = super().__new__(cls, name, bases, dct) diff --git a/aleksis/core/models.py b/aleksis/core/models.py index 8927844a4..2d3020d13 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -34,7 +34,12 @@ from .managers import ( GroupQuerySet, SchoolTermQuerySet, ) -from .mixins import ExtensibleModel, PureDjangoModel, SchoolTermRelatedExtensibleModel +from .mixins import ( + ExtensibleModel, + GlobalPermissionModel, + PureDjangoModel, + SchoolTermRelatedExtensibleModel, +) from .tasks import send_notification from .util.core_helpers import get_site_preferences, now_tomorrow from .util.model_helpers import ICONS @@ -820,11 +825,10 @@ class GroupType(ExtensibleModel): verbose_name_plural = _("Group types") -class GlobalPermissions(ExtensibleModel): +class GlobalPermissions(GlobalPermissionModel): """Container for global permissions.""" - class Meta: - managed = False + class Meta(GlobalPermissionModel.Meta): permissions = ( ("view_system_status", _("Can view system status")), ("link_persons_accounts", _("Can link persons to accounts")), -- GitLab