From 29447f16f467825d37642a00d7c95d1df06563e9 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 29 Jun 2015 17:12:18 -0400 Subject: [PATCH] Add management command to purge obsolete permissions from the database --- docs/releases/2.0.rst | 1 + mayan/apps/permissions/management/__init__.py | 0 .../permissions/management/commands/__init__.py | 0 .../management/commands/purge_permissions.py | 17 +++++++++++++++++ 4 files changed, 18 insertions(+) create mode 100644 mayan/apps/permissions/management/__init__.py create mode 100644 mayan/apps/permissions/management/commands/__init__.py create mode 100644 mayan/apps/permissions/management/commands/purge_permissions.py diff --git a/docs/releases/2.0.rst b/docs/releases/2.0.rst index c665c32112..eeac781210 100644 --- a/docs/releases/2.0.rst +++ b/docs/releases/2.0.rst @@ -85,6 +85,7 @@ Common steps Migrate existing database schema with:: + $ mayan-edms.py purge_permissions $ mayan-edms.py migrate During the migration several messages of stale content types can occur: diff --git a/mayan/apps/permissions/management/__init__.py b/mayan/apps/permissions/management/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mayan/apps/permissions/management/commands/__init__.py b/mayan/apps/permissions/management/commands/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mayan/apps/permissions/management/commands/purge_permissions.py b/mayan/apps/permissions/management/commands/purge_permissions.py new file mode 100644 index 0000000000..b472ea1c0f --- /dev/null +++ b/mayan/apps/permissions/management/commands/purge_permissions.py @@ -0,0 +1,17 @@ +from __future__ import unicode_literals + +from django.core.management.base import BaseCommand + +from ...classes import Permission +from ...models import StoredPermission + + +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': '%s.%s' % (permission.namespace, permission.name)}, proxy_only=True) + except KeyError: + permission.delete()