diff --git a/abonapp/formfields.py b/abonapp/formfields.py index a25937f..4e61e3c 100644 --- a/abonapp/formfields.py +++ b/abonapp/formfields.py @@ -1,17 +1,24 @@ -from django.forms import Field +from django.forms import CharField +from django.forms.widgets import TextInput +from django.core.validators import RegexValidator, _lazy_re_compile from django.forms.fields import EMPTY_VALUES -#"From Django 1.8: The django.forms.util module has been renamed. Use django.forms.utils instead." -try: - from django.forms.utils import ValidationError -except ImportError: - from django.forms.util import ValidationError - +from django.forms.utils import ValidationError +from django.utils.translation import ugettext_lazy as _ from netaddr import EUI, AddrFormatError -class MACAddressField(Field): +mac_address_validator = RegexValidator( + _lazy_re_compile(r'^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$'), + message=_('Enter a valid integer.'), + code='invalid', +) + + +class MACAddressField(CharField): + widget = TextInput + default_validators = [mac_address_validator] default_error_messages = { - 'invalid': 'Enter a valid MAC Address.', + 'invalid': _('Enter a valid MAC Address.'), } def clean(self, value): @@ -27,5 +34,3 @@ class MACAddressField(Field): except (ValueError, TypeError, AddrFormatError): raise ValidationError(self.error_messages['invalid']) return value - - diff --git a/abonapp/forms.py b/abonapp/forms.py index d0fe5f6..a253024 100644 --- a/abonapp/forms.py +++ b/abonapp/forms.py @@ -5,6 +5,7 @@ from django.contrib.auth.hashers import make_password from random import choice from string import digits, ascii_lowercase from . import models +from .formfields import MACAddressField def generate_random_username(length=6, chars=digits, split=2, delimiter=''): @@ -74,6 +75,19 @@ class AbonForm(forms.ModelForm): return acc +class Opt82Form(forms.ModelForm): + mac = MACAddressField(widget=forms.TextInput(attrs={'class': 'form-control', 'pattern': r'^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$', 'required': ''})) + class Meta: + model = models.Opt82 + fields = '__all__' + widgets = { + 'port': forms.NumberInput(attrs={'class': 'form-control', 'required': ''}) + } + + #def save(self, commit=True): + # super().save(commit=commit) + + class AbonGroupForm(forms.ModelForm): class Meta: model = models.AbonGroup diff --git a/abonapp/templates/abonapp/editAbon.html b/abonapp/templates/abonapp/editAbon.html index 9c361eb..ef6160a 100644 --- a/abonapp/templates/abonapp/editAbon.html +++ b/abonapp/templates/abonapp/editAbon.html @@ -111,12 +111,30 @@