1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Merge feature

This commit is contained in:
Daniel Sheppard
2021-11-02 11:16:01 -05:00
23 changed files with 320 additions and 206 deletions

View File

@@ -3,7 +3,7 @@ from django import forms
from django.conf import settings
from django_filters.constants import EMPTY_VALUES
from dcim.forms import MACAddressField
from utilities.forms import MACAddressField
def multivalue_field_factory(field_class):

View File

@@ -2,6 +2,7 @@ import csv
import json
import re
from io import StringIO
from netaddr import AddrFormatError, EUI
import django_filters
from django import forms
@@ -38,6 +39,7 @@ __all__ = (
'ExpandableNameField',
'JSONField',
'LaxURLField',
'MACAddressField',
'SlugField',
'TagFilterField',
)
@@ -129,6 +131,28 @@ class JSONField(_JSONField):
return json.dumps(value, sort_keys=True, indent=4)
class MACAddressField(forms.Field):
widget = forms.CharField
default_error_messages = {
'invalid': 'MAC address must be in EUI-48 format',
}
def to_python(self, value):
value = super().to_python(value)
# Validate MAC address format
try:
value = EUI(value.strip())
except AddrFormatError:
raise forms.ValidationError(self.error_messages['invalid'], code='invalid')
return value
#
# Content type fields
#
class ContentTypeChoiceMixin:
def __init__(self, queryset, *args, **kwargs):