summaryrefslogtreecommitdiff
path: root/ishtar_common/backend.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2015-12-08 02:26:03 +0100
committerÉtienne Loks <etienne.loks@proxience.com>2015-12-08 02:26:03 +0100
commit544cb74d6d49deb73ace116df02716adc5b6a464 (patch)
tree5ea46df7c455810a61d3e278a80d6259c645a286 /ishtar_common/backend.py
parent35a972ad5de7aa8191da0463457255b868258ec9 (diff)
downloadIshtar-544cb74d6d49deb73ace116df02716adc5b6a464.tar.bz2
Ishtar-544cb74d6d49deb73ace116df02716adc5b6a464.zip
Use cache for faster rights checking
Diffstat (limited to 'ishtar_common/backend.py')
-rw-r--r--ishtar_common/backend.py18
1 files changed, 7 insertions, 11 deletions
diff --git a/ishtar_common/backend.py b/ishtar_common/backend.py
index 7ebdab221..0febd61b2 100644
--- a/ishtar_common/backend.py
+++ b/ishtar_common/backend.py
@@ -21,22 +21,18 @@
Permission backend to manage "own" objects
"""
-from django.conf import settings
-from django.contrib.auth.models import User
+from django.contrib.auth.backends import ModelBackend
from django.core.exceptions import ObjectDoesNotExist
from django.db.models.loading import cache
import models
-class ObjectPermBackend(object):
+
+class ObjectPermBackend(ModelBackend):
supports_object_permissions = True
supports_anonymous_user = True
- def authenticate(self, username, password):
- # managed by the default backend
- return None
-
- def has_perm(self, user_obj, perm, model=None, obj=None):
+ def has_perm(self, user_obj, perm, model=None, obj=None, session=None):
if not user_obj.is_authenticated():
return False
if not model:
@@ -50,10 +46,10 @@ class ObjectPermBackend(object):
is_ownperm = perm.split('.')[-1].split('_')[1] == 'own'
except IndexError:
is_ownperm = False
- if ishtar_user.has_right('administrator'):
+ if ishtar_user.has_right('administrator', session=session):
return True
- main_right = ishtar_user.person.has_right(perm) \
- or user_obj.has_perm(perm)
+ main_right = ishtar_user.person.has_right(perm, session=session) \
+ or user_obj.has_perm(perm)
if not main_right or not is_ownperm:
return main_right
if obj is None: