You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

49 lines
1.4 KiB

from django import forms
from django.utils.translation import gettext_lazy as _
from django.db import IntegrityError
from . import models
from djing import MAC_ADDR_REGEX, IP_ADDR_REGEX
class DeviceForm(forms.ModelForm):
mac_addr = forms.CharField(widget=forms.TextInput(attrs={
'pattern': MAC_ADDR_REGEX,
'required': True
}), error_messages={
'required': _('Mac address is required for fill'),
'unique': _('Device with that mac is already exist')
})
class Meta:
model = models.Device
exclude = ['map_dot', 'status']
widgets = {
'ip_address': forms.TextInput(attrs={
'pattern': IP_ADDR_REGEX,
'placeholder': '192.168.0.100'
}),
'comment': forms.TextInput(attrs={
'required': True
})
}
class PortForm(forms.ModelForm):
class Meta:
model = models.Port
exclude = ['device']
widgets = {
'num': forms.NumberInput(attrs={
'min': '0'
})
}
def save(self, commit=True):
try:
super(PortForm, self).save(commit)
except IntegrityError as e:
if "Duplicate entry" in str(e):
raise models.DeviceDBException(_('Port number on device must be unique'))
else:
raise models.DeviceDBException(e)