summaryrefslogtreecommitdiff
path: root/coip
diff options
context:
space:
mode:
Diffstat (limited to 'coip')
-rw-r--r--coip/apps/name/forms.py7
-rw-r--r--coip/apps/name/views.py34
-rw-r--r--coip/urls.py3
3 files changed, 39 insertions, 5 deletions
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()
diff --git a/coip/urls.py b/coip/urls.py
index 87b8c54..af60b15 100644
--- a/coip/urls.py
+++ b/coip/urls.py
@@ -26,8 +26,9 @@ urlpatterns = patterns('',
(r'^user/home$', 'coip.apps.userprofile.views.home'),
# Names
(r'^name/id/(?P<id>[0-9]+)$', 'coip.apps.name.views.show_by_id'),
- (r'^name/(?P<name>[^0-9\/]+)$', 'coip.apps.name.views.show_by_name'),
+ (r'^name/(?P<name>[^0-9\/]+)$', 'coip.apps.name.views.show_by_name'),
(r'^name$', 'coip.apps.name.views.show_by_name'),
+ (r'^name/edit/id/(?P<id>[0-9]+)$', 'coip.apps.name.views.edit'),
# JSON Tree
(r'^ctree.json$', 'coip.apps.name.views.ctree'),
(r'^ctree/(?P<id>[0-9]+).json$', 'coip.apps.name.views.ctree'),