diff --git a/aleksis/core/migrations/0001_initial.py b/aleksis/core/migrations/0001_initial.py index 9999e1a6615138251c1745d4e33b3d9d404d0c7b..bdfa9da40471efcbe0b57e7f2c549bfc339d50f5 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 e44caa020bdb6fb1814a3b7e10de95d72915b26b..c91887a2248f4192970f46ed9701b9a8339b126c 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 8927844a47da2f30e030a9b0815e82539940d8ba..2d3020d135edd161ca64512cdd292f40f723e80b 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")),