diff --git a/src/dyns/controllers.py b/src/dyns/controllers.py index f1c8def..db9c8ee 100644 --- a/src/dyns/controllers.py +++ b/src/dyns/controllers.py @@ -128,6 +128,8 @@ class ZoneController(BaseController): else: if 'new' in request.GET: tmpl = 'new-record.html.j2' + elif 'edit' in request.GET: + tmpl = 'edit-zone.html.j2' else: tmpl = 'zone.html.j2' response.text = self.render(tmpl, zone=zone) @@ -137,13 +139,22 @@ class ZoneController(BaseController): def PUT(self, request, name): response = request.ResponseClass() - response.content_type = 'application/json' - data = json.loads(request.text) + response.content_type = None + if request.content_type == 'application/x-www-form-urlencoded': + data = dict(request.POST) + elif request.content_type == 'application/json': + data = json.loads(request.text) + else: + raise milla.HTTPUnsupportedMediaType + zone = self.get_zone(name) for k, v in data.items(): assert k != 'records' assert hasattr(zone, k) setattr(zone, k, v) self.session.commit() + if request.want in 'xhtml': + raise milla.HTTPSeeOther(location='/zones/{}'.format(zone.name)) + response.status_int = 204 return response def POST(self, request, name): diff --git a/src/dyns/templates/edit-zone.html.j2 b/src/dyns/templates/edit-zone.html.j2 new file mode 100644 index 0000000..c0ef295 --- /dev/null +++ b/src/dyns/templates/edit-zone.html.j2 @@ -0,0 +1,7 @@ +{#- vim: set sw=2 ts=2 sts=2 et : -#} +{% set page_title = zone.name %} +{% extends 'zone-form.html.j2' %} +{%- block breadcrumbs %} +