From fc10f1fcfdff57a9250ef18daf761d8784be92da Mon Sep 17 00:00:00 2001 From: Leif Johansson Date: Fri, 3 Dec 2010 23:20:31 +0100 Subject: coip wsgi driver --- coip/apps/name/views.py | 52 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) (limited to 'coip/apps/name/views.py') diff --git a/coip/apps/name/views.py b/coip/apps/name/views.py index bde9954..47f06d0 100644 --- a/coip/apps/name/views.py +++ b/coip/apps/name/views.py @@ -3,15 +3,17 @@ Created on Jul 6, 2010 @author: leifj ''' -from coip.apps.name.models import Name, lookup, traverse +from coip.apps.name.models import Name, lookup, traverse, NameLink from django.core.exceptions import ObjectDoesNotExist from django.http import HttpResponseNotFound, HttpResponseForbidden,\ HttpResponseRedirect, Http404 from django.contrib.auth.decorators import login_required from coip.multiresponse import respond_to, json_response, render403 from pprint import pprint -from coip.apps.name.forms import NameEditForm, NewNameForm, NameDeleteForm +from coip.apps.name.forms import NameEditForm, NewNameForm, NameDeleteForm,\ + PermissionForm from twisted.python.reflect import ObjectNotFound +from django.shortcuts import get_object_or_404 @login_required def delete(request,id): @@ -99,6 +101,52 @@ def edit(request,id): @login_required +def editacl(request,id,type): + name = get_object_or_404(Name,pk=id) + + if not name.has_permission(request.user,'w'): + return render403("You do not have permission to change permissions on %s" % (name)) + + if request.method == 'POST': + form = PermissionForm(request.POST) + if form.is_valid(): + dstid = form.cleaned_data['dst'] + dst = get_object_or_404(Name,pk=dstid) + p = form.cleaned_data['permissions'] + if not p: + p = [] + perms = p.join('') + link = NameLink.objects.get_or_create(src=name,dst=dst,type=NameLink.access_control) + link.data = perms + link.save() + + form = PermissionForm() + return respond_to(request,{'text/html': 'apps/name/acls.html'},{'form': form, 'name': name, 'acl': name.lsacl(),'formtitle': 'Add Permission','submitname':'Add'}) + +@login_required +def links(request,id,type=NameLink.access_control): + name = get_object_or_404(Name,pk=id) + if not name.has_permission(request.user,'r'): + return render403("You do not have permission to list name links from %s" % (name)) + + links = name.links.filter(type=type).all + return respond_to(request,{'text/html': 'apps/name/links.html', + 'application/json': json_response(links)}, + {'name': name, 'links': links}) + + +@login_required +def removelink(request,id): + link = get_object_or_404(NameLink,pk=id) + name = link.src + type = link.type + if not name.has_permission(request.user,'w'): + return render403("You do not have permission to remove name links from %s" % (name)) + + link.delete() + return HttpResponseRedirect("/name/{{name.id}}/link/{{type}}") + +@login_required def show_root(request): return respond_to(request, {'text/html': 'apps/name/name.html'}, -- cgit v1.1