diff --git a/docs/_theme/partials/copyright.html b/docs/_theme/partials/copyright.html new file mode 100644 index 000000000..cfbfd5444 --- /dev/null +++ b/docs/_theme/partials/copyright.html @@ -0,0 +1,18 @@ + +{% if not config.extra.build_public %} + +{% endif %} diff --git a/netbox/ipam/models/asns.py b/netbox/ipam/models/asns.py index ba483a745..d02efd91c 100644 --- a/netbox/ipam/models/asns.py +++ b/netbox/ipam/models/asns.py @@ -149,3 +149,7 @@ class ASN(PrimaryModel): return f'{self.asn} ({self.asn // 65536}.{self.asn % 65536})' else: return self.asn + + @property + def prefixed_name(self): + return f'AS{self.asn_with_asdot}' diff --git a/netbox/ipam/search.py b/netbox/ipam/search.py index 59b741b8f..414321b7d 100644 --- a/netbox/ipam/search.py +++ b/netbox/ipam/search.py @@ -19,6 +19,7 @@ class ASNIndex(SearchIndex): model = models.ASN fields = ( ('asn', 100), + ('prefixed_name', 110), ('description', 500), ) display_attrs = ('rir', 'tenant', 'description') diff --git a/netbox/netbox/preferences.py b/netbox/netbox/preferences.py index d911aabb0..4fdb7e31f 100644 --- a/netbox/netbox/preferences.py +++ b/netbox/netbox/preferences.py @@ -1,5 +1,5 @@ from django.conf import settings -from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy as _ from netbox.registry import registry from users.preferences import UserPreference diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css index ab1bc57fb..6de52c354 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/overrides/_tabler.scss b/netbox/project-static/styles/overrides/_tabler.scss index 006f3245b..9899d2dd0 100644 --- a/netbox/project-static/styles/overrides/_tabler.scss +++ b/netbox/project-static/styles/overrides/_tabler.scss @@ -128,6 +128,9 @@ body[data-bs-theme=dark] { .footer .text-primary { color: white !important; } + .toast { + color: var(--#{$prefix}body-color); + } } // Do not apply padding to elements inside a
diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po
index a49ec7322..a7f568256 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-09-12 05:02+0000\n"
+"POT-Creation-Date: 2024-09-18 05:02+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -82,8 +82,8 @@ msgstr ""
 
 #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20
 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185
-#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518
-#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644
+#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1520
+#: netbox/dcim/choices.py:1596 netbox/dcim/choices.py:1646
 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45
 #: netbox/vpn/choices.py:18
 msgid "Planned"
@@ -96,7 +96,7 @@ msgstr ""
 #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22
 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103
 #: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230
-#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643
+#: netbox/dcim/choices.py:1595 netbox/dcim/choices.py:1645
 #: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31
 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69
 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25
@@ -107,8 +107,8 @@ msgid "Active"
 msgstr ""
 
 #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183
-#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592
-#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24
+#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1594
+#: netbox/dcim/choices.py:1647 netbox/virtualization/choices.py:24
 #: netbox/virtualization/choices.py:43
 msgid "Offline"
 msgstr ""
@@ -121,7 +121,7 @@ msgstr ""
 msgid "Decommissioned"
 msgstr ""
 
-#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605
+#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1607
 #: netbox/tenancy/choices.py:17
 msgid "Primary"
 msgstr ""
@@ -1587,7 +1587,7 @@ msgstr ""
 #: netbox/core/choices.py:22 netbox/core/choices.py:59
 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34
 #: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233
-#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47
+#: netbox/dcim/choices.py:1597 netbox/virtualization/choices.py:47
 msgid "Failed"
 msgstr ""
 
@@ -1911,7 +1911,7 @@ msgstr ""
 msgid "Rack Elevations"
 msgstr ""
 
-#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506
+#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1508
 #: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357
 #: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158
 #: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295
@@ -2477,7 +2477,7 @@ msgid "Staging"
 msgstr ""
 
 #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189
-#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519
+#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1521
 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48
 msgid "Decommissioning"
 msgstr ""
@@ -2541,7 +2541,7 @@ msgstr ""
 msgid "Millimeters"
 msgstr ""
 
-#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541
+#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1543
 msgid "Inches"
 msgstr ""
 
@@ -2630,7 +2630,7 @@ msgid "Side to rear"
 msgstr ""
 
 #: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253
-#: netbox/dcim/choices.py:1291
+#: netbox/dcim/choices.py:1293
 msgid "Passive"
 msgstr ""
 
@@ -2638,15 +2638,15 @@ msgstr ""
 msgid "Mixed"
 msgstr ""
 
-#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726
+#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:727
 msgid "NEMA (Non-locking)"
 msgstr ""
 
-#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748
+#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:749
 msgid "NEMA (Locking)"
 msgstr ""
 
-#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772
+#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:773
 msgid "California Style"
 msgstr ""
 
@@ -2654,30 +2654,30 @@ msgstr ""
 msgid "International/ITA"
 msgstr ""
 
-#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807
+#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:808
 msgid "Proprietary"
 msgstr ""
 
-#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816
-#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209
-#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437
+#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:818
+#: netbox/dcim/choices.py:1209 netbox/dcim/choices.py:1211
+#: netbox/dcim/choices.py:1437 netbox/dcim/choices.py:1439
 #: netbox/netbox/navigation/menu.py:200
 msgid "Other"
 msgstr ""
 
-#: netbox/dcim/choices.py:780
+#: netbox/dcim/choices.py:781
 msgid "ITA/International"
 msgstr ""
 
-#: netbox/dcim/choices.py:846
+#: netbox/dcim/choices.py:848
 msgid "Physical"
 msgstr ""
 
-#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013
+#: netbox/dcim/choices.py:849 netbox/dcim/choices.py:1015
 msgid "Virtual"
 msgstr ""
 
-#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086
+#: netbox/dcim/choices.py:850 netbox/dcim/choices.py:1088
 #: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330
 #: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396
 #: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144
@@ -2685,11 +2685,11 @@ msgstr ""
 msgid "Wireless"
 msgstr ""
 
-#: netbox/dcim/choices.py:1011
+#: netbox/dcim/choices.py:1013
 msgid "Virtual interfaces"
 msgstr ""
 
-#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410
+#: netbox/dcim/choices.py:1016 netbox/dcim/forms/bulk_edit.py:1410
 #: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974
 #: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106
 #: netbox/templates/virtualization/vminterface.html:43
@@ -2699,27 +2699,27 @@ msgstr ""
 msgid "Bridge"
 msgstr ""
 
-#: netbox/dcim/choices.py:1015
+#: netbox/dcim/choices.py:1017
 msgid "Link Aggregation Group (LAG)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1019
+#: netbox/dcim/choices.py:1021
 msgid "Ethernet (fixed)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1034
+#: netbox/dcim/choices.py:1036
 msgid "Ethernet (modular)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1070
+#: netbox/dcim/choices.py:1072
 msgid "Ethernet (backplane)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1101
+#: netbox/dcim/choices.py:1103
 msgid "Cellular"
 msgstr ""
 
-#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383
+#: netbox/dcim/choices.py:1155 netbox/dcim/forms/filtersets.py:383
 #: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963
 #: netbox/dcim/forms/filtersets.py:1542
 #: netbox/templates/dcim/inventoryitem.html:52
@@ -2727,129 +2727,129 @@ msgstr ""
 msgid "Serial"
 msgstr ""
 
-#: netbox/dcim/choices.py:1168
+#: netbox/dcim/choices.py:1170
 msgid "Coaxial"
 msgstr ""
 
-#: netbox/dcim/choices.py:1188
+#: netbox/dcim/choices.py:1190
 msgid "Stacking"
 msgstr ""
 
-#: netbox/dcim/choices.py:1238
+#: netbox/dcim/choices.py:1240
 msgid "Half"
 msgstr ""
 
-#: netbox/dcim/choices.py:1239
+#: netbox/dcim/choices.py:1241
 msgid "Full"
 msgstr ""
 
-#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31
+#: netbox/dcim/choices.py:1242 netbox/netbox/preferences.py:31
 #: netbox/wireless/choices.py:480
 msgid "Auto"
 msgstr ""
 
-#: netbox/dcim/choices.py:1251
+#: netbox/dcim/choices.py:1253
 msgid "Access"
 msgstr ""
 
-#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172
+#: netbox/dcim/choices.py:1254 netbox/ipam/tables/vlans.py:172
 #: netbox/ipam/tables/vlans.py:217
 #: netbox/templates/dcim/inc/interface_vlans_table.html:7
 msgid "Tagged"
 msgstr ""
 
-#: netbox/dcim/choices.py:1253
+#: netbox/dcim/choices.py:1255
 msgid "Tagged (All)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1282
+#: netbox/dcim/choices.py:1284
 msgid "IEEE Standard"
 msgstr ""
 
-#: netbox/dcim/choices.py:1293
+#: netbox/dcim/choices.py:1295
 msgid "Passive 24V (2-pair)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1294
+#: netbox/dcim/choices.py:1296
 msgid "Passive 24V (4-pair)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1295
+#: netbox/dcim/choices.py:1297
 msgid "Passive 48V (2-pair)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1296
+#: netbox/dcim/choices.py:1298
 msgid "Passive 48V (4-pair)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476
+#: netbox/dcim/choices.py:1368 netbox/dcim/choices.py:1478
 msgid "Copper"
 msgstr ""
 
-#: netbox/dcim/choices.py:1389
+#: netbox/dcim/choices.py:1391
 msgid "Fiber Optic"
 msgstr ""
 
-#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505
+#: netbox/dcim/choices.py:1424 netbox/dcim/choices.py:1507
 msgid "USB"
 msgstr ""
 
-#: netbox/dcim/choices.py:1492
+#: netbox/dcim/choices.py:1494
 msgid "Fiber"
 msgstr ""
 
-#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227
+#: netbox/dcim/choices.py:1519 netbox/dcim/forms/filtersets.py:1227
 msgid "Connected"
 msgstr ""
 
-#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497
+#: netbox/dcim/choices.py:1538 netbox/wireless/choices.py:497
 msgid "Kilometers"
 msgstr ""
 
-#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65
+#: netbox/dcim/choices.py:1539 netbox/templates/dcim/cable_trace.html:65
 #: netbox/wireless/choices.py:498
 msgid "Meters"
 msgstr ""
 
-#: netbox/dcim/choices.py:1538
+#: netbox/dcim/choices.py:1540
 msgid "Centimeters"
 msgstr ""
 
-#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499
+#: netbox/dcim/choices.py:1541 netbox/wireless/choices.py:499
 msgid "Miles"
 msgstr ""
 
-#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66
+#: netbox/dcim/choices.py:1542 netbox/templates/dcim/cable_trace.html:66
 #: netbox/wireless/choices.py:500
 msgid "Feet"
 msgstr ""
 
-#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327
+#: netbox/dcim/choices.py:1558 netbox/templates/dcim/device.html:327
 #: netbox/templates/dcim/rack.html:106
 msgid "Kilograms"
 msgstr ""
 
-#: netbox/dcim/choices.py:1557
+#: netbox/dcim/choices.py:1559
 msgid "Grams"
 msgstr ""
 
-#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107
+#: netbox/dcim/choices.py:1560 netbox/templates/dcim/rack.html:107
 msgid "Pounds"
 msgstr ""
 
-#: netbox/dcim/choices.py:1559
+#: netbox/dcim/choices.py:1561
 msgid "Ounces"
 msgstr ""
 
-#: netbox/dcim/choices.py:1606
+#: netbox/dcim/choices.py:1608
 msgid "Redundant"
 msgstr ""
 
-#: netbox/dcim/choices.py:1627
+#: netbox/dcim/choices.py:1629
 msgid "Single phase"
 msgstr ""
 
-#: netbox/dcim/choices.py:1628
+#: netbox/dcim/choices.py:1630
 msgid "Three-phase"
 msgstr ""
 
@@ -10097,7 +10097,7 @@ msgstr ""
 msgid "Range boundaries must be defined as integers."
 msgstr ""
 
-#: netbox/netbox/api/serializers/fields.py:39
+#: netbox/netbox/api/serializers/fields.py:40
 #, python-brace-format
 msgid "{class_name} must implement get_view_name()"
 msgstr ""
diff --git a/netbox/utilities/templates/form_helpers/render_field.html b/netbox/utilities/templates/form_helpers/render_field.html
index 47d1f8d10..9abaaa633 100644
--- a/netbox/utilities/templates/form_helpers/render_field.html
+++ b/netbox/utilities/templates/form_helpers/render_field.html
@@ -6,9 +6,11 @@
 
   {# Render the field label (if any), except for checkboxes #}
   {% if label and not field|widget_type == 'checkboxinput' %}
-    
+    
+ +
{% endif %} {# Render the field itself #}