--- a/src/ldt/ldt/ldt_utils/views.py Fri Dec 16 11:04:02 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/views.py Fri Dec 16 14:47:18 2011 +0100
@@ -172,7 +172,7 @@
else:
project_list = Project.safe_objects.filter(query)
show_username = False
-
+
project_list = add_change_attr(request.user, project_list)
if status == 2:
--- a/src/ldt/ldt/security/utils.py Fri Dec 16 11:04:02 2011 +0100
+++ b/src/ldt/ldt/security/utils.py Fri Dec 16 14:47:18 2011 +0100
@@ -1,7 +1,7 @@
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
-from guardian.shortcuts import assign, remove_perm, get_users_with_perms, get_groups_with_perms
-from cache import get_cached_checker, get_cached_userlist
+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
try:
from threading import local
@@ -89,6 +89,7 @@
return xml
+
def add_change_attr(user, obj_list):
"""
Add a change attribute set to True to objects of obj_list
@@ -100,16 +101,15 @@
model_name = obj_list[0].__class__.__name__.lower()
ctype = ContentType.objects.get(model=model_name)
cls = ctype.model_class()
-
+
if model_name in [cls_name.lower() for cls_name in settings.USE_GROUP_PERMISSIONS]:
- checker = get_cached_checker(user)
+ to_check = True
+ change_list = get_objects_for_user(user, '%s.change_%s' % (cls._meta.app_label, model_name))
else:
- checker = None
-
- perm_name = "%s.change_%s" % (cls._meta.app_label, model_name)
+ to_check = False
for obj in obj_list:
- if not checker or checker.has_perm(perm_name, obj):
+ if not to_check or obj in change_list:
obj.change = True
else:
obj.change = False