From 342cb7d1edb536378f462d6a7757c2f9ccdfe1ea Mon Sep 17 00:00:00 2001 From: Leif Johansson Date: Fri, 9 Jul 2010 00:14:16 +0200 Subject: basic edit view for nodes --- coip/apps/name/forms.py | 7 ++++++- coip/apps/name/views.py | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 4 deletions(-) (limited to 'coip/apps') diff --git a/coip/apps/name/forms.py b/coip/apps/name/forms.py index 0c96480..62c6fb5 100644 --- a/coip/apps/name/forms.py +++ b/coip/apps/name/forms.py @@ -12,4 +12,9 @@ class NameForm(forms.ModelForm): class AttributeForm(forms.ModelForm): class Meta: - model = Attribute \ No newline at end of file + model = Attribute + +class NameEditForm(forms.ModelForm): + class Meta: + model = Name + fields = ['short','description'] \ No newline at end of file diff --git a/coip/apps/name/views.py b/coip/apps/name/views.py index 3152b0d..125060c 100644 --- a/coip/apps/name/views.py +++ b/coip/apps/name/views.py @@ -5,20 +5,48 @@ Created on Jul 6, 2010 ''' from coip.apps.name.models import Name, lookup, traverse from django.core.exceptions import ObjectDoesNotExist -from django.http import HttpResponseNotFound, HttpResponseForbidden +from django.http import HttpResponseNotFound, HttpResponseForbidden,\ + HttpResponseRedirect from django.contrib.auth.decorators import login_required from coip.multiresponse import respond_to, json_response from pprint import pprint +from coip.apps.name.forms import NameEditForm +from twisted.python.reflect import ObjectNotFound + +def edit(request,id): + name = None + try: + name = Name.objects.get(id=id) + except ObjectNotFound: + return HttpResponseNotFound() + + if not name.has_permission(request.user,'#w'): + return HttpResponseForbidden() + + if request.method == 'POST': + form = NameEditForm(request.POST,instance=name) + if form.is_valid(): + form.save() + return HttpResponseRedirect("/name/id/%d" % name.id) + else: + form = NameEditForm(instance=name) + + return respond_to(request,{'text/html': 'apps/name/edit.html'},{'form': form,'name': name}) + def show_root(request): - return respond_to(request, {'text/html': 'apps/name/name.html'}, {'name': None, 'memberships': None, 'children': Name.objects.filter(parent=None)}) + return respond_to(request, + {'text/html': 'apps/name/name.html'}, + {'name': None, 'memberships': None, 'edit': False}) def show(request,name): if not name: return HttpResponseNotFound() if name.has_permission(request.user,'r'): - return respond_to(request, {'text/html': 'apps/name/name.html'}, {'name': name, 'memberships': name.memberships}) + return respond_to(request, + {'text/html': 'apps/name/name.html'}, + {'name': name, 'memberships': name.memberships, 'edit': name.has_permission(request.user,'#w')}) else: return HttpResponseForbidden() -- cgit v1.1