# HG changeset patch # User verrierj # Date 1324043238 -3600 # Node ID f78273a17bb36e5570f748e042261c0d5fade4de # Parent de787ddbca5445d81b42220e84ead852476264d4 Speed up response time when retrieving group projects diff -r de787ddbca54 -r f78273a17bb3 src/ldt/ldt/ldt_utils/views.py --- 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: diff -r de787ddbca54 -r f78273a17bb3 src/ldt/ldt/security/utils.py --- 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