| 4 | |
| 5 | |
| 6 | class AddInterface(forms.Form): |
| 7 | name = forms.CharField(max_length=10, required=True) |
| 8 | itype = forms.ChoiceField(required=True, choices=(('bridge', 'bridge'), ('ethernet', 'ethernet'))) |
| 9 | start_mode = forms.ChoiceField(required=True, |
| 10 | choices=(('none', 'none'), ('onboot', 'onboot'), ('hotplug', 'hotplug'))) |
| 11 | netdev = forms.CharField(max_length=15, required=True) |
| 12 | ipv4_type = forms.ChoiceField(required=True, choices=(('dhcp', 'dhcp'), ('static', 'static'), ('none', 'none'))) |
| 13 | ipv4_addr = forms.CharField(max_length=18, required=False) |
| 14 | ipv4_gw = forms.CharField(max_length=15, required=False) |
| 15 | ipv6_type = forms.ChoiceField(required=True, choices=(('dhcp', 'dhcp'), ('static', 'static'), ('none', 'none'))) |
| 16 | ipv6_addr = forms.CharField(max_length=100, required=False) |
| 17 | ipv6_gw = forms.CharField(max_length=100, required=False) |
| 18 | stp = forms.ChoiceField(required=False, choices=(('on', 'on'), ('off', 'off'))) |
| 19 | delay = forms.IntegerField(required=False) |
| 20 | |
| 21 | def clean_ipv4_addr(self): |
| 22 | ipv4_addr = self.cleaned_data['ipv4_addr'] |
| 23 | have_symbol = re.match('^[0-9./]+$', ipv4_addr) |
| 24 | if not have_symbol: |
| 25 | raise forms.ValidationError(_('The ipv4 must not contain any special characters')) |
| 26 | elif len(ipv4_addr) > 20: |
| 27 | raise forms.ValidationError(_('The ipv4 must not exceed 20 characters')) |
| 28 | return ipv4_addr |
| 29 | |
| 30 | def clean_ipv4_gw(self): |
| 31 | ipv4_gw = self.cleaned_data['ipv4_gw'] |
| 32 | have_symbol = re.match('^[0-9.]+$', ipv4_gw) |
| 33 | if not have_symbol: |
| 34 | raise forms.ValidationError(_('The ipv4 gateway must not contain any special characters')) |
| 35 | elif len(ipv4_gw) > 20: |
| 36 | raise forms.ValidationError(_('The ipv4 gateway must not exceed 20 characters')) |
| 37 | return ipv4_gw |
| 38 | |
| 39 | def clean_ipv6_addr(self): |
| 40 | ipv6_addr = self.cleaned_data['ipv6_addr'] |
| 41 | have_symbol = re.match('^[0-9a-f./:]+$', ipv6_addr) |
| 42 | if not have_symbol: |
| 43 | raise forms.ValidationError(_('The ipv6 must not contain any special characters')) |
| 44 | elif len(ipv6_addr) > 100: |
| 45 | raise forms.ValidationError(_('The ipv6 must not exceed 100 characters')) |
| 46 | return ipv6_addr |
| 47 | |
| 48 | def clean_ipv6_gw(self): |
| 49 | ipv6_gw = self.cleaned_data['ipv6_gw'] |
| 50 | have_symbol = re.match('^[0-9.]+$', ipv6_gw) |
| 51 | if not have_symbol: |
| 52 | raise forms.ValidationError(_('The ipv6 gateway must not contain any special characters')) |
| 53 | elif len(ipv6_gw) > 100: |
| 54 | raise forms.ValidationError(_('The ipv6 gateway must not exceed 100 characters')) |
| 55 | return ipv6_gw |
| 56 | |
| 57 | def clean_name(self): |
| 58 | name = self.cleaned_data['name'] |
| 59 | have_symbol = re.match('^[a-z0-9.]+$', name) |
| 60 | if not have_symbol: |
| 61 | raise forms.ValidationError(_('The interface must not contain any special characters')) |
| 62 | elif len(name) > 10: |
| 63 | raise forms.ValidationError(_('The interface must not exceed 10 characters')) |