From ecea7964a11d62ca5a15de39231a30817633b92e Mon Sep 17 00:00:00 2001 From: Daniel Roschka Date: Tue, 4 Aug 2015 20:25:07 +0200 Subject: [PATCH] Improves the rendering of forms and refactors some of their logic. Changes are: * Display invalid input in editable input fields instead of adding it to the end of the error message. This should improve user experience in case of typos etc. where they now can simply edit there previously entered value. * Use a single variable for form data and form errors, instead of using two. Makes the code a bit cleaner. --- .../bcommon/add_cname_record_form.html | 41 ++++++++------- binder/templates/bcommon/add_record_form.html | 50 +++++++++---------- binder/views.py | 22 ++++---- 3 files changed, 54 insertions(+), 59 deletions(-) diff --git a/binder/templates/bcommon/add_cname_record_form.html b/binder/templates/bcommon/add_cname_record_form.html index 2edbeef..ed70b51 100644 --- a/binder/templates/bcommon/add_cname_record_form.html +++ b/binder/templates/bcommon/add_cname_record_form.html @@ -6,56 +6,55 @@
{% csrf_token %} Create CNAME record -
+
- {% if form_errors.dns_server %} + {% if form.dns_server.errors %}
- {{ form_errors.dns_server|stringformat:"s"|striptags }} - {% if form_data.dns_server %} Previous Value: {{ form_data.dns_server }}{% endif %} + {{ form.dns_server.errors|stringformat:"s"|striptags }} + {% if form.dns_server.value %} Previous Value: {{ form.dns_server.value }}{% endif %}
{% endif %}
-
+
- {% if form_errors.originating_record %} + {% if form.originating_record.errors %}
- {{ form_errors.originating_record|stringformat:"s"|striptags }} - {% if form_data.originating_record %} Previous Value: {{ form_data.originating_record }}{% endif %} + {{ form.originating_record.errors|stringformat:"s"|striptags }} + {% if form.originating_record.value %} Previous Value: {{ form.originating_record.value }}{% endif %}
{% endif %}
-
+
- + .{{zone_name}}
- {% if form_errors.cname %} + {% if form.cname.errors %}
- CNAME: {{ form_errors.cname|stringformat:"s"|striptags }} - {% if form_data.cnamr %} Previous Value: {{ form_data.cname }}{% endif %} + {{ form.cname.errors|stringformat:"s"|striptags }}
{% endif %}
-
+
- {% if form_errors.ttl %} + {% if form.ttl.errors %}
- {{ form_errors.ttl|stringformat:"s"|striptags }} - {% if form_data.ttl %} Previous Value: {{ form_data.ttl }}{% endif %} + {{ form.ttl.errors|stringformat:"s"|striptags }} + {% if form.ttl.value %} Previous choice: {{ form.ttl.value }}{% endif %}
{% endif %}
-
+
- {% if form_errors.key_name %} + {% if form.key_name.errors %}
- {{ form_errors.key_name|stringformat:"s"|striptags }} - {% if form_data.key_name %} Previous Value: {{ form_data.key_name }}{% endif %} + {{ form.key_name.errors|stringformat:"s"|striptags }} + {% if form.key_name.value %} Previous choice: {{ form.key_name.value }}{% endif %}
{% endif %} diff --git a/binder/templates/bcommon/add_record_form.html b/binder/templates/bcommon/add_record_form.html index cb384a2..4607429 100644 --- a/binder/templates/bcommon/add_record_form.html +++ b/binder/templates/bcommon/add_record_form.html @@ -6,41 +6,40 @@ {% csrf_token %} Create Record -
+
- {% if form_errors.dns_server %} + {% if form.dns_server.errors %}
- {{ form_errors.dns_server|stringformat:"s"|striptags }} - {% if form_data.dns_server %}Previous Value: {{ form_data.dns_server }}{% endif %} + {{ form.dns_server.errors|stringformat:"s"|striptags }} + {% if form.dns_server.value %}Previous Value: {{ form.dns_server.value }}{% endif %}
{% endif %}
-
+
- + .{{zone_name}}
- {% if form_errors.record_name %} + {% if form.record_name.errors %}
- {{ form_errors.record_name|stringformat:"s"|striptags }} - {% if form_data.record_name %} Previous Value: {{ form_data.record_name }}{% endif %} + {{ form.record_name.errors|stringformat:"s"|striptags }}
{% endif %}
-
+
- {% if form_errors.record_type %} + {% if form.record_type.errors %}
- {{ form_errors.record_type|stringformat:"s"|striptags }} - {% if form_data.record_type %} Previous Value: {{ form_data.record_type }}{% endif %} + {{ form.record_type.errors|stringformat:"s"|striptags }} + {% if form.record_type.value %} Previous Value: {{ form.record_type.value }}{% endif %}
{% endif %}
-
+
- +
- {% if form_errors.record_data %} + {% if form.record_data.errors %}
- {{ form_errors.record_data|stringformat:"s"|striptags }} - {% if form_data.record_data %} Previous Value: {{ form_data.record_data }}{% endif %} + {{ form.record_data.errors|stringformat:"s"|striptags }}
{% endif %}
-
+
- {% if form_errors.ttl %} + {% if form.ttl.errors %}
- {{ form_errors.ttl|stringformat:"s"|striptags }} - {% if form_data.ttl %} Previous Value: {{ form_data.ttl }}{% endif %} + {{ form.ttl.errors|stringformat:"s"|striptags }} + {% if form.ttl.value %} Previous choice: {{ form.ttl.value }}{% endif %}
{% endif %} @@ -108,7 +106,7 @@
{% endif %} -
+
- {% if form_errors.key_name %} + {% if form.key_name.errors %}
- {{ form_errors.key_name|stringformat:"s"|striptags }} - {% if form_data.key_name %} Previous Value: {{ form_data.key_name }}{% endif %} + {{ form.key_name.errors|stringformat:"s"|striptags }} + {% if form.key_name.value %} Previous choice: {{ form.key_name.value }}{% endif %}
{% endif %} diff --git a/binder/views.py b/binder/views.py index f952ca6..5b85639 100644 --- a/binder/views.py +++ b/binder/views.py @@ -120,8 +120,7 @@ def view_add_record_result(request): "tsig_keys": models.Key.objects.all(), "ttl_choices": settings.TTL_CHOICES, "record_type_choices": settings.RECORD_TYPE_CHOICES, - "form_errors": form.errors, - "form_data": request.POST}) + "form": form}) def view_add_cname_record(request, dns_server, zone_name, record_name): @@ -145,15 +144,15 @@ def view_add_cname_result(request): add_cname_response = "" form = forms.FormAddCnameRecord(request.POST) if form.is_valid(): - cd = form.cleaned_data + form_cleaned = form.cleaned_data try: add_cname_response = helpers.add_cname_record( - cd["dns_server"], - cd["zone_name"], - cd["cname"], - str(cd["originating_record"]), - cd["ttl"], - cd["key_name"]) + form_cleaned["dns_server"], + form_cleaned["zone_name"], + form_cleaned["cname"], + str(form_cleaned["originating_record"]), + form_cleaned["ttl"], + form_cleaned["key_name"]) except exceptions.RecordException, err: errors = err @@ -168,10 +167,9 @@ def view_add_cname_result(request): "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, "ttl_choices": settings.TTL_CHOICES, - "tsig_keys": models.Key.objects.all()}) + "tsig_keys": models.Key.objects.all(), + "form": form}) def view_delete_record(request):