diff --git a/mayan/apps/permissions/classes.py b/mayan/apps/permissions/classes.py index 032074fe5d..7efd242920 100644 --- a/mayan/apps/permissions/classes.py +++ b/mayan/apps/permissions/classes.py @@ -5,6 +5,7 @@ import logging from django.core.exceptions import PermissionDenied from django.utils.translation import ugettext_lazy as _ +from .exceptions import InvalidNamespace from .models import StoredPermission logger = logging.getLogger(__name__) @@ -19,7 +20,10 @@ class PermissionNamespace(object): @classmethod def get(cls, name): - return cls._registry[name] + try: + return cls._registry[name] + except KeyError: + raise InvalidNamespace('Invalid namespace name. This is probably an obsolete permission namespace, execute the management command "purge_permissions" and try again.') def __init__(self, name, label): self.name = name diff --git a/mayan/apps/permissions/exceptions.py b/mayan/apps/permissions/exceptions.py new file mode 100644 index 0000000000..d55e89a704 --- /dev/null +++ b/mayan/apps/permissions/exceptions.py @@ -0,0 +1,9 @@ +from __future__ import unicode_literals + + +class PermissionError(Exception): + pass + + +class InvalidNamespace(PermissionError): + pass