def view_add_cname_record(request, dns_server, zone_name, record_name): """View to allow to add CNAME records.""" this_server = get_object_or_404(models.BindServer, hostname=dns_server) if request.method == 'POST': form = forms.FormAddCnameRecord(request.POST) if form.is_valid(): form_cleaned = form.cleaned_data try: helpers.add_cname_record( form_cleaned["dns_server"], str(form_cleaned["zone_name"]), str(form_cleaned["cname"]), '%s.%s' % (str(form_cleaned["originating_record"]), str(form_cleaned["zone_name"])), form_cleaned["ttl"], form_cleaned["key_name"]) except (exceptions.KeyringException, exceptions.RecordException) as exc: messages.error( request, "Adding %s.%s failed: %s" % (form_cleaned["cname"], zone_name, exc)) else: messages.success( request, "%s.%s was added successfully." % (form_cleaned["cname"], zone_name)) return redirect('zone_list', dns_server=dns_server, zone_name=zone_name) else: key_id = models.BindServer.objects.get( hostname=dns_server).default_transfer_key.id form = forms.FormAddCnameRecord( initial={ 'originating_record': record_name, 'zone_name': zone_name, 'key_name': key_id }) return render(request, "bcommon/add_cname_record_form.html", { "dns_server": this_server, "form": form })
def test_MissingName_AddCnameForm(self): """Attempt to submit a cname add form missing the cname and tsig key.""" form_dict = {"dns_server": "testserver1", "zone_name": "domain1.local", "originating_record": "record1.domain1.local", "cname": "", "ttl": 300} expected_form_errors = {"cname": [u"This field is required."], "key_name": [u"This field is required."]} testform_1 = forms.FormAddCnameRecord(form_dict) testform_1.is_valid() self.assertTrue(testform_1.errors) self.assertEquals(testform_1.errors, expected_form_errors)