--- a/src/ldt/ldt/security/utils.py Thu Feb 09 11:48:48 2012 +0100
+++ b/src/ldt/ldt/security/utils.py Thu Feb 09 15:13:32 2012 +0100
@@ -1,7 +1,8 @@
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
+from django.core.cache import cache
from guardian.shortcuts import assign, remove_perm, get_users_with_perms, get_groups_with_perms, get_objects_for_user
-from cache import get_cached_userlist
+from cache import get_cached_userlist, cached_assign
from ldt.security import change_security, get_current_user
import types
@@ -75,11 +76,11 @@
old_groups = get_groups_with_perms(object)
for elem in read_list:
- assign('view_%s' % name, elem, object)
+ cached_assign('view_%s' % name, elem, object)
if elem in write_list:
- assign('change_%s' % name, elem, object)
+ cached_assign('change_%s' % name, elem, object)
else:
- remove_perm('change_%s' % name, elem, object)
+ remove_perm('change_%s' % name, elem, object)
def remove_perms(new_list, old_list, obj, name):
for e in old_list:
@@ -88,7 +89,9 @@
remove_perm('change_%s' % name, e, obj)
remove_perms(read_list, old_users, object, name)
- remove_perms(read_list, old_groups, object, name)
+ remove_perms(read_list, old_groups, object, name)
+ cache.delete('userlist')
+
def get_userlist(user, filter=None):
user_list = get_cached_userlist().exclude(id=user.id)