diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py
index 22e66763b..97f9eb422 100644
--- a/netbox/dcim/forms/filtersets.py
+++ b/netbox/dcim/forms/filtersets.py
@@ -195,7 +195,7 @@ class LocationFilterForm(TenancyFilterForm, ContactModelFilterForm, NetBoxModelF
model = Location
fieldsets = (
FieldSet('q', 'filter_id', 'tag'),
- FieldSet('region_id', 'site_group_id', 'site_id', 'parent_id', 'status', name=_('Attributes')),
+ FieldSet('region_id', 'site_group_id', 'site_id', 'parent_id', 'status', 'facility', name=_('Attributes')),
FieldSet('tenant_group_id', 'tenant_id', name=_('Tenant')),
FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')),
)
@@ -232,6 +232,10 @@ class LocationFilterForm(TenancyFilterForm, ContactModelFilterForm, NetBoxModelF
choices=LocationStatusChoices,
required=False
)
+ facility = forms.CharField(
+ label=_('Facility'),
+ required=False
+ )
tag = TagFilterField(model)
diff --git a/netbox/dcim/tables/sites.py b/netbox/dcim/tables/sites.py
index e179ec43a..77844f086 100644
--- a/netbox/dcim/tables/sites.py
+++ b/netbox/dcim/tables/sites.py
@@ -99,6 +99,11 @@ class SiteTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
url_params={'site_id': 'pk'},
verbose_name=_('ASN Count')
)
+ device_count = columns.LinkedCountColumn(
+ viewname='dcim:device_list',
+ url_params={'site_id': 'pk'},
+ verbose_name=_('Devices')
+ )
comments = columns.MarkdownColumn(
verbose_name=_('Comments'),
)
diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py
index b18ecdd5b..b4af52ad5 100644
--- a/netbox/dcim/views.py
+++ b/netbox/dcim/views.py
@@ -380,7 +380,9 @@ class SiteGroupContactsView(ObjectContactsView):
#
class SiteListView(generic.ObjectListView):
- queryset = Site.objects.all()
+ queryset = Site.objects.annotate(
+ device_count=count_related(Device, 'site')
+ )
filterset = filtersets.SiteFilterSet
filterset_form = forms.SiteFilterForm
table = tables.SiteTable
diff --git a/netbox/extras/api/serializers_/attachments.py b/netbox/extras/api/serializers_/attachments.py
index bcf3a24ec..4d2809bc6 100644
--- a/netbox/extras/api/serializers_/attachments.py
+++ b/netbox/extras/api/serializers_/attachments.py
@@ -19,6 +19,8 @@ class ImageAttachmentSerializer(ValidatedModelSerializer):
queryset=ObjectType.objects.all()
)
parent = serializers.SerializerMethodField(read_only=True)
+ image_width = serializers.IntegerField(read_only=True)
+ image_height = serializers.IntegerField(read_only=True)
class Meta:
model = ImageAttachment
diff --git a/netbox/extras/forms/reports.py b/netbox/extras/forms/reports.py
index 358ee90e3..95692b3f6 100644
--- a/netbox/extras/forms/reports.py
+++ b/netbox/extras/forms/reports.py
@@ -31,7 +31,7 @@ class ReportForm(forms.Form):
super().__init__(*args, **kwargs)
# Annotate the current system time for reference
- now = local_now().strftime('%Y-%m-%d %H:%M:%S')
+ now = local_now().strftime('%Y-%m-%d %H:%M:%S %Z')
self.fields['schedule_at'].help_text += _(' (current time: {now})').format(now=now)
# Remove scheduling fields if scheduling is disabled
diff --git a/netbox/extras/forms/scripts.py b/netbox/extras/forms/scripts.py
index ece96f5e4..331f7f01f 100644
--- a/netbox/extras/forms/scripts.py
+++ b/netbox/extras/forms/scripts.py
@@ -37,7 +37,7 @@ class ScriptForm(forms.Form):
super().__init__(*args, **kwargs)
# Annotate the current system time for reference
- now = local_now().strftime('%Y-%m-%d %H:%M:%S')
+ now = local_now().strftime('%Y-%m-%d %H:%M:%S %Z')
self.fields['_schedule_at'].help_text += _(' (current time: {now})').format(now=now)
# Remove scheduling fields if scheduling is disabled
diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css
index 15900e751..13d313ba3 100644
Binary files a/netbox/project-static/dist/netbox.css and b/netbox/project-static/dist/netbox.css differ
diff --git a/netbox/project-static/styles/custom/_markdown.scss b/netbox/project-static/styles/custom/_markdown.scss
index cb4527f37..32ef7a09c 100644
--- a/netbox/project-static/styles/custom/_markdown.scss
+++ b/netbox/project-static/styles/custom/_markdown.scss
@@ -30,6 +30,9 @@
// Remove the bottom margin of
elements inside a table cell
td > .rendered-markdown {
+ max-height: 200px;
+ overflow-y: scroll;
+
p:last-of-type {
margin-bottom: 0;
}
diff --git a/netbox/tenancy/tables/contacts.py b/netbox/tenancy/tables/contacts.py
index 946058218..c4e35ab1b 100644
--- a/netbox/tenancy/tables/contacts.py
+++ b/netbox/tenancy/tables/contacts.py
@@ -113,11 +113,12 @@ class ContactAssignmentTable(NetBoxTable):
)
contact_phone = tables.Column(
accessor=Accessor('contact__phone'),
- verbose_name=_('Contact Phone')
+ verbose_name=_('Contact Phone'),
+ linkify=linkify_phone,
)
- contact_email = tables.Column(
+ contact_email = tables.EmailColumn(
accessor=Accessor('contact__email'),
- verbose_name=_('Contact Email')
+ verbose_name=_('Contact Email'),
)
contact_address = tables.Column(
accessor=Accessor('contact__address'),
diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po
index e31a7e13c..905beb442 100644
--- a/netbox/translations/en/LC_MESSAGES/django.po
+++ b/netbox/translations/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-17 05:02+0000\n"
+"POT-Creation-Date: 2024-08-23 05:01+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -181,18 +181,18 @@ msgstr ""
#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254
#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250
#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86
-#: netbox/dcim/forms/filtersets.py:219 netbox/dcim/forms/filtersets.py:266
-#: netbox/dcim/forms/filtersets.py:375 netbox/dcim/forms/filtersets.py:684
-#: netbox/dcim/forms/filtersets.py:928 netbox/dcim/forms/filtersets.py:952
-#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1080
-#: netbox/dcim/forms/filtersets.py:1488 netbox/dcim/forms/filtersets.py:1512
-#: netbox/dcim/forms/filtersets.py:1536 netbox/dcim/forms/model_forms.py:136
+#: netbox/dcim/forms/filtersets.py:219 netbox/dcim/forms/filtersets.py:270
+#: netbox/dcim/forms/filtersets.py:379 netbox/dcim/forms/filtersets.py:688
+#: netbox/dcim/forms/filtersets.py:932 netbox/dcim/forms/filtersets.py:956
+#: netbox/dcim/forms/filtersets.py:1046 netbox/dcim/forms/filtersets.py:1084
+#: netbox/dcim/forms/filtersets.py:1492 netbox/dcim/forms/filtersets.py:1516
+#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/model_forms.py:136
#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206
#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671
#: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153
#: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93
#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138
-#: netbox/dcim/tables/sites.py:129 netbox/extras/filtersets.py:477
+#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477
#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283
#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536
#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437
@@ -508,8 +508,8 @@ msgstr ""
#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205
#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702
#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098
-#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:995
-#: netbox/dcim/forms/filtersets.py:1371 netbox/dcim/forms/filtersets.py:1392
+#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:999
+#: netbox/dcim/forms/filtersets.py:1375 netbox/dcim/forms/filtersets.py:1396
#: netbox/dcim/tables/devices.py:692 netbox/dcim/tables/devices.py:749
#: netbox/dcim/tables/devices.py:974 netbox/dcim/tables/devicetypes.py:250
#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32
@@ -537,12 +537,12 @@ msgstr ""
#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719
#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896
#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152
-#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:288
-#: netbox/dcim/forms/filtersets.py:886 netbox/dcim/forms/filtersets.py:985
-#: netbox/dcim/forms/filtersets.py:1106 netbox/dcim/forms/filtersets.py:1176
-#: netbox/dcim/forms/filtersets.py:1198 netbox/dcim/forms/filtersets.py:1220
-#: netbox/dcim/forms/filtersets.py:1237 netbox/dcim/forms/filtersets.py:1271
-#: netbox/dcim/forms/filtersets.py:1366 netbox/dcim/forms/filtersets.py:1387
+#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:292
+#: netbox/dcim/forms/filtersets.py:890 netbox/dcim/forms/filtersets.py:989
+#: netbox/dcim/forms/filtersets.py:1110 netbox/dcim/forms/filtersets.py:1180
+#: netbox/dcim/forms/filtersets.py:1202 netbox/dcim/forms/filtersets.py:1224
+#: netbox/dcim/forms/filtersets.py:1241 netbox/dcim/forms/filtersets.py:1275
+#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/filtersets.py:1391
#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652
#: netbox/dcim/forms/object_import.py:84 netbox/dcim/forms/object_import.py:113
#: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178
@@ -598,13 +598,13 @@ msgstr ""
#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146
#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374
#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:231
-#: netbox/dcim/forms/filtersets.py:283 netbox/dcim/forms/filtersets.py:730
-#: netbox/dcim/forms/filtersets.py:855 netbox/dcim/forms/filtersets.py:889
-#: netbox/dcim/forms/filtersets.py:990 netbox/dcim/forms/filtersets.py:1101
+#: netbox/dcim/forms/filtersets.py:287 netbox/dcim/forms/filtersets.py:734
+#: netbox/dcim/forms/filtersets.py:859 netbox/dcim/forms/filtersets.py:893
+#: netbox/dcim/forms/filtersets.py:994 netbox/dcim/forms/filtersets.py:1105
#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:805
#: netbox/dcim/tables/devices.py:1034 netbox/dcim/tables/modules.py:69
#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66
-#: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:133
+#: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138
#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304
#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558
#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256
@@ -662,11 +662,11 @@ msgstr ""
#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279
#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158
#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:167
-#: netbox/dcim/forms/filtersets.py:199 netbox/dcim/forms/filtersets.py:250
-#: netbox/dcim/forms/filtersets.py:335 netbox/dcim/forms/filtersets.py:356
-#: netbox/dcim/forms/filtersets.py:653 netbox/dcim/forms/filtersets.py:847
-#: netbox/dcim/forms/filtersets.py:909 netbox/dcim/forms/filtersets.py:939
-#: netbox/dcim/forms/filtersets.py:1061 netbox/dcim/tables/power.py:88
+#: netbox/dcim/forms/filtersets.py:199 netbox/dcim/forms/filtersets.py:254
+#: netbox/dcim/forms/filtersets.py:339 netbox/dcim/forms/filtersets.py:360
+#: netbox/dcim/forms/filtersets.py:657 netbox/dcim/forms/filtersets.py:851
+#: netbox/dcim/forms/filtersets.py:913 netbox/dcim/forms/filtersets.py:943
+#: netbox/dcim/forms/filtersets.py:1065 netbox/dcim/tables/power.py:88
#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332
#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41
#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110
@@ -867,17 +867,17 @@ msgstr ""
#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260
#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256
#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94
-#: netbox/dcim/forms/filtersets.py:247 netbox/dcim/forms/filtersets.py:280
-#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:383
-#: netbox/dcim/forms/filtersets.py:650 netbox/dcim/forms/filtersets.py:693
-#: netbox/dcim/forms/filtersets.py:908 netbox/dcim/forms/filtersets.py:937
-#: netbox/dcim/forms/filtersets.py:957 netbox/dcim/forms/filtersets.py:1021
-#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1060
-#: netbox/dcim/forms/filtersets.py:1171 netbox/dcim/forms/filtersets.py:1193
-#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/filtersets.py:1232
-#: netbox/dcim/forms/filtersets.py:1252 netbox/dcim/forms/filtersets.py:1360
-#: netbox/dcim/forms/filtersets.py:1382 netbox/dcim/forms/filtersets.py:1403
-#: netbox/dcim/forms/filtersets.py:1418 netbox/dcim/forms/filtersets.py:1432
+#: netbox/dcim/forms/filtersets.py:251 netbox/dcim/forms/filtersets.py:284
+#: netbox/dcim/forms/filtersets.py:336 netbox/dcim/forms/filtersets.py:387
+#: netbox/dcim/forms/filtersets.py:654 netbox/dcim/forms/filtersets.py:697
+#: netbox/dcim/forms/filtersets.py:912 netbox/dcim/forms/filtersets.py:941
+#: netbox/dcim/forms/filtersets.py:961 netbox/dcim/forms/filtersets.py:1025
+#: netbox/dcim/forms/filtersets.py:1055 netbox/dcim/forms/filtersets.py:1064
+#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1197
+#: netbox/dcim/forms/filtersets.py:1219 netbox/dcim/forms/filtersets.py:1236
+#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1364
+#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1407
+#: netbox/dcim/forms/filtersets.py:1422 netbox/dcim/forms/filtersets.py:1436
#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211
#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676
#: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30
@@ -902,9 +902,9 @@ msgstr ""
#: netbox/circuits/forms/filtersets.py:30
#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:138
#: netbox/dcim/forms/filtersets.py:152 netbox/dcim/forms/filtersets.py:168
-#: netbox/dcim/forms/filtersets.py:200 netbox/dcim/forms/filtersets.py:251
-#: netbox/dcim/forms/filtersets.py:336 netbox/dcim/forms/filtersets.py:407
-#: netbox/dcim/forms/filtersets.py:654 netbox/dcim/forms/filtersets.py:1022
+#: netbox/dcim/forms/filtersets.py:200 netbox/dcim/forms/filtersets.py:255
+#: netbox/dcim/forms/filtersets.py:340 netbox/dcim/forms/filtersets.py:411
+#: netbox/dcim/forms/filtersets.py:658 netbox/dcim/forms/filtersets.py:1026
#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46
#: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70
#: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19
@@ -919,11 +919,11 @@ msgstr ""
#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755
#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72
#: netbox/dcim/forms/filtersets.py:179 netbox/dcim/forms/filtersets.py:205
-#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:361
-#: netbox/dcim/forms/filtersets.py:670 netbox/dcim/forms/filtersets.py:914
-#: netbox/dcim/forms/filtersets.py:944 netbox/dcim/forms/filtersets.py:1028
-#: netbox/dcim/forms/filtersets.py:1067 netbox/dcim/forms/filtersets.py:1480
-#: netbox/dcim/forms/filtersets.py:1504 netbox/dcim/forms/filtersets.py:1528
+#: netbox/dcim/forms/filtersets.py:262 netbox/dcim/forms/filtersets.py:365
+#: netbox/dcim/forms/filtersets.py:674 netbox/dcim/forms/filtersets.py:918
+#: netbox/dcim/forms/filtersets.py:948 netbox/dcim/forms/filtersets.py:1032
+#: netbox/dcim/forms/filtersets.py:1071 netbox/dcim/forms/filtersets.py:1484
+#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1532
#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375
#: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85
#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206
@@ -946,9 +946,9 @@ msgstr ""
#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231
#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77
#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210
-#: netbox/dcim/forms/filtersets.py:271 netbox/dcim/forms/filtersets.py:366
-#: netbox/dcim/forms/filtersets.py:675 netbox/dcim/forms/filtersets.py:919
-#: netbox/dcim/forms/filtersets.py:1033 netbox/dcim/forms/filtersets.py:1072
+#: netbox/dcim/forms/filtersets.py:275 netbox/dcim/forms/filtersets.py:370
+#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923
+#: netbox/dcim/forms/filtersets.py:1037 netbox/dcim/forms/filtersets.py:1076
#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472
#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459
#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222
@@ -966,13 +966,13 @@ msgstr ""
#: netbox/circuits/forms/filtersets.py:100
#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64
#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:166
-#: netbox/dcim/forms/filtersets.py:198 netbox/dcim/forms/filtersets.py:846
-#: netbox/dcim/forms/filtersets.py:938 netbox/dcim/forms/filtersets.py:1062
-#: netbox/dcim/forms/filtersets.py:1170 netbox/dcim/forms/filtersets.py:1192
-#: netbox/dcim/forms/filtersets.py:1214 netbox/dcim/forms/filtersets.py:1231
-#: netbox/dcim/forms/filtersets.py:1248 netbox/dcim/forms/filtersets.py:1359
-#: netbox/dcim/forms/filtersets.py:1381 netbox/dcim/forms/filtersets.py:1402
-#: netbox/dcim/forms/filtersets.py:1417 netbox/dcim/forms/filtersets.py:1430
+#: netbox/dcim/forms/filtersets.py:198 netbox/dcim/forms/filtersets.py:850
+#: netbox/dcim/forms/filtersets.py:942 netbox/dcim/forms/filtersets.py:1066
+#: netbox/dcim/forms/filtersets.py:1174 netbox/dcim/forms/filtersets.py:1196
+#: netbox/dcim/forms/filtersets.py:1218 netbox/dcim/forms/filtersets.py:1235
+#: netbox/dcim/forms/filtersets.py:1252 netbox/dcim/forms/filtersets.py:1363
+#: netbox/dcim/forms/filtersets.py:1385 netbox/dcim/forms/filtersets.py:1406
+#: netbox/dcim/forms/filtersets.py:1421 netbox/dcim/forms/filtersets.py:1434
#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112
#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183
#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230
@@ -1231,7 +1231,7 @@ msgstr ""
#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23
#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24
#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78
-#: netbox/dcim/tables/sites.py:125 netbox/extras/forms/filtersets.py:191
+#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191
#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91
#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149
#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263
@@ -1360,7 +1360,7 @@ msgstr ""
#: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29
#: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39
#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76
-#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:103
+#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108
#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69
#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136
#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329
@@ -1536,7 +1536,7 @@ msgstr ""
#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40
#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020
-#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1288
+#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1292
#: netbox/dcim/tables/devices.py:545 netbox/dcim/tables/devicetypes.py:225
#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162
#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120
@@ -1639,7 +1639,7 @@ msgid "Completed before"
msgstr ""
#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361
-#: netbox/dcim/forms/filtersets.py:354 netbox/dcim/forms/filtersets.py:398
+#: netbox/dcim/forms/filtersets.py:358 netbox/dcim/forms/filtersets.py:402
#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465
#: netbox/extras/forms/filtersets.py:505
#: netbox/templates/dcim/rackreservation.html:58
@@ -1721,7 +1721,7 @@ msgstr ""
msgid "User Preferences"
msgstr ""
-#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:663
+#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:667
#: netbox/templates/core/inc/config_data.html:127
#: netbox/users/forms/model_forms.py:65
msgid "Miscellaneous"
@@ -2351,7 +2351,7 @@ msgid "Virtual"
msgstr ""
#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052
-#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1251
+#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1255
#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344
#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131
#: netbox/templates/dcim/interface.html:210
@@ -2392,9 +2392,9 @@ msgstr ""
msgid "Cellular"
msgstr ""
-#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:304
-#: netbox/dcim/forms/filtersets.py:740 netbox/dcim/forms/filtersets.py:894
-#: netbox/dcim/forms/filtersets.py:1446
+#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:308
+#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:898
+#: netbox/dcim/forms/filtersets.py:1450
#: netbox/templates/dcim/inventoryitem.html:52
#: netbox/templates/dcim/virtualchassis_edit.html:54
msgid "Serial"
@@ -2467,7 +2467,7 @@ msgstr ""
msgid "Fiber"
msgstr ""
-#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1158
+#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1162
msgid "Connected"
msgstr ""
@@ -2637,61 +2637,61 @@ msgstr ""
msgid "Default platform (slug)"
msgstr ""
-#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:453
+#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:457
msgid "Has a front image"
msgstr ""
-#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:460
+#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:464
msgid "Has a rear image"
msgstr ""
#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630
-#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:467
-#: netbox/dcim/forms/filtersets.py:563 netbox/dcim/forms/filtersets.py:779
+#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:471
+#: netbox/dcim/forms/filtersets.py:567 netbox/dcim/forms/filtersets.py:783
msgid "Has console ports"
msgstr ""
#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634
-#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:474
-#: netbox/dcim/forms/filtersets.py:570 netbox/dcim/forms/filtersets.py:786
+#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:478
+#: netbox/dcim/forms/filtersets.py:574 netbox/dcim/forms/filtersets.py:790
msgid "Has console server ports"
msgstr ""
#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638
-#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:481
-#: netbox/dcim/forms/filtersets.py:577 netbox/dcim/forms/filtersets.py:793
+#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:485
+#: netbox/dcim/forms/filtersets.py:581 netbox/dcim/forms/filtersets.py:797
msgid "Has power ports"
msgstr ""
#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642
-#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:488
-#: netbox/dcim/forms/filtersets.py:584 netbox/dcim/forms/filtersets.py:800
+#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:492
+#: netbox/dcim/forms/filtersets.py:588 netbox/dcim/forms/filtersets.py:804
msgid "Has power outlets"
msgstr ""
#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646
-#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:495
-#: netbox/dcim/forms/filtersets.py:591 netbox/dcim/forms/filtersets.py:807
+#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:499
+#: netbox/dcim/forms/filtersets.py:595 netbox/dcim/forms/filtersets.py:811
msgid "Has interfaces"
msgstr ""
#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650
-#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:502
-#: netbox/dcim/forms/filtersets.py:598 netbox/dcim/forms/filtersets.py:814
+#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:506
+#: netbox/dcim/forms/filtersets.py:602 netbox/dcim/forms/filtersets.py:818
msgid "Has pass-through ports"
msgstr ""
#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103
-#: netbox/dcim/forms/filtersets.py:516
+#: netbox/dcim/forms/filtersets.py:520
msgid "Has module bays"
msgstr ""
#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107
-#: netbox/dcim/forms/filtersets.py:509
+#: netbox/dcim/forms/filtersets.py:513
msgid "Has device bays"
msgstr ""
-#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:523
+#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:527
msgid "Has inventory items"
msgstr ""
@@ -2766,7 +2766,7 @@ msgid "Is full depth"
msgstr ""
#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18
-#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:1303
+#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:1307
#: netbox/dcim/models/device_components.py:519
#: netbox/virtualization/filtersets.py:230
#: netbox/virtualization/filtersets.py:297
@@ -2776,7 +2776,7 @@ msgid "MAC address"
msgstr ""
#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222
-#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:861
+#: netbox/dcim/forms/filtersets.py:762 netbox/dcim/forms/filtersets.py:865
#: netbox/virtualization/filtersets.py:234
#: netbox/virtualization/forms/filtersets.py:176
msgid "Has a primary IP"
@@ -2884,7 +2884,7 @@ msgid "Assigned VID"
msgstr ""
#: netbox/dcim/filtersets.py:1557 netbox/dcim/forms/bulk_edit.py:1387
-#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1346
+#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1350
#: netbox/dcim/forms/model_forms.py:1325
#: netbox/dcim/models/device_components.py:712
#: netbox/dcim/tables/devices.py:615 netbox/ipam/filtersets.py:316
@@ -2927,7 +2927,7 @@ msgstr ""
msgid "L2VPN (ID)"
msgstr ""
-#: netbox/dcim/filtersets.py:1574 netbox/dcim/forms/filtersets.py:1351
+#: netbox/dcim/filtersets.py:1574 netbox/dcim/forms/filtersets.py:1355
#: netbox/dcim/tables/devices.py:562 netbox/ipam/filtersets.py:1022
#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133
#: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66
@@ -2964,7 +2964,7 @@ msgid "LAG interface (ID)"
msgstr ""
#: netbox/dcim/filtersets.py:1657 netbox/dcim/filtersets.py:1669
-#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/model_forms.py:1637
+#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/model_forms.py:1637
#: netbox/templates/dcim/virtualdevicecontext.html:15
msgid "Virtual Device Context"
msgstr ""
@@ -3011,7 +3011,7 @@ msgstr ""
msgid "Tenant (slug)"
msgstr ""
-#: netbox/dcim/filtersets.py:1921 netbox/dcim/forms/filtersets.py:1008
+#: netbox/dcim/filtersets.py:1921 netbox/dcim/forms/filtersets.py:1012
msgid "Unterminated"
msgstr ""
@@ -3030,7 +3030,7 @@ msgstr ""
msgid "Tags"
msgstr ""
-#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1408
+#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1412
#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489
#: netbox/dcim/forms/object_create.py:197
#: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165
@@ -3107,8 +3107,8 @@ msgstr ""
#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160
#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204
-#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:301
-#: netbox/dcim/forms/filtersets.py:708 netbox/dcim/forms/filtersets.py:1438
+#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:305
+#: netbox/dcim/forms/filtersets.py:712 netbox/dcim/forms/filtersets.py:1442
#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018
#: netbox/dcim/forms/model_forms.py:1457 netbox/dcim/forms/object_import.py:181
#: netbox/dcim/tables/devices.py:169 netbox/dcim/tables/devices.py:797
@@ -3155,14 +3155,14 @@ msgstr ""
msgid "Serial Number"
msgstr ""
-#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:308
-#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:898
-#: netbox/dcim/forms/filtersets.py:1450
+#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:312
+#: netbox/dcim/forms/filtersets.py:748 netbox/dcim/forms/filtersets.py:902
+#: netbox/dcim/forms/filtersets.py:1454
msgid "Asset tag"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217
-#: netbox/dcim/forms/filtersets.py:293 netbox/templates/dcim/rack.html:86
+#: netbox/dcim/forms/filtersets.py:297 netbox/templates/dcim/rack.html:86
msgid "Width"
msgstr ""
@@ -3194,10 +3194,10 @@ msgstr ""
#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459
#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495
#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355
-#: netbox/dcim/forms/filtersets.py:252 netbox/dcim/forms/filtersets.py:313
-#: netbox/dcim/forms/filtersets.py:337 netbox/dcim/forms/filtersets.py:424
-#: netbox/dcim/forms/filtersets.py:530 netbox/dcim/forms/filtersets.py:549
-#: netbox/dcim/forms/filtersets.py:605 netbox/dcim/forms/model_forms.py:232
+#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:317
+#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:428
+#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/filtersets.py:553
+#: netbox/dcim/forms/filtersets.py:609 netbox/dcim/forms/model_forms.py:232
#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107
#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103
#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108
@@ -3214,15 +3214,15 @@ msgstr ""
msgid "Weight"
msgstr ""
-#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:318
+#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:322
msgid "Max weight"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441
#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228
#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360
-#: netbox/dcim/forms/filtersets.py:323 netbox/dcim/forms/filtersets.py:534
-#: netbox/dcim/forms/filtersets.py:609
+#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:538
+#: netbox/dcim/forms/filtersets.py:613
msgid "Weight unit"
msgstr ""
@@ -3230,9 +3230,9 @@ msgstr ""
#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270
#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297
#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103
-#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:355
-#: netbox/dcim/forms/filtersets.py:393 netbox/dcim/forms/filtersets.py:703
-#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1098
+#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:359
+#: netbox/dcim/forms/filtersets.py:397 netbox/dcim/forms/filtersets.py:707
+#: netbox/dcim/forms/filtersets.py:970 netbox/dcim/forms/filtersets.py:1102
#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248
#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703
#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161
@@ -3249,9 +3249,9 @@ msgid "Rack"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628
-#: netbox/dcim/forms/filtersets.py:249 netbox/dcim/forms/filtersets.py:334
-#: netbox/dcim/forms/filtersets.py:417 netbox/dcim/forms/filtersets.py:544
-#: netbox/dcim/forms/filtersets.py:652 netbox/dcim/forms/filtersets.py:873
+#: netbox/dcim/forms/filtersets.py:253 netbox/dcim/forms/filtersets.py:338
+#: netbox/dcim/forms/filtersets.py:421 netbox/dcim/forms/filtersets.py:548
+#: netbox/dcim/forms/filtersets.py:656 netbox/dcim/forms/filtersets.py:877
#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527
#: netbox/templates/dcim/device_edit.html:20
msgid "Hardware"
@@ -3263,9 +3263,9 @@ msgstr ""
#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316
#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389
#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021
-#: netbox/dcim/forms/filtersets.py:430 netbox/dcim/forms/filtersets.py:555
-#: netbox/dcim/forms/filtersets.py:631 netbox/dcim/forms/filtersets.py:713
-#: netbox/dcim/forms/filtersets.py:878 netbox/dcim/forms/filtersets.py:1443
+#: netbox/dcim/forms/filtersets.py:434 netbox/dcim/forms/filtersets.py:559
+#: netbox/dcim/forms/filtersets.py:635 netbox/dcim/forms/filtersets.py:717
+#: netbox/dcim/forms/filtersets.py:882 netbox/dcim/forms/filtersets.py:1447
#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293
#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379
#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462
@@ -3283,12 +3283,12 @@ msgid "Manufacturer"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322
-#: netbox/dcim/forms/filtersets.py:435 netbox/dcim/forms/model_forms.py:297
+#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/model_forms.py:297
msgid "Default platform"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471
-#: netbox/dcim/forms/filtersets.py:438 netbox/dcim/forms/filtersets.py:558
+#: netbox/dcim/forms/filtersets.py:442 netbox/dcim/forms/filtersets.py:562
msgid "Part number"
msgstr ""
@@ -3301,8 +3301,8 @@ msgid "Exclude from utilization"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603
-#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:447
-#: netbox/dcim/forms/filtersets.py:735 netbox/templates/dcim/device.html:98
+#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:451
+#: netbox/dcim/forms/filtersets.py:739 netbox/templates/dcim/device.html:98
#: netbox/templates/dcim/devicetype.html:65
msgid "Airflow"
msgstr ""
@@ -3329,8 +3329,8 @@ msgstr ""
#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373
#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396
#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525
-#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:620
-#: netbox/dcim/forms/filtersets.py:636 netbox/dcim/forms/filtersets.py:754
+#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:624
+#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:758
#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384
#: netbox/dcim/forms/model_forms.py:498
#: netbox/virtualization/forms/bulk_import.py:132
@@ -3353,7 +3353,7 @@ msgid "Device role"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437
-#: netbox/dcim/forms/filtersets.py:727 netbox/dcim/forms/model_forms.py:394
+#: netbox/dcim/forms/filtersets.py:731 netbox/dcim/forms/model_forms.py:394
#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182
#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186
#: netbox/templates/dcim/platform.html:26
@@ -3375,14 +3375,14 @@ msgstr ""
#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962
#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361
#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130
-#: netbox/dcim/forms/filtersets.py:852 netbox/dcim/forms/filtersets.py:982
-#: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1194
-#: netbox/dcim/forms/filtersets.py:1216 netbox/dcim/forms/filtersets.py:1233
-#: netbox/dcim/forms/filtersets.py:1253 netbox/dcim/forms/filtersets.py:1361
-#: netbox/dcim/forms/filtersets.py:1383 netbox/dcim/forms/filtersets.py:1404
-#: netbox/dcim/forms/filtersets.py:1419 netbox/dcim/forms/filtersets.py:1433
-#: netbox/dcim/forms/filtersets.py:1496 netbox/dcim/forms/filtersets.py:1520
-#: netbox/dcim/forms/filtersets.py:1544 netbox/dcim/forms/model_forms.py:576
+#: netbox/dcim/forms/filtersets.py:856 netbox/dcim/forms/filtersets.py:986
+#: netbox/dcim/forms/filtersets.py:1176 netbox/dcim/forms/filtersets.py:1198
+#: netbox/dcim/forms/filtersets.py:1220 netbox/dcim/forms/filtersets.py:1237
+#: netbox/dcim/forms/filtersets.py:1257 netbox/dcim/forms/filtersets.py:1365
+#: netbox/dcim/forms/filtersets.py:1387 netbox/dcim/forms/filtersets.py:1408
+#: netbox/dcim/forms/filtersets.py:1423 netbox/dcim/forms/filtersets.py:1437
+#: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1524
+#: netbox/dcim/forms/filtersets.py:1548 netbox/dcim/forms/model_forms.py:576
#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156
#: netbox/dcim/forms/model_forms.py:1611 netbox/dcim/forms/object_create.py:257
#: netbox/dcim/tables/connections.py:22 netbox/dcim/tables/connections.py:41
@@ -3466,13 +3466,13 @@ msgstr ""
msgid "Label"
msgstr ""
-#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:999
+#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1003
#: netbox/templates/dcim/cable.html:50
msgid "Length"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165
-#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1003
+#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1007
msgid "Length unit"
msgstr ""
@@ -3482,31 +3482,31 @@ msgid "Domain"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284
-#: netbox/dcim/forms/filtersets.py:1089 netbox/dcim/forms/model_forms.py:698
+#: netbox/dcim/forms/filtersets.py:1093 netbox/dcim/forms/model_forms.py:698
msgid "Power panel"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320
-#: netbox/dcim/forms/filtersets.py:1111 netbox/templates/dcim/powerfeed.html:83
+#: netbox/dcim/forms/filtersets.py:1115 netbox/templates/dcim/powerfeed.html:83
msgid "Supply"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325
-#: netbox/dcim/forms/filtersets.py:1116 netbox/templates/dcim/powerfeed.html:95
+#: netbox/dcim/forms/filtersets.py:1120 netbox/templates/dcim/powerfeed.html:95
msgid "Phase"
msgstr ""
-#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1121
+#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1125
#: netbox/templates/dcim/powerfeed.html:87
msgid "Voltage"
msgstr ""
-#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1125
+#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1129
#: netbox/templates/dcim/powerfeed.html:91
msgid "Amperage"
msgstr ""
-#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1129
+#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1133
msgid "Max utilization"
msgstr ""
@@ -3545,7 +3545,7 @@ msgid "Management only"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344
-#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1312
+#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1316
#: netbox/dcim/forms/object_import.py:90
#: netbox/dcim/models/device_component_templates.py:411
#: netbox/dcim/models/device_components.py:671
@@ -3553,14 +3553,14 @@ msgid "PoE mode"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350
-#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1317
+#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1321
#: netbox/dcim/forms/object_import.py:95
#: netbox/dcim/models/device_component_templates.py:417
#: netbox/dcim/models/device_components.py:677
msgid "PoE type"
msgstr ""
-#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1322
+#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1326
#: netbox/dcim/forms/object_import.py:100
msgid "Wireless role"
msgstr ""
@@ -3588,8 +3588,8 @@ msgid "Virtual device contexts"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653
-#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1181
-#: netbox/dcim/forms/filtersets.py:1203 netbox/dcim/forms/filtersets.py:1276
+#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1185
+#: netbox/dcim/forms/filtersets.py:1207 netbox/dcim/forms/filtersets.py:1280
#: netbox/dcim/tables/devices.py:599
#: netbox/templates/circuits/inc/circuit_termination_fields.html:67
#: netbox/templates/dcim/consoleport.html:40
@@ -3643,7 +3643,7 @@ msgstr ""
msgid "Wireless LANs"
msgstr ""
-#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1249
+#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1253
#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284
#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169
#: netbox/templates/dcim/interface.html:122
@@ -3652,13 +3652,13 @@ msgstr ""
msgid "Addressing"
msgstr ""
-#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:651
+#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:655
#: netbox/dcim/forms/model_forms.py:1338
#: netbox/virtualization/forms/model_forms.py:350
msgid "Operation"
msgstr ""
-#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1250
+#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1254
#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340
msgid "PoE"
msgstr ""
@@ -3816,8 +3816,8 @@ msgstr ""
msgid "Virtual chassis"
msgstr ""
-#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:659
-#: netbox/dcim/forms/filtersets.py:829 netbox/dcim/forms/model_forms.py:465
+#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:663
+#: netbox/dcim/forms/filtersets.py:833 netbox/dcim/forms/model_forms.py:465
#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548
#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493
#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459
@@ -3961,7 +3961,7 @@ msgstr ""
msgid "Physical medium"
msgstr ""
-#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1283
+#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1287
msgid "Duplex"
msgstr ""
@@ -4193,58 +4193,63 @@ msgstr ""
msgid "Parent group"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:248 netbox/dcim/forms/filtersets.py:333
+#: netbox/dcim/forms/filtersets.py:236 netbox/templates/dcim/location.html:58
+#: netbox/templates/dcim/site.html:56
+msgid "Facility"
+msgstr ""
+
+#: netbox/dcim/forms/filtersets.py:252 netbox/dcim/forms/filtersets.py:337
msgid "Function"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/model_forms.py:317
+#: netbox/dcim/forms/filtersets.py:423 netbox/dcim/forms/model_forms.py:317
#: netbox/templates/inc/panels/image_attachments.html:6
msgid "Images"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:422 netbox/dcim/forms/filtersets.py:547
-#: netbox/dcim/forms/filtersets.py:657
+#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:551
+#: netbox/dcim/forms/filtersets.py:661
msgid "Components"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:442
+#: netbox/dcim/forms/filtersets.py:446
msgid "Subdevice role"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:721
+#: netbox/dcim/forms/filtersets.py:725
msgid "Model"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:765
+#: netbox/dcim/forms/filtersets.py:769
msgid "Has an OOB IP"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:772
+#: netbox/dcim/forms/filtersets.py:776
msgid "Virtual chassis member"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:821
+#: netbox/dcim/forms/filtersets.py:825
msgid "Has virtual device contexts"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:834 netbox/extras/filtersets.py:537
+#: netbox/dcim/forms/filtersets.py:838 netbox/extras/filtersets.py:537
#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464
#: netbox/ipam/forms/model_forms.py:624
#: netbox/virtualization/forms/filtersets.py:112
msgid "Cluster group"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1141
+#: netbox/dcim/forms/filtersets.py:1145
msgid "Cabled"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1148
+#: netbox/dcim/forms/filtersets.py:1152
msgid "Occupied"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1173 netbox/dcim/forms/filtersets.py:1195
-#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1234
-#: netbox/dcim/forms/filtersets.py:1254 netbox/dcim/tables/devices.py:356
+#: netbox/dcim/forms/filtersets.py:1177 netbox/dcim/forms/filtersets.py:1199
+#: netbox/dcim/forms/filtersets.py:1221 netbox/dcim/forms/filtersets.py:1238
+#: netbox/dcim/forms/filtersets.py:1258 netbox/dcim/tables/devices.py:356
#: netbox/templates/dcim/consoleport.html:55
#: netbox/templates/dcim/consoleserverport.html:55
#: netbox/templates/dcim/frontport.html:69
@@ -4256,40 +4261,40 @@ msgstr ""
msgid "Connection"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1266 netbox/extras/forms/bulk_edit.py:316
+#: netbox/dcim/forms/filtersets.py:1270 netbox/extras/forms/bulk_edit.py:316
#: netbox/extras/forms/bulk_import.py:239 netbox/extras/forms/filtersets.py:473
#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519
#: netbox/templates/extras/journalentry.html:30
msgid "Kind"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1295
+#: netbox/dcim/forms/filtersets.py:1299
msgid "Mgmt only"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/model_forms.py:1330
+#: netbox/dcim/forms/filtersets.py:1311 netbox/dcim/forms/model_forms.py:1330
#: netbox/dcim/models/device_components.py:630
#: netbox/templates/dcim/interface.html:129
msgid "WWN"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1327
+#: netbox/dcim/forms/filtersets.py:1331
msgid "Wireless channel"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1331
+#: netbox/dcim/forms/filtersets.py:1335
msgid "Channel frequency (MHz)"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1335
+#: netbox/dcim/forms/filtersets.py:1339
msgid "Channel width (MHz)"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1339 netbox/templates/dcim/interface.html:85
+#: netbox/dcim/forms/filtersets.py:1343 netbox/templates/dcim/interface.html:85
msgid "Transmit power (dBm)"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1362 netbox/dcim/forms/filtersets.py:1384
+#: netbox/dcim/forms/filtersets.py:1366 netbox/dcim/forms/filtersets.py:1388
#: netbox/dcim/tables/devices.py:319 netbox/templates/dcim/cable.html:12
#: netbox/templates/dcim/cable_trace.html:46
#: netbox/templates/dcim/frontport.html:77
@@ -4300,7 +4305,7 @@ msgstr ""
msgid "Cable"
msgstr ""
-#: netbox/dcim/forms/filtersets.py:1454 netbox/dcim/tables/devices.py:920
+#: netbox/dcim/forms/filtersets.py:1458 netbox/dcim/tables/devices.py:920
msgid "Discovered"
msgstr ""
@@ -6054,9 +6059,10 @@ msgid "Reachable"
msgstr ""
#: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106
-#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:143
-#: netbox/extras/tables/tables.py:442 netbox/netbox/navigation/menu.py:56
-#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62
+#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105
+#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442
+#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60
+#: netbox/netbox/navigation/menu.py:62
#: netbox/virtualization/forms/model_forms.py:122
#: netbox/virtualization/tables/clusters.py:83
#: netbox/virtualization/views.py:205
@@ -6139,8 +6145,8 @@ msgid "Power outlets"
msgstr ""
#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1052
-#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:988
-#: netbox/dcim/views.py:1227 netbox/dcim/views.py:1908
+#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990
+#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910
#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237
#: netbox/templates/dcim/device/base.html:37
#: netbox/templates/dcim/device_list.html:43
@@ -6178,8 +6184,8 @@ msgid "Module Bay"
msgstr ""
#: netbox/dcim/tables/devices.py:313 netbox/dcim/tables/devicetypes.py:48
-#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1063
-#: netbox/dcim/views.py:2006 netbox/netbox/navigation/menu.py:90
+#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065
+#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90
#: netbox/templates/dcim/device/base.html:52
#: netbox/templates/dcim/device_list.html:71
#: netbox/templates/dcim/devicetype/base.html:49
@@ -6303,8 +6309,8 @@ msgstr ""
msgid "Instances"
msgstr ""
-#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:928
-#: netbox/dcim/views.py:1167 netbox/dcim/views.py:1844
+#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930
+#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846
#: netbox/netbox/navigation/menu.py:84
#: netbox/templates/dcim/device/base.html:25
#: netbox/templates/dcim/device_list.html:15
@@ -6314,8 +6320,8 @@ msgstr ""
msgid "Console Ports"
msgstr ""
-#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:943
-#: netbox/dcim/views.py:1182 netbox/dcim/views.py:1860
+#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945
+#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862
#: netbox/netbox/navigation/menu.py:85
#: netbox/templates/dcim/device/base.html:28
#: netbox/templates/dcim/device_list.html:22
@@ -6325,8 +6331,8 @@ msgstr ""
msgid "Console Server Ports"
msgstr ""
-#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:958
-#: netbox/dcim/views.py:1197 netbox/dcim/views.py:1876
+#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960
+#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878
#: netbox/netbox/navigation/menu.py:86
#: netbox/templates/dcim/device/base.html:31
#: netbox/templates/dcim/device_list.html:29
@@ -6336,8 +6342,8 @@ msgstr ""
msgid "Power Ports"
msgstr ""
-#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:973
-#: netbox/dcim/views.py:1212 netbox/dcim/views.py:1892
+#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975
+#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894
#: netbox/netbox/navigation/menu.py:87
#: netbox/templates/dcim/device/base.html:34
#: netbox/templates/dcim/device_list.html:36
@@ -6347,8 +6353,8 @@ msgstr ""
msgid "Power Outlets"
msgstr ""
-#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1003
-#: netbox/dcim/views.py:1242 netbox/dcim/views.py:1930
+#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005
+#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932
#: netbox/netbox/navigation/menu.py:82
#: netbox/templates/dcim/device/base.html:40
#: netbox/templates/dcim/devicetype/base.html:37
@@ -6357,8 +6363,8 @@ msgstr ""
msgid "Front Ports"
msgstr ""
-#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1018
-#: netbox/dcim/views.py:1257 netbox/dcim/views.py:1946
+#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020
+#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948
#: netbox/netbox/navigation/menu.py:83
#: netbox/templates/dcim/device/base.html:43
#: netbox/templates/dcim/device_list.html:50
@@ -6368,16 +6374,16 @@ msgstr ""
msgid "Rear Ports"
msgstr ""
-#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1048
-#: netbox/dcim/views.py:1986 netbox/netbox/navigation/menu.py:89
+#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050
+#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89
#: netbox/templates/dcim/device/base.html:49
#: netbox/templates/dcim/device_list.html:57
#: netbox/templates/dcim/devicetype/base.html:46
msgid "Device Bays"
msgstr ""
-#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1033
-#: netbox/dcim/views.py:1966 netbox/netbox/navigation/menu.py:88
+#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035
+#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88
#: netbox/templates/dcim/device/base.html:46
#: netbox/templates/dcim/device_list.html:64
#: netbox/templates/dcim/devicetype/base.html:43
@@ -6397,7 +6403,7 @@ msgstr ""
msgid "Available Power (VA)"
msgstr ""
-#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:138
+#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143
#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26
msgid "Racks"
msgstr ""
@@ -6440,61 +6446,61 @@ msgstr ""
msgid "Disconnected {count} {type}"
msgstr ""
-#: netbox/dcim/views.py:686 netbox/netbox/navigation/menu.py:28
+#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28
msgid "Reservations"
msgstr ""
-#: netbox/dcim/views.py:705 netbox/templates/dcim/location.html:90
+#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90
#: netbox/templates/dcim/site.html:140
msgid "Non-Racked Devices"
msgstr ""
-#: netbox/dcim/views.py:2019 netbox/extras/forms/model_forms.py:453
+#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453
#: netbox/templates/extras/configcontext.html:10
#: netbox/virtualization/forms/model_forms.py:225
#: netbox/virtualization/views.py:406
msgid "Config Context"
msgstr ""
-#: netbox/dcim/views.py:2029 netbox/virtualization/views.py:416
+#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416
msgid "Render Config"
msgstr ""
-#: netbox/dcim/views.py:2062 netbox/virtualization/views.py:449
+#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449
#, python-brace-format
msgid "An error occurred while rendering the template: {error}"
msgstr ""
-#: netbox/dcim/views.py:2080 netbox/extras/tables/tables.py:447
+#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447
#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236
#: netbox/virtualization/views.py:179
msgid "Virtual Machines"
msgstr ""
-#: netbox/dcim/views.py:2828
+#: netbox/dcim/views.py:2830
#, python-brace-format
msgid "Installed device {device} in bay {device_bay}."
msgstr ""
-#: netbox/dcim/views.py:2869
+#: netbox/dcim/views.py:2871
#, python-brace-format
msgid "Removed device {device} from bay {device_bay}."
msgstr ""
-#: netbox/dcim/views.py:2975 netbox/ipam/tables/ip.py:234
+#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234
msgid "Children"
msgstr ""
-#: netbox/dcim/views.py:3441
+#: netbox/dcim/views.py:3443
msgid "Added member {escape(device)}"
msgstr ""
-#: netbox/dcim/views.py:3488
+#: netbox/dcim/views.py:3490
#, python-brace-format
msgid "Unable to remove master device {device} from the virtual chassis."
msgstr ""
-#: netbox/dcim/views.py:3501
+#: netbox/dcim/views.py:3503
#, python-brace-format
msgid "Removed {device} from virtual chassis {chassis}"
msgstr ""
@@ -11937,10 +11943,6 @@ msgstr ""
msgid "Add Child Location"
msgstr ""
-#: netbox/templates/dcim/location.html:58 netbox/templates/dcim/site.html:56
-msgid "Facility"
-msgstr ""
-
#: netbox/templates/dcim/location.html:77
msgid "Child Locations"
msgstr ""
@@ -13666,19 +13668,19 @@ msgstr ""
msgid "Contact Phone"
msgstr ""
-#: netbox/tenancy/tables/contacts.py:120
+#: netbox/tenancy/tables/contacts.py:121
msgid "Contact Email"
msgstr ""
-#: netbox/tenancy/tables/contacts.py:124
+#: netbox/tenancy/tables/contacts.py:125
msgid "Contact Address"
msgstr ""
-#: netbox/tenancy/tables/contacts.py:128
+#: netbox/tenancy/tables/contacts.py:129
msgid "Contact Link"
msgstr ""
-#: netbox/tenancy/tables/contacts.py:132
+#: netbox/tenancy/tables/contacts.py:133
msgid "Contact Description"
msgstr ""
diff --git a/netbox/utilities/templatetags/builtins/filters.py b/netbox/utilities/templatetags/builtins/filters.py
index 738b9a23e..b1c8c524b 100644
--- a/netbox/utilities/templatetags/builtins/filters.py
+++ b/netbox/utilities/templatetags/builtins/filters.py
@@ -8,6 +8,7 @@ from django.contrib.contenttypes.models import ContentType
from django.contrib.humanize.templatetags.humanize import naturalday, naturaltime
from django.utils.html import escape
from django.utils.safestring import mark_safe
+from django.utils.timezone import localtime
from markdown import markdown
from markdown.extensions.tables import TableExtension
@@ -218,7 +219,8 @@ def isodate(value):
text = value.isoformat()
return mark_safe(f'{text}')
elif type(value) is datetime.datetime:
- text = value.date().isoformat()
+ local_value = localtime(value) if value.tzinfo else value
+ text = local_value.date().isoformat()
return mark_safe(f'{text}')
else:
return ''
@@ -229,7 +231,8 @@ def isotime(value, spec='seconds'):
if type(value) is datetime.time:
return value.isoformat(timespec=spec)
if type(value) is datetime.datetime:
- return value.time().isoformat(timespec=spec)
+ local_value = localtime(value) if value.tzinfo else value
+ return local_value.time().isoformat(timespec=spec)
return ''