mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-20 01:36:00 +02:00
wip making view communicate data with form
This commit is contained in:
parent
8dba1234c1
commit
b4596d3bcd
2 changed files with 77 additions and 16 deletions
|
@ -23,23 +23,25 @@ class DomainAddUserForm(forms.Form):
|
|||
|
||||
|
||||
class IPAddressField(forms.CharField):
|
||||
# def __init__(self, server_value, *args, **kwargs):
|
||||
# self.server_value = server_value
|
||||
# super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
|
||||
def validate(self, value):
|
||||
def validate(self, value):
|
||||
super().validate(value) # Run the default CharField validation
|
||||
|
||||
ip_list = [ip.strip() for ip in value.split(",")] # Split IPs and remove whitespace
|
||||
# ip_list = [ip.strip() for ip in value.split(",")] # Split IPs and remove whitespace
|
||||
|
||||
# TODO: pass hostname from view?
|
||||
hostname = ""
|
||||
# # TODO: pass hostname from view?
|
||||
|
||||
# Call the IP validation method from Domain
|
||||
try:
|
||||
Domain.checkHostIPCombo(hostname, ip_list)
|
||||
except NameserverError as e:
|
||||
raise forms.ValidationError(str(e))
|
||||
# hostname = self.form.cleaned_data.get("server", "")
|
||||
|
||||
# print(f"hostname {hostname}")
|
||||
|
||||
# # Call the IP validation method from Domain
|
||||
# try:
|
||||
# Domain.checkHostIPCombo(hostname, ip_list)
|
||||
# except NameserverError as e:
|
||||
# raise forms.ValidationError(str(e))
|
||||
|
||||
|
||||
class DomainNameserverForm(forms.Form):
|
||||
|
@ -51,7 +53,58 @@ class DomainNameserverForm(forms.Form):
|
|||
label="IP address",
|
||||
strip=True,
|
||||
required=False,
|
||||
# validators=[
|
||||
# django.core.validators.validate_ipv46_address
|
||||
# ],
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
# Access the context object passed to the form
|
||||
print(f"domain domain domain {kwargs}")
|
||||
self.domain = kwargs.pop('rachid', None)
|
||||
print(f"domain domain domain {kwargs}")
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
# def __init__(self, request, *args, **kwargs):
|
||||
# # Pass the request object to the form during initialization
|
||||
# self.request = request
|
||||
# super().__init__(*args, **kwargs)
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super().clean()
|
||||
server = cleaned_data.get('server', '')
|
||||
ip = cleaned_data.get('ip', '')
|
||||
|
||||
# make sure there's a nameserver if an ip is passed
|
||||
if ip:
|
||||
ip_list = [ip.strip() for ip in ip.split(",")]
|
||||
if not server:
|
||||
# If 'server' is empty, disallow 'ip' input
|
||||
raise forms.ValidationError("Name server must be provided to enter IP address.")
|
||||
try:
|
||||
Domain.checkHostIPCombo(server, ip_list)
|
||||
except NameserverError as e:
|
||||
raise forms.ValidationError(str(e))
|
||||
|
||||
# if there's a nameserver, validate nameserver/ip combo
|
||||
domain, _ = Domain.objects.get_or_create(name="magazine-claim.gov")
|
||||
|
||||
# Access session data from the request object
|
||||
# session_data = self.request.session.get('nameservers_form_domain', None)
|
||||
|
||||
print(f"domain domain domain {self.domain}")
|
||||
|
||||
if server:
|
||||
if ip:
|
||||
ip_list = [ip.strip() for ip in ip.split(",")]
|
||||
else:
|
||||
ip_list = [""]
|
||||
try:
|
||||
Domain.checkHostIPCombo(domain, server, ip_list)
|
||||
except NameserverError as e:
|
||||
raise forms.ValidationError(str(e))
|
||||
|
||||
return cleaned_data
|
||||
|
||||
|
||||
NameserverFormset = formset_factory(
|
||||
|
|
|
@ -14,6 +14,7 @@ from django.shortcuts import redirect
|
|||
from django.template import RequestContext
|
||||
from django.urls import reverse
|
||||
from django.views.generic.edit import FormMixin
|
||||
from django.forms import BaseFormSet
|
||||
|
||||
from registrar.models import (
|
||||
Domain,
|
||||
|
@ -213,12 +214,18 @@ class DomainDNSView(DomainBaseView):
|
|||
template_name = "domain_dns.html"
|
||||
|
||||
|
||||
class DomainNameserversView(DomainFormBaseView):
|
||||
class DomainNameserversView(DomainFormBaseView, BaseFormSet):
|
||||
"""Domain nameserver editing view."""
|
||||
|
||||
template_name = "domain_nameservers.html"
|
||||
form_class = NameserverFormset
|
||||
|
||||
|
||||
def get_formset_kwargs(self, index):
|
||||
kwargs = super().get_formset_kwargs(index)
|
||||
# kwargs['domain'] = self.object # Pass the context data
|
||||
kwargs.update({"domain", self.object})
|
||||
return kwargs
|
||||
|
||||
def get_initial(self):
|
||||
"""The initial value for the form (which is a formset here)."""
|
||||
nameservers = self.object.nameservers
|
||||
|
@ -247,8 +254,7 @@ class DomainNameserversView(DomainFormBaseView):
|
|||
|
||||
def get_form(self, **kwargs):
|
||||
"""Override the labels and required fields every time we get a formset."""
|
||||
formset = super().get_form(**kwargs)
|
||||
|
||||
formset = super().get_form(**kwargs)
|
||||
for i, form in enumerate(formset):
|
||||
form.fields["server"].label += f" {i+1}"
|
||||
form.fields["ip"].label += f" {i+1}"
|
||||
|
@ -261,6 +267,8 @@ class DomainNameserversView(DomainFormBaseView):
|
|||
def form_valid(self, formset):
|
||||
"""The formset is valid, perform something with it."""
|
||||
|
||||
self.request.session['nameservers_form_domain'] = self.object
|
||||
|
||||
# Set the nameservers from the formset
|
||||
nameservers = []
|
||||
for form in formset:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue