mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #611: Power/console/interface connection import: status field should be case-insensitive
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.core.exceptions import ValidationError
|
||||||
from django.db.models import Count, Q
|
from django.db.models import Count, Q
|
||||||
|
|
||||||
from extras.forms import CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm
|
from extras.forms import CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm
|
||||||
@ -42,6 +43,14 @@ def get_device_by_name_or_pk(name):
|
|||||||
return device
|
return device
|
||||||
|
|
||||||
|
|
||||||
|
def validate_connection_status(value):
|
||||||
|
"""
|
||||||
|
Custom validator for connection statuses. value must be either "planned" or "connected" (case-insensitive).
|
||||||
|
"""
|
||||||
|
if value.lower() not in ['planned', 'connected']:
|
||||||
|
raise ValidationError('Invalid connection status ({}); must be either "planned" or "connected".'.format(value))
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Sites
|
# Sites
|
||||||
#
|
#
|
||||||
@ -606,7 +615,7 @@ class ConsoleConnectionCSVForm(forms.Form):
|
|||||||
device = FlexibleModelChoiceField(queryset=Device.objects.all(), to_field_name='name',
|
device = FlexibleModelChoiceField(queryset=Device.objects.all(), to_field_name='name',
|
||||||
error_messages={'invalid_choice': 'Device not found'})
|
error_messages={'invalid_choice': 'Device not found'})
|
||||||
console_port = forms.CharField()
|
console_port = forms.CharField()
|
||||||
status = forms.ChoiceField(choices=[('planned', 'Planned'), ('connected', 'Connected')])
|
status = forms.CharField(validators=[validate_connection_status])
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
|
|
||||||
@ -801,7 +810,7 @@ class PowerConnectionCSVForm(forms.Form):
|
|||||||
device = FlexibleModelChoiceField(queryset=Device.objects.all(), to_field_name='name',
|
device = FlexibleModelChoiceField(queryset=Device.objects.all(), to_field_name='name',
|
||||||
error_messages={'invalid_choice': 'Device not found'})
|
error_messages={'invalid_choice': 'Device not found'})
|
||||||
power_port = forms.CharField()
|
power_port = forms.CharField()
|
||||||
status = forms.ChoiceField(choices=[('planned', 'Planned'), ('connected', 'Connected')])
|
status = forms.CharField(validators=[validate_connection_status])
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
|
|
||||||
@ -1062,7 +1071,7 @@ class InterfaceConnectionCSVForm(forms.Form):
|
|||||||
device_b = FlexibleModelChoiceField(queryset=Device.objects.all(), to_field_name='name',
|
device_b = FlexibleModelChoiceField(queryset=Device.objects.all(), to_field_name='name',
|
||||||
error_messages={'invalid_choice': 'Device B not found.'})
|
error_messages={'invalid_choice': 'Device B not found.'})
|
||||||
interface_b = forms.CharField()
|
interface_b = forms.CharField()
|
||||||
status = forms.ChoiceField(choices=[('planned', 'Planned'), ('connected', 'Connected')])
|
status = forms.CharField(validators=[validate_connection_status])
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user