From da77a5f09a8fab7d00f32c275957050fad24c715 Mon Sep 17 00:00:00 2001 From: Leif Johansson Date: Tue, 22 Feb 2011 13:40:51 +0100 Subject: beautify acl display a bit --- coip/apps/name/views.py | 4 ++-- coip/extensions/templatetags/permdisplay.py | 28 +++++++++++++++++++++++----- coip/multiresponse.py | 2 +- 3 files changed, 26 insertions(+), 8 deletions(-) (limited to 'coip') diff --git a/coip/apps/name/views.py b/coip/apps/name/views.py index aacc67e..dba73c2 100644 --- a/coip/apps/name/views.py +++ b/coip/apps/name/views.py @@ -51,11 +51,11 @@ def add(request,id): parent = get_object_or_404(Name,pk=id) if id: - if not parent.has_permission(request.user,'i'): + if not parent.has_permission(request.user,'w'): return HttpResponseForbidden('You are not allowed to create names under '+parent) else: if not request.user.admin: - return HttpResponseForbidden('You are not allowed to create names') + return HttpResponseForbidden('You are not allowed to create names in the root') if request.method == 'POST': name = Name(parent=parent,creator=request.user) diff --git a/coip/extensions/templatetags/permdisplay.py b/coip/extensions/templatetags/permdisplay.py index a2b347d..364544e 100644 --- a/coip/extensions/templatetags/permdisplay.py +++ b/coip/extensions/templatetags/permdisplay.py @@ -1,4 +1,7 @@ from django import template +from coip.extensions.templatetags.userdisplay import userdisplay +from string import split +from django.contrib.auth.models import User register = template.Library() @@ -8,14 +11,29 @@ MOMENT = 120 # duration in seconds within which the time difference perms = {'r':'read', 'w':'write', 'd':'delete', - 'i':'insert', - 'l':'list'} + 'i':'manage members', + 'l':'list members'} def permdisplay(perm): if perm: - return "can %s" % (' '.join([perms[p] for p in perm])) + return "can %s" % (', '.join([perms[p] for p in perm])) else: return "can do nothing" - + permdisplay.is_safe = True -register.filter(permdisplay) \ No newline at end of file +register.filter(permdisplay) + +def acldstdisplay(dst): + if dst.display.startswith("user:"): + (pfx,username) = split(dst.display,":",1) + user = User.objects.get(username=username) + if user: + return userdisplay(user) + else: + return "Unknown user \"%s\"" % username + else: + return "Members of %s" % (dst.display,dst.id,dst.short) + + +acldstdisplay.is_safe = True +register.filter(acldstdisplay) \ No newline at end of file diff --git a/coip/multiresponse.py b/coip/multiresponse.py index b3482d0..3831a21 100644 --- a/coip/multiresponse.py +++ b/coip/multiresponse.py @@ -34,7 +34,7 @@ def make_response_dict(request,d={}): name = d['name'] if name: d['render'] = {'delete': name.has_permission(request.user,'d'), - 'insert': name.has_permission(request.user,'i'), + 'insert': name.has_permission(request.user,'w'), 'edit': name.has_permission(request.user,'w'), 'invite': name.has_permission(request.user,'i'), 'up': (name.parent and name.parent.has_permission(request.user,'r')) or not name.parent} -- cgit v1.1