mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-25 18:08:38 -06:00
Rebuild migration and add constraints and field options
This commit is contained in:
parent
d5cae6fe93
commit
54ff4bb1cd
@ -1,5 +1,6 @@
|
|||||||
# Generated by Django 5.0.9 on 2024-10-11 19:45
|
# Generated by Django 5.0.9 on 2024-10-11 19:45
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
import taggit.managers
|
import taggit.managers
|
||||||
import utilities.json
|
import utilities.json
|
||||||
@ -39,8 +40,8 @@ class Migration(migrations.Migration):
|
|||||||
('created', models.DateTimeField(auto_now_add=True, null=True)),
|
('created', models.DateTimeField(auto_now_add=True, null=True)),
|
||||||
('last_updated', models.DateTimeField(auto_now=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)),
|
('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)),
|
||||||
('local_vid', models.IntegerField()),
|
('local_vid', models.PositiveSmallIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(4094)])),
|
||||||
('remote_vid', models.IntegerField()),
|
('remote_vid', models.PositiveSmallIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(4094)])),
|
||||||
('policy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rules', to='ipam.vlantranslationpolicy')),
|
('policy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rules', to='ipam.vlantranslationpolicy')),
|
||||||
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
|
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
|
||||||
],
|
],
|
||||||
@ -49,4 +50,12 @@ class Migration(migrations.Migration):
|
|||||||
'ordering': ('policy', 'local_vid', 'remote_vid'),
|
'ordering': ('policy', 'local_vid', 'remote_vid'),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
migrations.AddConstraint(
|
||||||
|
model_name='vlantranslationrule',
|
||||||
|
constraint=models.UniqueConstraint(fields=('policy', 'local_vid'), name='ipam_vlantranslationrule_unique_policy_local_vid'),
|
||||||
|
),
|
||||||
|
migrations.AddConstraint(
|
||||||
|
model_name='vlantranslationrule',
|
||||||
|
constraint=models.UniqueConstraint(fields=('policy', 'remote_vid'), name='ipam_vlantranslationrule_unique_policy_remote_vid'),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
@ -283,11 +283,6 @@ class VLANTranslationPolicy(PrimaryModel):
|
|||||||
max_length=100,
|
max_length=100,
|
||||||
unique=True,
|
unique=True,
|
||||||
)
|
)
|
||||||
description = models.CharField(
|
|
||||||
verbose_name=_('description'),
|
|
||||||
max_length=200,
|
|
||||||
blank=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('VLAN translation policy')
|
verbose_name = _('VLAN translation policy')
|
||||||
@ -304,23 +299,41 @@ class VLANTranslationRule(NetBoxModel):
|
|||||||
related_name='rules',
|
related_name='rules',
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
)
|
)
|
||||||
local_vid = models.IntegerField()
|
local_vid = models.PositiveSmallIntegerField(
|
||||||
remote_vid = models.IntegerField()
|
verbose_name=_('Local VLAN ID'),
|
||||||
|
validators=(
|
||||||
|
MinValueValidator(VLAN_VID_MIN),
|
||||||
|
MaxValueValidator(VLAN_VID_MAX)
|
||||||
|
),
|
||||||
|
help_text=_("Numeric VLAN ID (1-4094)")
|
||||||
|
)
|
||||||
|
remote_vid = models.PositiveSmallIntegerField(
|
||||||
|
verbose_name=_('Remote VLAN ID'),
|
||||||
|
validators=(
|
||||||
|
MinValueValidator(VLAN_VID_MIN),
|
||||||
|
MaxValueValidator(VLAN_VID_MAX)
|
||||||
|
),
|
||||||
|
help_text=_("Numeric VLAN ID (1-4094)")
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('VLAN translation rule')
|
verbose_name = _('VLAN translation rule')
|
||||||
ordering = ('policy', 'local_vid', 'remote_vid',)
|
ordering = ('policy', 'local_vid', 'remote_vid',)
|
||||||
# Unique constraints are TBD
|
constraints = (
|
||||||
# constraints = (
|
models.UniqueConstraint(
|
||||||
# models.UniqueConstraint(
|
fields=('policy', 'local_vid'),
|
||||||
# fields=('policy', 'local_vid'),
|
name='%(app_label)s_%(class)s_unique_policy_local_vid'
|
||||||
# name='%(app_label)s_%(class)s_unique_policy_local_vid'
|
),
|
||||||
# ),
|
models.UniqueConstraint(
|
||||||
# models.UniqueConstraint(
|
fields=('policy', 'remote_vid'),
|
||||||
# fields=('policy', 'remote_vid'),
|
name='%(app_label)s_%(class)s_unique_policy_remote_vid'
|
||||||
# name='%(app_label)s_%(class)s_unique_policy_remote_vid'
|
),
|
||||||
# ),
|
)
|
||||||
# )
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'{self.local_vid} -> {self.remote_vid} ({self.policy})'
|
return f'{self.local_vid} -> {self.remote_vid} ({self.policy})'
|
||||||
|
|
||||||
|
def to_objectchange(self, action):
|
||||||
|
objectchange = super().to_objectchange(action)
|
||||||
|
objectchange.related_object = self.policy
|
||||||
|
return objectchange
|
||||||
|
Loading…
Reference in New Issue
Block a user