107 lines
3.6 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
2013-12-15 17:09:22 +01:00
"""
form definitions (which fields are available, order, autofocus, ...)
"""
import binascii
from django import forms
from django.utils.translation import ugettext_lazy as _
2014-09-25 20:15:18 +02:00
from .models import Host, RelatedHost, Domain, ServiceUpdaterHostConfig
from .dnstools import check_domain, NameServerNotAvailable
2013-09-29 01:21:44 +02:00
class CreateHostForm(forms.ModelForm):
2013-10-03 17:21:18 +02:00
class Meta(object):
model = Host
fields = ['name', 'domain', 'comment']
widgets = {
'name': forms.widgets.TextInput(attrs=dict(autofocus=None)),
}
class EditHostForm(forms.ModelForm):
2013-10-03 17:21:18 +02:00
class Meta(object):
model = Host
fields = ['comment', 'available', 'abuse', 'netmask_ipv4', 'netmask_ipv6']
netmask_ipv4 = forms.IntegerField(min_value=0, max_value=32)
netmask_ipv6 = forms.IntegerField(min_value=0, max_value=64)
2014-09-25 20:15:18 +02:00
class CreateRelatedHostForm(forms.ModelForm):
class Meta(object):
model = RelatedHost
2014-09-25 22:05:14 +02:00
fields = ['name', 'comment', 'available', 'interface_id_ipv4', 'interface_id_ipv6']
2014-09-25 20:15:18 +02:00
widgets = {
'name': forms.widgets.TextInput(attrs=dict(autofocus=None)),
}
class EditRelatedHostForm(forms.ModelForm):
class Meta(object):
model = RelatedHost
2014-09-25 22:05:14 +02:00
fields = ['name', 'comment', 'available', 'interface_id_ipv4', 'interface_id_ipv6']
2014-09-25 20:15:18 +02:00
class CreateDomainForm(forms.ModelForm):
def clean_nameserver_update_secret(self):
secret = self.cleaned_data['nameserver_update_secret']
try:
binascii.a2b_base64(secret.encode(encoding="ascii", errors="strict"))
except (binascii.Error, UnicodeEncodeError):
raise forms.ValidationError(_("Enter a valid secret in base64 format."), code='invalid')
return secret
class Meta(object):
model = Domain
fields = ['name', 'nameserver_ip', 'nameserver2_ip', 'nameserver_update_algorithm', 'comment']
widgets = {
'name': forms.widgets.TextInput(attrs=dict(autofocus=None)),
}
class EditDomainForm(forms.ModelForm):
def clean(self):
cleaned_data = super(EditDomainForm, self).clean()
if self.cleaned_data['available']:
try:
check_domain(self.instance.name)
except (NameServerNotAvailable, ):
raise forms.ValidationError(
2016-08-17 13:16:14 +02:00
_("Failed to add/delete host connectivity-test.%(domain)s, check your DNS server configuration. "
"This is a requirement for setting the available flag."),
code='invalid',
params={'domain': self.instance.name}
)
if cleaned_data['public'] and not cleaned_data['available']:
raise forms.ValidationError(
_("Domain must be available to be public"),
code='invalid')
class Meta(object):
model = Domain
fields = ['comment', 'nameserver_ip', 'nameserver2_ip', 'public', 'available',
'nameserver_update_algorithm', 'nameserver_update_secret']
class CreateUpdaterHostConfigForm(forms.ModelForm):
class Meta(object):
model = ServiceUpdaterHostConfig
fields = ['service', 'hostname', 'name', 'password',
'give_ipv4', 'give_ipv6', 'comment']
widgets = {
'hostname': forms.widgets.TextInput(attrs=dict(autofocus=None)),
}
class EditUpdaterHostConfigForm(forms.ModelForm):
class Meta(object):
model = ServiceUpdaterHostConfig
fields = ['hostname', 'comment', 'name', 'password',
'give_ipv4', 'give_ipv6']