def view_delete_record(request, dns_server, zone_name): """View to handle the deletion of records.""" dns_server = models.BindServer.objects.get(hostname=dns_server) rr_list = request.POST.getlist("rr_list") if len(rr_list) == 0: messages.error(request, "Select at least one record for deletion.") return redirect('zone_list', dns_server=dns_server, zone_name=zone_name) if request.method == 'POST': form = forms.FormDeleteRecord(request.POST) if form.is_valid(): form_cleaned = form.cleaned_data rr_list = form_cleaned["rr_list"] try: response = helpers.delete_record(form_cleaned["dns_server"], rr_list, form_cleaned["key_name"]) except KeyringException as exc: for record in rr_list: messages.error( request, "Deleting %s.%s failed: %s" % (record, zone_name, exc)) else: for record in response: if record['success'] == True: messages.success( request, "%s.%s was removed successfully." % (record['record'], zone_name)) else: messages.error( request, "Deleting %s.%s failed: %s" % (record['record'], zone_name, record['description'])) 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.FormDeleteRecord(initial={ 'zone_name': zone_name, 'key_name': key_id }) return render( request, "bcommon/delete_record.html", { "dns_server": dns_server, "zone_name": zone_name, "rr_list": rr_list, "form": form })
def test_Validation_FormDeleteRecord(self): """Validate good data in the FormDeleteRecord form.""" delete_dict = {"dns_server": "foo.net", "zone_name": "domain1.local", "rr_list": '[u"record1.domain1.local", u"record2.domain1.local"]', "key_name": "1"} testform_1 = forms.FormDeleteRecord(delete_dict) testform_1.is_valid self.assertFalse(testform_1.errors) delete_dict["rr_list"] = '[record1.domain1.local", u"record2.domain1.local"]' testform_1 = forms.FormDeleteRecord(delete_dict) testform_1.is_valid self.assertTrue(testform_1.errors)
def view_delete_record(request, dns_server, zone_name): """View to handle the deletion of records.""" if not request.user.is_staff and not request.user.is_superuser: return render(request, "403.html", status=403) dns_server = models.BindServer.objects.get(hostname=dns_server) rr_list = request.POST.getlist("rr_list") if len(rr_list) == 0: messages.error(request, "Select at least one record for deletion.") return redirect('zone_list', dns_server=dns_server, zone_name=zone_name) if request.method == 'POST': form = forms.FormDeleteRecord(request.POST) if form.is_valid(): form_cleaned = form.cleaned_data name_list = form_cleaned["name_list"] data_list = form_cleaned["data_list"] type_list = form_cleaned["type_list"] try: response = helpers.delete_record(form_cleaned["dns_server"], name_list, type_list, data_list, form_cleaned["key_name"]) except KeyringException as exc: for record in name_list: messages.error( request, "Deleting %s.%s failed: %s" % (record, zone_name, exc)) else: for record in response: if record['success'] == True: messages.success( request, "%s.%s was removed successfully." % (record['record'], zone_name)) else: messages.error( request, "Deleting %s.%s failed: %s" % (record['record'], zone_name, record['description'])) return redirect('zone_list', dns_server=dns_server, zone_name=zone_name) else: name_list = [] data_list = [] type_list = [] for cur in rr_list: name_list.append(cur.split('||')[0]) data_list.append(cur.split('||')[1]) type_list.append(cur.split('||')[2]) else: form = forms.FormDeleteRecord(initial={'zone_name': zone_name}) return render( request, "bcommon/delete_record.html", { "dns_server": dns_server, "zone_name": zone_name, "rr_list": rr_list, "data_list": data_list, "type_list": type_list, "name_list": name_list, "form": form })