mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-15 11:42:52 -06:00
Rack.status to slug (#3569)
This commit is contained in:
parent
e1e09bff9b
commit
c79c29e769
@ -115,7 +115,7 @@ class RackSerializer(TaggitSerializer, CustomFieldModelSerializer):
|
|||||||
site = NestedSiteSerializer()
|
site = NestedSiteSerializer()
|
||||||
group = NestedRackGroupSerializer(required=False, allow_null=True, default=None)
|
group = NestedRackGroupSerializer(required=False, allow_null=True, default=None)
|
||||||
tenant = NestedTenantSerializer(required=False, allow_null=True)
|
tenant = NestedTenantSerializer(required=False, allow_null=True)
|
||||||
status = ChoiceField(choices=RACK_STATUS_CHOICES, required=False)
|
status = ChoiceField(choices=RackStatusChoices, required=False)
|
||||||
role = NestedRackRoleSerializer(required=False, allow_null=True)
|
role = NestedRackRoleSerializer(required=False, allow_null=True)
|
||||||
type = ChoiceField(choices=RackTypeChoices, required=False, allow_null=True)
|
type = ChoiceField(choices=RackTypeChoices, required=False, allow_null=True)
|
||||||
width = ChoiceField(choices=RackWidthChoices, required=False)
|
width = ChoiceField(choices=RackWidthChoices, required=False)
|
||||||
|
@ -41,6 +41,31 @@ class RackWidthChoices(ChoiceSet):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RackStatusChoices(ChoiceSet):
|
||||||
|
|
||||||
|
STATUS_RESERVED = 'reserved'
|
||||||
|
STATUS_AVAILABLE = 'available'
|
||||||
|
STATUS_PLANNED = 'planned'
|
||||||
|
STATUS_ACTIVE = 'active'
|
||||||
|
STATUS_DEPRECATED = 'deprecated'
|
||||||
|
|
||||||
|
CHOICES = (
|
||||||
|
(STATUS_RESERVED, 'Reserved'),
|
||||||
|
(STATUS_AVAILABLE, 'Available'),
|
||||||
|
(STATUS_PLANNED, 'Planned'),
|
||||||
|
(STATUS_ACTIVE, 'Active'),
|
||||||
|
(STATUS_DEPRECATED, 'Deprecated'),
|
||||||
|
)
|
||||||
|
|
||||||
|
LEGACY_MAP = {
|
||||||
|
STATUS_RESERVED: 0,
|
||||||
|
STATUS_AVAILABLE: 1,
|
||||||
|
STATUS_PLANNED: 2,
|
||||||
|
STATUS_ACTIVE: 3,
|
||||||
|
STATUS_DEPRECATED: 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Console port type values
|
# Console port type values
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Rack faces
|
# Device rack faces
|
||||||
RACK_FACE_FRONT = 0
|
RACK_FACE_FRONT = 0
|
||||||
RACK_FACE_REAR = 1
|
RACK_FACE_REAR = 1
|
||||||
RACK_FACE_CHOICES = [
|
RACK_FACE_CHOICES = [
|
||||||
@ -6,20 +6,6 @@ RACK_FACE_CHOICES = [
|
|||||||
[RACK_FACE_REAR, 'Rear'],
|
[RACK_FACE_REAR, 'Rear'],
|
||||||
]
|
]
|
||||||
|
|
||||||
# Rack statuses
|
|
||||||
RACK_STATUS_RESERVED = 0
|
|
||||||
RACK_STATUS_AVAILABLE = 1
|
|
||||||
RACK_STATUS_PLANNED = 2
|
|
||||||
RACK_STATUS_ACTIVE = 3
|
|
||||||
RACK_STATUS_DEPRECATED = 4
|
|
||||||
RACK_STATUS_CHOICES = [
|
|
||||||
[RACK_STATUS_ACTIVE, 'Active'],
|
|
||||||
[RACK_STATUS_PLANNED, 'Planned'],
|
|
||||||
[RACK_STATUS_RESERVED, 'Reserved'],
|
|
||||||
[RACK_STATUS_AVAILABLE, 'Available'],
|
|
||||||
[RACK_STATUS_DEPRECATED, 'Deprecated'],
|
|
||||||
]
|
|
||||||
|
|
||||||
# Device rack position
|
# Device rack position
|
||||||
DEVICE_POSITION_CHOICES = [
|
DEVICE_POSITION_CHOICES = [
|
||||||
# Rack.u_height is limited to 100
|
# Rack.u_height is limited to 100
|
||||||
|
@ -147,7 +147,7 @@ class RackFilter(TenancyFilterSet, CustomFieldFilterSet):
|
|||||||
label='Group',
|
label='Group',
|
||||||
)
|
)
|
||||||
status = django_filters.MultipleChoiceFilter(
|
status = django_filters.MultipleChoiceFilter(
|
||||||
choices=RACK_STATUS_CHOICES,
|
choices=RackStatusChoices,
|
||||||
null_value=None
|
null_value=None
|
||||||
)
|
)
|
||||||
role_id = django_filters.ModelMultipleChoiceFilter(
|
role_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
@ -473,7 +473,7 @@ class RackCSVForm(forms.ModelForm):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
status = CSVChoiceField(
|
status = CSVChoiceField(
|
||||||
choices=RACK_STATUS_CHOICES,
|
choices=RackStatusChoices,
|
||||||
required=False,
|
required=False,
|
||||||
help_text='Operational status'
|
help_text='Operational status'
|
||||||
)
|
)
|
||||||
@ -568,7 +568,7 @@ class RackBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditFor
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
status = forms.ChoiceField(
|
status = forms.ChoiceField(
|
||||||
choices=add_blank_choice(RACK_STATUS_CHOICES),
|
choices=add_blank_choice(RackStatusChoices),
|
||||||
required=False,
|
required=False,
|
||||||
initial='',
|
initial='',
|
||||||
widget=StaticSelect2()
|
widget=StaticSelect2()
|
||||||
@ -662,7 +662,7 @@ class RackFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
status = forms.MultipleChoiceField(
|
status = forms.MultipleChoiceField(
|
||||||
choices=RACK_STATUS_CHOICES,
|
choices=RackStatusChoices,
|
||||||
required=False,
|
required=False,
|
||||||
widget=StaticSelect2Multiple()
|
widget=StaticSelect2Multiple()
|
||||||
)
|
)
|
||||||
|
@ -8,6 +8,14 @@ RACK_TYPE_CHOICES = (
|
|||||||
(1100, 'wall-cabinet'),
|
(1100, 'wall-cabinet'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
RACK_STATUS_CHOICES = (
|
||||||
|
(0, 'reserved'),
|
||||||
|
(1, 'available'),
|
||||||
|
(2, 'planned'),
|
||||||
|
(3, 'active'),
|
||||||
|
(4, 'deprecated'),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def rack_type_to_slug(apps, schema_editor):
|
def rack_type_to_slug(apps, schema_editor):
|
||||||
Rack = apps.get_model('dcim', 'Rack')
|
Rack = apps.get_model('dcim', 'Rack')
|
||||||
@ -15,6 +23,12 @@ def rack_type_to_slug(apps, schema_editor):
|
|||||||
Rack.objects.filter(type=str(id)).update(type=slug)
|
Rack.objects.filter(type=str(id)).update(type=slug)
|
||||||
|
|
||||||
|
|
||||||
|
def rack_status_to_slug(apps, schema_editor):
|
||||||
|
Rack = apps.get_model('dcim', 'Rack')
|
||||||
|
for id, slug in RACK_STATUS_CHOICES:
|
||||||
|
Rack.objects.filter(status=str(id)).update(status=slug)
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
@ -22,6 +36,7 @@ class Migration(migrations.Migration):
|
|||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
# Rack.type
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name='rack',
|
model_name='rack',
|
||||||
name='type',
|
name='type',
|
||||||
@ -29,5 +44,14 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
migrations.RunPython(
|
migrations.RunPython(
|
||||||
code=rack_type_to_slug
|
code=rack_type_to_slug
|
||||||
)
|
),
|
||||||
|
# Rack.status
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='rack',
|
||||||
|
name='status',
|
||||||
|
field=models.CharField(blank=True, max_length=50),
|
||||||
|
),
|
||||||
|
migrations.RunPython(
|
||||||
|
code=rack_status_to_slug
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
@ -473,9 +473,10 @@ class Rack(ChangeLoggedModel, CustomFieldModel):
|
|||||||
blank=True,
|
blank=True,
|
||||||
null=True
|
null=True
|
||||||
)
|
)
|
||||||
status = models.PositiveSmallIntegerField(
|
status = models.CharField(
|
||||||
choices=RACK_STATUS_CHOICES,
|
max_length=50,
|
||||||
default=RACK_STATUS_ACTIVE
|
choices=RackStatusChoices,
|
||||||
|
default=RackStatusChoices.STATUS_ACTIVE
|
||||||
)
|
)
|
||||||
role = models.ForeignKey(
|
role = models.ForeignKey(
|
||||||
to='dcim.RackRole',
|
to='dcim.RackRole',
|
||||||
@ -552,6 +553,14 @@ class Rack(ChangeLoggedModel, CustomFieldModel):
|
|||||||
'u_height', 'desc_units', 'outer_width', 'outer_depth', 'outer_unit', 'comments',
|
'u_height', 'desc_units', 'outer_width', 'outer_depth', 'outer_unit', 'comments',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
STATUS_CLASS_MAP = {
|
||||||
|
RackStatusChoices.STATUS_RESERVED: 'warning',
|
||||||
|
RackStatusChoices.STATUS_AVAILABLE: 'success',
|
||||||
|
RackStatusChoices.STATUS_PLANNED: 'info',
|
||||||
|
RackStatusChoices.STATUS_ACTIVE: 'primary',
|
||||||
|
RackStatusChoices.STATUS_DEPRECATED: 'danger',
|
||||||
|
}
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['site', 'group', 'name']
|
ordering = ['site', 'group', 'name']
|
||||||
unique_together = [
|
unique_together = [
|
||||||
@ -644,7 +653,7 @@ class Rack(ChangeLoggedModel, CustomFieldModel):
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
def get_status_class(self):
|
def get_status_class(self):
|
||||||
return STATUS_CLASSES[self.status]
|
return self.STATUS_CLASS_MAP.get(self.status)
|
||||||
|
|
||||||
def get_rack_units(self, face=RACK_FACE_FRONT, exclude=None, remove_redundant=False):
|
def get_rack_units(self, face=RACK_FACE_FRONT, exclude=None, remove_redundant=False):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user