Fix bug when checking for add_group permission
authorverrierj
Fri, 16 Dec 2011 16:18:25 +0100
changeset 290 e1980a7d4b83
parent 289 f78273a17bb3
child 291 bd1c08c872ac
Fix bug when checking for add_group permission
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/groups.html
src/ldt/ldt/ldt_utils/views.py
src/ldt/ldt/security/utils.py
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/groups.html	Fri Dec 16 14:47:18 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/groups.html	Fri Dec 16 16:18:25 2011 +0100
@@ -86,7 +86,7 @@
 	    <div class="span-12 last titlediv" >
 			<div class="span-8 projectscontentstitle">{% trans "My groups" %}</div>
 			<div class="span-4 last searchfielddiv" >
-				{% if perms.auth.add_group %}
+				{% if can_add_group %}
 				<a class="create_group" href="{% url ldt.ldt_utils.views.create_group %}"><img class='icon_title' src="{{LDT_MEDIA_PREFIX}}img/film_add.png" alt="{% trans 'Create group' %}" title="{% trans 'Create group' %}" /></a>
 				{% endif %}
 			</div>
--- a/src/ldt/ldt/ldt_utils/views.py	Fri Dec 16 14:47:18 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/views.py	Fri Dec 16 16:18:25 2011 +0100
@@ -67,20 +67,17 @@
 
     # get list of all published projects
     group_list = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME)
-    checker = get_cached_checker(request.user)
     
-    group_list = sorted(group_list.all(), key=lambda group: group.name.lower())
-    
-    for group in group_list:
-        if checker.has_perm('change_group', group):
-            group.change = True
+    group_list = sorted(group_list.all(), key=lambda group: group.name.lower())    
+    group_list = add_change_attr(request.user, group_list)
 
+    can_add_group = True if request.user.user_permissions.filter(codename='add_group') else False
     is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
-    
     # render list
     return render_to_response("ldt/ldt_utils/groups.html",
                               {'groups': group_list,
-                               'is_gecko': is_gecko},
+                               'is_gecko': is_gecko,
+                               'can_add_group': can_add_group},
                               context_instance=RequestContext(request))
 
 
@@ -231,11 +228,8 @@
         
     group_list = group_list.exclude(name=settings.PUBLIC_GROUP_NAME)
     group_list = sorted(group_list.all(), key=lambda group: group.name.lower())
-    checker = get_cached_checker(request.user)
-    for g in group_list:
-        if checker.has_perm('change_group', g):
-            g.change = True
-        
+    group_list = add_change_attr(request.user, group_list)
+    
     return render_to_response("ldt/ldt_utils/partial/groupslist.html",
                               {'groups': group_list},
                               context_instance=RequestContext(request))
@@ -1287,7 +1281,7 @@
 
 @login_required
 def create_group(request):
-    if not request.user.has_perm('auth.add_group'):
+    if not request.user.user_permissions.filter(codename='add_group'):
         return HttpResponseServerError('<h1>User %s can not create a group.</h1>' % request.user.username)
 
     form_status = ''
--- a/src/ldt/ldt/security/utils.py	Fri Dec 16 14:47:18 2011 +0100
+++ b/src/ldt/ldt/security/utils.py	Fri Dec 16 16:18:25 2011 +0100
@@ -102,7 +102,7 @@
     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]:
+    if model_name in [cls_name.lower() for cls_name in settings.USE_GROUP_PERMISSIONS] or model_name == 'group':
         to_check = True
         change_list = get_objects_for_user(user, '%s.change_%s' % (cls._meta.app_label, model_name))
     else: