From 3000407a5f0fe65eefc2359bdb672456c370c0b2 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 17 Sep 2024 13:57:33 -0400 Subject: [PATCH 1/6] Closes #16669: Include a notice when rendering docs locally --- docs/_theme/partials/copyright.html | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 docs/_theme/partials/copyright.html 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 %} From f7dd09da0845451cff5706ebfd82d7c6f5cf25f5 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 05:02:30 +0000 Subject: [PATCH 2/6] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 124 +++++++++---------- 1 file changed, 62 insertions(+), 62 deletions(-) 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 "" From 44c7786cd945d20c319586486c983aab11c2167d Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Wed, 18 Sep 2024 14:05:02 -0700 Subject: [PATCH 3/6] 17521 fix error message toast color in dark mode --- netbox/project-static/dist/netbox.css | Bin 554338 -> 554399 bytes .../styles/overrides/_tabler.scss | 3 +++ 2 files changed, 3 insertions(+) diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css index f1b9e24e23ae8510895a55af5db0c4ccabca521f..6f4f8ac3648e3912d5d823e73442fc2c8be46fea 100644 GIT binary patch delta 47 zcmaF#N^$;c#fBEf7N!>F7M2#)7Pc1lEgZHH)4S3*q*zPx6N^ix2Rvqz+in}dp(+ai DuxAi| delta 31 mcmbRLTJg~<#fBEf7N!>F7M2#)7Pc1lEgZHH+p8itRAm9mt_t-4 diff --git a/netbox/project-static/styles/overrides/_tabler.scss b/netbox/project-static/styles/overrides/_tabler.scss index 814a6d82b..252da8f4a 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

From 8e6a15a25e5e4c940588791cd932fbab8db99026 Mon Sep 17 00:00:00 2001
From: Arthur Hanson 
Date: Wed, 18 Sep 2024 10:23:36 -0700
Subject: [PATCH 4/6] 14201 allow searching for ASN with prefix AS

---
 netbox/ipam/models/asns.py | 4 ++++
 netbox/ipam/search.py      | 1 +
 2 files changed, 5 insertions(+)

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')

From 6d0a3485a11ba7a74dff0553758508515f0975af Mon Sep 17 00:00:00 2001
From: Arthur Hanson 
Date: Tue, 17 Sep 2024 13:16:09 -0700
Subject: [PATCH 5/6] 17522 enable localization of user preference form

---
 netbox/netbox/preferences.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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

From 8deaaae44b8f11cccded9702a62fb0bda53dff05 Mon Sep 17 00:00:00 2001
From: bctiemann 
Date: Thu, 19 Sep 2024 13:07:36 -0400
Subject: [PATCH 6/6] Fixes: #17083 - Wrap labels in a div to reduce
 inadvertently clickable area to their left in forms (#17525)

* Wrap labels in a div to reduce inadvertently clickable area to their left in forms

* Set form label to be inline-block
---
 netbox/utilities/templates/form_helpers/render_field.html | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

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 #}