diff --git a/binder/helpers.py b/binder/helpers.py index 34d013e..7605e1c 100644 --- a/binder/helpers.py +++ b/binder/helpers.py @@ -75,8 +75,7 @@ def add_record(form_data): keyring = None response = [] - response.append({ "type" : "Forward Record: %s.%s" % (str(form_data["record_name"]), - str(form_data["zone_name"])), + response.append({ "description" : "Forward Record Added: %(record_name)s.%(zone_name)s" % form_data, "output" : add_forward_record(str(form_data["dns_server"]), str(form_data["zone_name"]), str(form_data["record_name"]), @@ -86,7 +85,7 @@ def add_record(form_data): keyring)}) if form_data["create_reverse"]: - response.append({ "type" : "Reverse Record: %s" % form_data["record_data"], + response.append({ "description" : "Reverse Record Added: %(record_data)s" % form_data, "output" : add_reverse_record(str(form_data["dns_server"]), str(form_data["zone_name"]), str(form_data["record_name"]), @@ -108,7 +107,9 @@ def add_cname_record(dns_server, zone_name, originating_record, cname, ttl, key_ update.replace(cname, int(ttl), 'CNAME', originating_record + ".") response = dns.query.tcp(update, dns_server) - return response + return [{ "description" : "CNAME %s.%s points to %s" % (cname, zone_name, originating_record), + "output" : response}] + def delete_record(form_data, rr_items): """Delete a list of DNS records passed as strings in rr_items.""" @@ -127,6 +128,6 @@ def delete_record(form_data, rr_items): dns_update = dns.update.Update(domain, keyring = keyring) dns_update.delete(record) output = dns.query.tcp(dns_update, dns_server) - delete_response.append({ "rr_item" : current_rr_item, "output" : output }) + delete_response.append({ "description" : "Delete record %s" % current_rr_item, "output" : output }) return delete_response diff --git a/binder/templates/bcommon/add_cname_record_form.htm b/binder/templates/bcommon/add_cname_record_form.htm index 4bf0a4c..789d6bd 100644 --- a/binder/templates/bcommon/add_cname_record_form.htm +++ b/binder/templates/bcommon/add_cname_record_form.htm @@ -1,7 +1,7 @@ {% extends "base.htm" %} {% block pageheader %} -Add cname record for {{record_name}}.{{zone_name}} +Add CNAME record for {{ originating_record }} {% endblock pageheader %} {% block body %} @@ -18,8 +18,8 @@ Add cname record for {{record_name}}.{{zone_name}}
- {{record_name}}.{{zone_name}} - + {{originating_record}} +
@@ -27,9 +27,14 @@ Add cname record for {{record_name}}.{{zone_name}}
- .{{zone_name}} - + .{{zone_name}} +
+ {% if form_errors.cname %} +
+ CNAME: {{ form_errors.cname|stringformat:"s"|striptags }} Previous Value: {{ form_data.cname }} +
+ {% endif %}
diff --git a/binder/templates/bcommon/add_cname_result.htm b/binder/templates/bcommon/add_cname_result.htm deleted file mode 100644 index 494a46e..0000000 --- a/binder/templates/bcommon/add_cname_result.htm +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "base.htm" %} - - -{% block pageheader %} -Add CNAME Record Result -{% endblock pageheader %} - -{% block body %} - - - - - - - - - -
CNAMEAdd CNAME Result
{{ rr_data.cname }}.{{rr_data.zone_name }} points to {{ rr_data.originating_record }}
{{ response }}
- -{% endblock body %} diff --git a/binder/templates/bcommon/delete_record_result.htm b/binder/templates/bcommon/delete_record_result.htm deleted file mode 100644 index ab2c805..0000000 --- a/binder/templates/bcommon/delete_record_result.htm +++ /dev/null @@ -1,23 +0,0 @@ -{% extends "base.htm" %} - - -{% block pageheader %} -Delete Record(s) Result -{% endblock pageheader %} - -{% block body %} - - -{% for current_response in delete_result %} - - - - - - - - -{% endfor %} -
RecordDelete Result
{{ current_response.rr_item }}
{{ current_response.output }}
- -{% endblock body %} diff --git a/binder/templates/bcommon/add_record_result.htm b/binder/templates/bcommon/response_result.htm similarity index 78% rename from binder/templates/bcommon/add_record_result.htm rename to binder/templates/bcommon/response_result.htm index ece1aa3..78af437 100644 --- a/binder/templates/bcommon/add_record_result.htm +++ b/binder/templates/bcommon/response_result.htm @@ -2,18 +2,18 @@ {% block pageheader %} -Add Record Result +Record Result {% endblock pageheader %} {% block body %} {% for current_response in response %} - + - + {% endfor %} diff --git a/binder/views.py b/binder/views.py index 5c27fb7..2ff7e11 100644 --- a/binder/views.py +++ b/binder/views.py @@ -6,6 +6,9 @@ import re RE_UNICODEARRAY = re.compile(r"u'(.*?)'") +class BinderException(Exception): + pass + def home_index(request): return render(request, 'index.htm') @@ -52,11 +55,11 @@ def view_add_record(request, dns_server, zone_name): """ View to provide form to add a DNS record. """ return render(request, 'bcommon/add_record_form.htm', { "dns_server" : dns_server, - "zone_name" : zone_name }) + "zone_name" : zone_name, + "tsig_keys" : models.Key.objects.all() }) def view_add_record_result(request): """ Process the input given to add a DNS record. """ - errors = None if request.method == "GET": return redirect('/') @@ -65,10 +68,10 @@ def view_add_record_result(request): cd = form.cleaned_data try: add_record_response = helpers.add_record(cd) - except BinderException, errors: + except BinderException, error: pass - return render(request, 'bcommon/add_record_result.htm', - { "errors" : errors, + return render(request, 'bcommon/response_result.htm', + { "errors" : error, "response" : add_record_response }) return render(request, 'bcommon/add_record_form.htm', @@ -81,38 +84,41 @@ def view_add_cname_record(request, dns_server, zone_name, record_name): """ Process given input to add a CNAME pointer.""" return render(request, "bcommon/add_cname_record_form.htm", { "dns_server" : dns_server, + "originating_record" : "%s.%s" % (record_name, zone_name), "zone_name" : zone_name, - "record_name" : record_name, "tsig_keys" : models.Key.objects.all() }) def view_add_cname_result(request): if request.method == "GET": - # Return home. You shouldn't trying to directly access - # the url for deleting records. return redirect('/') form = forms.FormAddCnameRecord(request.POST) if form.is_valid(): cd = form.cleaned_data - else: - return "bad form" # TODO: Send back the form pre-populated with the error + try: + add_cname_response = helpers.add_cname_record( + str(cd["dns_server"]), + str(cd["zone_name"]), + str(cd["originating_record"]), + str(cd["cname"]), + str(cd["ttl"]), + str(cd["key_name"])) + except BinderException, error: + pass - try: - add_cname_response = helpers.add_cname_record( - str(cd["dns_server"]), - str(cd["zone_name"]), - str(cd["originating_record"]), - str(cd["cname"]), - str(cd["ttl"]), - str(cd["key_name"])) - except Exception, err: - return render(request, 'bcommon/add_cname_result.htm', - { 'errors' : err, - 'rr_data' : cd }) + return render(request, 'bcommon/response_result.htm', + { 'errors' : error, + 'response' : add_cname_response }) + + return render(request, "bcommon/add_cname_record_form.htm", + { "dns_server" : request.POST["dns_server"], + "zone_name" : request.POST["zone_name"], + "record_name" : request.POST["cname"], + "originating_record" : request.POST["originating_record"], + "form_data" : request.POST, + "form_errors" : form.errors, + "tsig_keys" : models.Key.objects.all() }) - return render(request, 'bcommon/add_cname_result.htm', - { 'response' : add_cname_response, - 'rr_data' : cd }) def view_delete_record(request): if request.method == "GET": @@ -145,8 +151,8 @@ def view_delete_result(request): try: delete_result = helpers.delete_record(request.POST, rr_items) except Exception, err: - return render(request, 'bcommon/delete_record_result.htm', - { "errors" : err }), + return render(request, 'bcommon/response_result.htm.htm', + { "errors" : err }) - return render(request, 'bcommon/delete_record_result.htm', - { 'delete_result' : delete_result }) + return render(request, 'bcommon/response_result.htm', + { 'response' : delete_result })
Record:Record Output
{{ current_response.type }}{{ current_response.description }}
{{ current_response.output }}