Edit zone form
parent
a2cb50c674
commit
14581195a4
|
@ -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'
|
||||
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):
|
||||
|
|
|
@ -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 %}
|
||||
<li><a href="{{ url('/zones/') }}">Zones</a></li>
|
||||
<li class="current"><a href="{{ url('/zones/') }}{{ zone.name }}">{{ zone.name }}</a></li>
|
||||
{%- endblock %}
|
|
@ -1,74 +1,8 @@
|
|||
{#- vim: set sw=2 ts=2 sts=2 et : -#}
|
||||
{% set page_title = 'New Zone' %}
|
||||
{% extends 'base.html.j2' %}
|
||||
{% set zone = None %}
|
||||
{% extends 'zone-form.html.j2' %}
|
||||
{%- block breadcrumbs %}
|
||||
<li><a href="{{ url('/zones/') }}">Zones</a></li>
|
||||
<li class="current"><a href="{{ url('/zones/') }}?new">New Zone</a></li>
|
||||
{%- endblock %}
|
||||
{% block body -%}
|
||||
<form method="post">
|
||||
{% set domain_regex = '(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\\.)+[a-zA-Z]{2,63}$)' %}
|
||||
{% set fqdn_regex = '(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\\.)+[a-zA-Z]{2,63}\\.?$)' %}
|
||||
<div class="row">
|
||||
<div class="columns">
|
||||
<label>Name:
|
||||
<input type="text" name="name" required="requred"
|
||||
pattern="{{ domain_regex }}" placeholder="example.com"
|
||||
x-moz-errormessage="Please enter a valid DNS domain name." />
|
||||
</label>
|
||||
</div>
|
||||
<div class="medium-4 columns">
|
||||
<label>Contact:
|
||||
<input type="text" name="contact" required="required"
|
||||
pattern="{{ fqdn_regex }}" placeholder="hostmaster.example.com."
|
||||
x-moz-errormessage="Please enter a valid fully-qualified DNS domain name." />
|
||||
</label>
|
||||
</div>
|
||||
<div class="medium-4 columns">
|
||||
<label>Source:
|
||||
<input type="text" name="source" required="requred"
|
||||
pattern="{{ fqdn_regex }}" placeholder="ns1.example.com."
|
||||
x-moz-errormessage="Please enter a valid fully-qualified DNS domain name." />
|
||||
</label>
|
||||
</div>
|
||||
<div class="medium-4 columns">
|
||||
<label>Serial:
|
||||
<input type="number" name="serial" placeholder="1024" />
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-2 medium-4 columns">
|
||||
<label><abbr title="Time To Live">TTL</abbr>:
|
||||
<input type="number" name="ttl" placeholder="3600" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-2 medium-4 columns">
|
||||
<label>Refresh Interval:
|
||||
<input type="number" name="refresh" placeholder="900" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-2 medium-4 columns">
|
||||
<label>Retry Interval:
|
||||
<input type="number" name="retry" placeholder="600" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-2 medium-4 columns">
|
||||
<label>Expiry Time:
|
||||
<input type="number" name="expire" placeholder="86400" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-3 medium-4 columns">
|
||||
<label>Minumum (default) <abbr title="Time To Live">TTL</abbr>:
|
||||
<input type="number" name="minimum" placeholder="3600" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-1 medium-4 columns"></div>
|
||||
</div>
|
||||
<div class="row text-right">
|
||||
<div class="columns">
|
||||
<button class="small button" type="submit">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
{#- vim: set sw=2 ts=2 sts=2 et : -#}
|
||||
{% extends 'base.html.j2' %}
|
||||
{% block body -%}
|
||||
<form method="post">
|
||||
{% set domain_regex = '(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\\.)+[a-zA-Z]{2,63}$)' %}
|
||||
{% set fqdn_regex = '(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\\.)+[a-zA-Z]{2,63}\\.?$)' %}
|
||||
<div class="row">
|
||||
<div class="columns">
|
||||
<label>Name:
|
||||
<input type="text" name="name" required="requred"
|
||||
pattern="{{ domain_regex }}" placeholder="example.com"
|
||||
{%- if zone %} disabled="disabled"{% endif %}
|
||||
x-moz-errormessage="Please enter a valid DNS domain name." />
|
||||
</label>
|
||||
</div>
|
||||
<div class="medium-4 columns">
|
||||
<label>Contact:
|
||||
<input type="text" name="contact" required="required"
|
||||
pattern="{{ fqdn_regex }}" placeholder="hostmaster.example.com."
|
||||
{%- if zone %}
|
||||
value="{{ zone.contact }}"
|
||||
{%- endif %}
|
||||
x-moz-errormessage="Please enter a valid fully-qualified DNS domain name." />
|
||||
</label>
|
||||
</div>
|
||||
<div class="medium-4 columns">
|
||||
<label>Source:
|
||||
<input type="text" name="source" required="requred"
|
||||
pattern="{{ fqdn_regex }}" placeholder="ns1.example.com."
|
||||
{%- if zone %}
|
||||
value="{{ zone.source }}"
|
||||
{%- endif %}
|
||||
x-moz-errormessage="Please enter a valid fully-qualified DNS domain name." />
|
||||
</label>
|
||||
</div>
|
||||
<div class="medium-4 columns">
|
||||
<label>Serial:
|
||||
<input type="number" name="serial"
|
||||
{%- if zone %}
|
||||
value="{{ zone.serial }}"
|
||||
{%- endif %}
|
||||
placeholder="1024" />
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-2 medium-4 columns">
|
||||
<label><abbr title="Time To Live">TTL</abbr>:
|
||||
<input type="number" name="ttl"
|
||||
{%- if zone %}
|
||||
value="{{ zone.ttl }}"
|
||||
{%- endif %}
|
||||
placeholder="3600" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-2 medium-4 columns">
|
||||
<label>Refresh Interval:
|
||||
<input type="number" name="refresh"
|
||||
{%- if zone %}
|
||||
value="{{ zone.refresh }}"
|
||||
{%- endif %}
|
||||
placeholder="900" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-2 medium-4 columns">
|
||||
<label>Retry Interval:
|
||||
<input type="number" name="retry"
|
||||
{%- if zone %}
|
||||
value="{{ zone.retry }}"
|
||||
{%- endif %}
|
||||
placeholder="600" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-2 medium-4 columns">
|
||||
<label>Expiry Time:
|
||||
<input type="number" name="expire"
|
||||
{%- if zone %}
|
||||
value="{{ zone.expire }}"
|
||||
{%- endif %}
|
||||
placeholder="86400" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-3 medium-4 columns">
|
||||
<label>Minumum (default) <abbr title="Time To Live">TTL</abbr>:
|
||||
<input type="number" name="minimum"
|
||||
{%- if zone %}
|
||||
value="{{ zone.minimum }}"
|
||||
{%- endif %}
|
||||
placeholder="3600" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-1 medium-4 columns"></div>
|
||||
</div>
|
||||
<div class="row text-right">
|
||||
<div class="columns">
|
||||
<button class="small button" type="submit"
|
||||
{%- if zone %} name="_method" value="PUT"{% endif %}>Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
|
@ -11,6 +11,7 @@
|
|||
<div class="columns">
|
||||
<button class="tiny alert button" type="submit" name="_method" value="DELETE">
|
||||
Delete</button>
|
||||
<a class="tiny button" href="?edit">Edit</a>
|
||||
</div>
|
||||
</form>
|
||||
<div class="medium-6 columns">
|
||||
|
|
Reference in New Issue