From fa1e89d3d2d2142d9908d28dcf39a934f516d785 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 12 Sep 2024 15:24:39 -0400 Subject: [PATCH 01/10] Closes #17477: Upgrade tabler to 1.0.0-beta21 --- netbox/project-static/dist/netbox.css | Bin 548151 -> 554338 bytes netbox/project-static/package.json | 2 +- netbox/project-static/yarn.lock | 25 ++++++++++--------------- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css index 762cafd5dd54b0ed62a644201efe8f83e656a695..f1b9e24e23ae8510895a55af5db0c4ccabca521f 100644 GIT binary patch delta 7741 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 delta 6352 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 Date: Thu, 12 Sep 2024 16:27:21 -0400 Subject: [PATCH 02/10] Closes #17482: Ignore Branch & StagedChange in nbshell --- netbox/core/management/commands/nbshell.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/netbox/core/management/commands/nbshell.py b/netbox/core/management/commands/nbshell.py index e26f956c8..8f729d10a 100644 --- a/netbox/core/management/commands/nbshell.py +++ b/netbox/core/management/commands/nbshell.py @@ -11,6 +11,10 @@ from core.models import ObjectType from users.models import User APPS = ('circuits', 'core', 'dcim', 'extras', 'ipam', 'tenancy', 'users', 'virtualization', 'vpn', 'wireless') +EXCLUDE_MODELS = ( + 'extras.branch', + 'extras.stagedchange', +) BANNER_TEXT = """### NetBox interactive shell ({node}) ### Python {python} | Django {django} | NetBox {netbox} @@ -44,12 +48,16 @@ class Command(BaseCommand): # Gather Django models and constants from each app for app in APPS: - self.django_models[app] = [] + models = [] # Load models from each app for model in apps.get_app_config(app).get_models(): - namespace[model.__name__] = model - self.django_models[app].append(model.__name__) + app_label = model._meta.app_label + model_name = model._meta.model_name + if f'{app_label}.{model_name}' not in EXCLUDE_MODELS: + namespace[model.__name__] = model + models.append(model.__name__) + self.django_models[app] = sorted(models) # Constants try: From bdf182ffd617ccf4410803f3610531350082d5b4 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 16 Sep 2024 11:49:15 -0400 Subject: [PATCH 03/10] Increase operations limit for stale action --- .github/workflows/close-stale-issues.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index 29f28fddf..825a6e8e3 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/stale@v9 with: # General parameters - operations-per-run: 100 + operations-per-run: 200 remove-stale-when-updated: false # Issue parameters From 893adef79c38378422ac0d6eb60aa164f4deccea Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 13 Sep 2024 12:39:10 -0500 Subject: [PATCH 04/10] Fixes: #17492 - Change methods on NetBox*HyperlinkedIdentityField to use get_viewname --- netbox/netbox/api/serializers/fields.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/netbox/netbox/api/serializers/fields.py b/netbox/netbox/api/serializers/fields.py index 4fee36043..74782bddf 100644 --- a/netbox/netbox/api/serializers/fields.py +++ b/netbox/netbox/api/serializers/fields.py @@ -1,5 +1,8 @@ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers +from utilities.views import get_viewname + __all__ = ( 'NetBoxAPIHyperlinkedIdentityField', 'NetBoxURLHyperlinkedIdentityField', @@ -30,12 +33,10 @@ class BaseNetBoxHyperlinkedIdentityField(serializers.HyperlinkedIdentityField): lookup_value = getattr(obj, self.lookup_field) kwargs = {self.lookup_url_kwarg: lookup_value} - model_name = self.parent.Meta.model._meta.model_name - app_name = self.parent.Meta.model._meta.app_label - view_name = self.get_view_name(app_name, model_name) + view_name = self.get_view_name(obj) return self.reverse(view_name, kwargs=kwargs, request=request, format=format) - def get_view_name(self, app_name, model_name): + def get_view_name(self, model): raise NotImplementedError(_('{class_name} must implement get_view_name()').format( class_name=self.__class__.__name__ )) @@ -43,11 +44,11 @@ class BaseNetBoxHyperlinkedIdentityField(serializers.HyperlinkedIdentityField): class NetBoxAPIHyperlinkedIdentityField(BaseNetBoxHyperlinkedIdentityField): - def get_view_name(self, app_name, model_name): - return f'{app_name}-api:{model_name}-detail' + def get_view_name(self, model): + return get_viewname(model=model, action='detail', rest_api=True) class NetBoxURLHyperlinkedIdentityField(BaseNetBoxHyperlinkedIdentityField): - def get_view_name(self, app_name, model_name): - return f'{app_name}:{model_name}' + def get_view_name(self, model): + return get_viewname(model=model) From 48ca5d4d7e33701f7f1e7f2e958faf5a77457567 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Fri, 13 Sep 2024 09:29:46 -0700 Subject: [PATCH 05/10] 17406 allow deletion of plugin custom field if plugin removed --- netbox/extras/models/customfields.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index 7a0a08614..9d29b128d 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -295,10 +295,11 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): """ for ct in content_types: model = ct.model_class() - instances = model.objects.filter(custom_field_data__has_key=self.name) - for instance in instances: - del instance.custom_field_data[self.name] - model.objects.bulk_update(instances, ['custom_field_data'], batch_size=100) + if model: + instances = model.objects.filter(custom_field_data__has_key=self.name) + for instance in instances: + del instance.custom_field_data[self.name] + model.objects.bulk_update(instances, ['custom_field_data'], batch_size=100) def rename_object_data(self, old_name, new_name): """ From f5d6f5d9977dce8badd98c5a266fbd0428893a1a Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Fri, 13 Sep 2024 09:31:21 -0700 Subject: [PATCH 06/10] 17406 allow deletion of plugin custom field if plugin removed --- netbox/extras/models/customfields.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index 9d29b128d..889594902 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -294,8 +294,7 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): no longer assigned to a model, or because it has been deleted). """ for ct in content_types: - model = ct.model_class() - if model: + if model := ct.model_class(): instances = model.objects.filter(custom_field_data__has_key=self.name) for instance in instances: del instance.custom_field_data[self.name] From c79c664e968fcd4a3c5bdbd8878350090908a6c7 Mon Sep 17 00:00:00 2001 From: Jonathan Senecal Date: Thu, 12 Sep 2024 14:14:35 -0400 Subject: [PATCH 07/10] Update choices.py to add C39 Type outlets (cherry picked from commit e92d0ec2e642b00506a64c1333e95cea8a36feae) --- netbox/dcim/choices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 127655ba7..c90a0b3ea 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -684,6 +684,7 @@ class PowerOutletTypeChoices(ChoiceSet): # Direct current (DC) TYPE_DC = 'dc-terminal' # Proprietary + TYPE_EATON_C39 = 'eaton-c39' TYPE_HDOT_CX = 'hdot-cx' TYPE_SAF_D_GRID = 'saf-d-grid' TYPE_NEUTRIK_POWERCON_20A = 'neutrik-powercon-20a' @@ -805,6 +806,7 @@ class PowerOutletTypeChoices(ChoiceSet): (TYPE_DC, 'DC Terminal'), )), (_('Proprietary'), ( + (TYPE_EATON_C39, 'Eaton C39'), (TYPE_HDOT_CX, 'HDOT Cx'), (TYPE_SAF_D_GRID, 'Saf-D-Grid'), (TYPE_NEUTRIK_POWERCON_20A, 'Neutrik powerCON (20A)'), From 7167f20ca5dddf6556ef9427706570717d58148c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 17 Sep 2024 09:29:59 -0400 Subject: [PATCH 08/10] Increase stale PR timer from 15 to 30 days --- .github/workflows/close-stale-issues.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index 825a6e8e3..1e0e193df 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -43,7 +43,7 @@ jobs: # Pull request parameters close-pr-message: > This PR has been automatically closed due to lack of activity. - days-before-pr-stale: 15 + days-before-pr-stale: 30 days-before-pr-close: 15 exempt-pr-labels: 'status: blocked' stale-pr-label: 'pending closure' From 3000407a5f0fe65eefc2359bdb672456c370c0b2 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 17 Sep 2024 13:57:33 -0400 Subject: [PATCH 09/10] 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 10/10] 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 ""