diff --git a/HISTORY.rst b/HISTORY.rst index e256de4ff4..e00fd4b067 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -92,6 +92,8 @@ * Expose Django's LOGOUT_REDIRECT_URL setting. * Move current user views from the common app to the user management app. +* Move the purge permission logic to the StorePermission + manager. 3.1.11 (2019-04-XX) =================== diff --git a/docs/releases/3.2.rst b/docs/releases/3.2.rst index 93514e5b0c..31b74c858b 100644 --- a/docs/releases/3.2.rst +++ b/docs/releases/3.2.rst @@ -124,6 +124,8 @@ Other changes * Expose Django's LOGOUT_REDIRECT_URL setting. * Move current user views from the common app to the user management app. +* Move the purge permission logic to the StorePermission + manager. Removals -------- diff --git a/mayan/apps/permissions/management/commands/purgepermissions.py b/mayan/apps/permissions/management/commands/purgepermissions.py index 7c5dd04270..6d3abc9c5c 100644 --- a/mayan/apps/permissions/management/commands/purgepermissions.py +++ b/mayan/apps/permissions/management/commands/purgepermissions.py @@ -2,7 +2,6 @@ from __future__ import unicode_literals from django.core.management.base import BaseCommand -from ...classes import Permission from ...models import StoredPermission @@ -10,11 +9,4 @@ class Command(BaseCommand): help = 'Remove obsolete permissions from the database' def handle(self, *args, **options): - for permission in StoredPermission.objects.all(): - try: - Permission.get( - pk='{}.{}'.format(permission.namespace, permission.name), - proxy_only=True - ) - except KeyError: - permission.delete() + StoredPermission.objects.purge_obsolete() diff --git a/mayan/apps/permissions/managers.py b/mayan/apps/permissions/managers.py index 3cf9f29e38..600ac9deed 100644 --- a/mayan/apps/permissions/managers.py +++ b/mayan/apps/permissions/managers.py @@ -15,3 +15,10 @@ class RoleManager(models.Manager): class StoredPermissionManager(models.Manager): def get_by_natural_key(self, namespace, name): return self.get(namespace=namespace, name=name) + + def purge_obsolete(self): + for permission in self.all(): + try: + permission.volatile_permission + except KeyError: + permission.delete()