summaryrefslogtreecommitdiff
path: root/coip/apps/name/views.py
diff options
context:
space:
mode:
authorLeif Johansson <leifj@sunet.se>2010-12-03 23:20:31 +0100
committerLeif Johansson <leifj@sunet.se>2010-12-03 23:20:31 +0100
commitfc10f1fcfdff57a9250ef18daf761d8784be92da (patch)
tree8e355c1bf983c8257e283a02b69243a7fb0d8de0 /coip/apps/name/views.py
parentf554f07fe2f4a9d7591bc9ff89e49a160d4eca78 (diff)
coip wsgi driver
Diffstat (limited to 'coip/apps/name/views.py')
-rw-r--r--coip/apps/name/views.py52
1 files changed, 50 insertions, 2 deletions
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'},