Change Validation for identifier

This commit is contained in:
Daniel Sheppard 2022-11-01 13:05:39 -05:00
parent 969bca6e63
commit 52fbd84d3f
3 changed files with 0 additions and 61 deletions

View File

@ -1,59 +0,0 @@
# Generated by Django 4.1.1 on 2022-10-28 16:56
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
import taggit.managers
import utilities.json
class Migration(migrations.Migration):
dependencies = [
('extras', '0078_unique_constraints'),
('ipam', '0062_unique_constraints'),
('tenancy', '0008_unique_constraints'),
('dcim', '0164_rack_mounting_depth'),
]
operations = [
migrations.AddField(
model_name='devicetype',
name='vdc_type',
field=models.CharField(blank=True, max_length=50),
),
migrations.CreateModel(
name='VirtualDeviceContext',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True, null=True)),
('last_updated', models.DateTimeField(auto_now=True, null=True)),
('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)),
('name', models.CharField(max_length=64)),
('status', models.CharField(blank=True, max_length=50)),
('identifier', models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MaxValueValidator(255)])),
('comments', models.TextField(blank=True)),
('device', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vdcs', to='dcim.device')),
('primary_ip4', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='ipam.ipaddress')),
('primary_ip6', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='ipam.ipaddress')),
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vdcs', to='tenancy.tenant')),
],
options={
'ordering': ['name'],
},
),
migrations.AddField(
model_name='interface',
name='vdcs',
field=models.ManyToManyField(related_name='interfaces', to='dcim.virtualdevicecontext'),
),
migrations.AddConstraint(
model_name='virtualdevicecontext',
constraint=models.UniqueConstraint(fields=('device', 'identifier'), name='dcim_virtualdevicecontext_device_identifiers', violation_error_message='A VDC with this identifier already exists on this device.'),
),
migrations.AddConstraint(
model_name='virtualdevicecontext',
constraint=models.UniqueConstraint(fields=('device', 'name'), name='dcim_virtualdevicecontext_name', violation_error_message='A VDC with this name already exists on this device.'),
),
]

View File

@ -1157,7 +1157,6 @@ class VirtualDeviceContext(NetBoxModel):
identifier = models.PositiveSmallIntegerField(
blank=True,
null=True,
validators=[MaxValueValidator(255)]
)
primary_ip4 = models.OneToOneField(
to='ipam.IPAddress',

View File

@ -133,7 +133,6 @@ def enforce_vdc_type_restrictions(instance, **kwargs):
device = instance.device
if device.device_type.vdc_type not in [VirtualDeviceContextTypeChoices.CISCO_ASA_CONTEXT, VirtualDeviceContextTypeChoices.CISCO_FTD_INSTANCE] \
and len(instance.vdcs) > 1:
print('Error')
raise forms.ValidationError({
'vdcs': f"You cannot assign more then 1 VDC for {device.device_type}"
})