Просмотр исходного кода

Merge pull request #17626 from netbox-community/develop

Release v4.1.2
Jeremy Stretch 1 год назад
Родитель
Сommit
ead6e637f4
100 измененных файлов с 1499 добавлено и 1246 удалено
  1. 1 1
      .github/ISSUE_TEMPLATE/01-feature_request.yaml
  2. 1 1
      .github/ISSUE_TEMPLATE/02-bug_report.yaml
  3. 2 2
      .github/workflows/close-stale-issues.yml
  4. 3 0
      contrib/generated_schema.json
  5. 18 0
      docs/_theme/partials/copyright.html
  6. 36 0
      docs/release-notes/version-4.1.md
  7. 11 3
      netbox/core/management/commands/nbshell.py
  8. 6 0
      netbox/dcim/choices.py
  9. 1 0
      netbox/dcim/constants.py
  10. 28 4
      netbox/dcim/forms/bulk_import.py
  11. 2 1
      netbox/dcim/forms/model_forms.py
  12. 26 0
      netbox/dcim/migrations/0191_module_bay_rebuild.py
  13. 6 6
      netbox/dcim/models/cables.py
  14. 1 1
      netbox/dcim/models/device_component_templates.py
  15. 3 3
      netbox/dcim/models/device_components.py
  16. 3 3
      netbox/dcim/models/devices.py
  17. 2 2
      netbox/dcim/models/racks.py
  18. 2 1
      netbox/dcim/tables/devices.py
  19. 4 0
      netbox/dcim/tests/test_filtersets.py
  20. 2 2
      netbox/dcim/views.py
  21. 6 6
      netbox/extras/models/customfields.py
  22. 4 0
      netbox/ipam/models/asns.py
  23. 2 0
      netbox/ipam/search.py
  24. 1 1
      netbox/ipam/tables/ip.py
  25. 9 8
      netbox/netbox/api/serializers/fields.py
  26. 5 2
      netbox/netbox/filtersets.py
  27. 1 1
      netbox/netbox/models/__init__.py
  28. 2 7
      netbox/netbox/models/features.py
  29. 1 1
      netbox/netbox/preferences.py
  30. 2 0
      netbox/netbox/views/generic/object_views.py
  31. BIN
      netbox/project-static/dist/Inter-Black-7VL4YR6G.woff
  32. BIN
      netbox/project-static/dist/Inter-Black-NU3KAVPI.woff2
  33. BIN
      netbox/project-static/dist/Inter-BlackItalic-4BVAVUVI.woff2
  34. BIN
      netbox/project-static/dist/Inter-BlackItalic-HJLUEYVW.woff
  35. BIN
      netbox/project-static/dist/Inter-Bold-6AVOS7AV.woff2
  36. BIN
      netbox/project-static/dist/Inter-Bold-RTIBL5DO.woff
  37. BIN
      netbox/project-static/dist/Inter-BoldItalic-AID2XGS3.woff2
  38. BIN
      netbox/project-static/dist/Inter-BoldItalic-UU7SOVRI.woff
  39. BIN
      netbox/project-static/dist/Inter-ExtraBold-B5RSZK6R.woff
  40. BIN
      netbox/project-static/dist/Inter-ExtraBold-VAPCTO5F.woff2
  41. BIN
      netbox/project-static/dist/Inter-ExtraBoldItalic-R7DLWYIK.woff
  42. BIN
      netbox/project-static/dist/Inter-ExtraBoldItalic-W26CJYY7.woff2
  43. BIN
      netbox/project-static/dist/Inter-ExtraLight-A7NHN7KT.woff
  44. BIN
      netbox/project-static/dist/Inter-ExtraLight-DVW3SATI.woff2
  45. BIN
      netbox/project-static/dist/Inter-ExtraLightItalic-KXZYPKOE.woff2
  46. BIN
      netbox/project-static/dist/Inter-ExtraLightItalic-SKGXKLLA.woff
  47. BIN
      netbox/project-static/dist/Inter-Italic-GHDVOOKA.woff
  48. BIN
      netbox/project-static/dist/Inter-Italic-RW2ZALTO.woff2
  49. BIN
      netbox/project-static/dist/Inter-Light-ARG5Y6MT.woff
  50. BIN
      netbox/project-static/dist/Inter-Light-XBRUIIRZ.woff2
  51. BIN
      netbox/project-static/dist/Inter-LightItalic-4OWY6V5R.woff2
  52. BIN
      netbox/project-static/dist/Inter-LightItalic-WFS25IQZ.woff
  53. BIN
      netbox/project-static/dist/Inter-Medium-JV63DMR7.woff2
  54. BIN
      netbox/project-static/dist/Inter-Medium-KH2CGZVE.woff
  55. BIN
      netbox/project-static/dist/Inter-MediumItalic-P7H6BBYU.woff2
  56. BIN
      netbox/project-static/dist/Inter-MediumItalic-PO2E4FIG.woff
  57. BIN
      netbox/project-static/dist/Inter-Regular-373XMOLM.woff2
  58. BIN
      netbox/project-static/dist/Inter-Regular-DR3VC6YG.woff
  59. BIN
      netbox/project-static/dist/Inter-SemiBold-TJ6HPMMH.woff
  60. BIN
      netbox/project-static/dist/Inter-SemiBold-UMRILHOG.woff2
  61. BIN
      netbox/project-static/dist/Inter-SemiBoldItalic-ABO2DCC7.woff2
  62. BIN
      netbox/project-static/dist/Inter-SemiBoldItalic-DM4JJSFU.woff
  63. BIN
      netbox/project-static/dist/Inter-Thin-MEKOZMGA.woff
  64. BIN
      netbox/project-static/dist/Inter-Thin-TCINWRKS.woff2
  65. BIN
      netbox/project-static/dist/Inter-ThinItalic-WRULPH3M.woff2
  66. BIN
      netbox/project-static/dist/Inter-ThinItalic-ZFOL6JFL.woff
  67. BIN
      netbox/project-static/dist/Inter-italic.var-7LS4VCXC.woff2
  68. BIN
      netbox/project-static/dist/Inter-roman.var-EDENVCUS.woff2
  69. BIN
      netbox/project-static/dist/Inter.var-FTIQFLGO.woff2
  70. 0 0
      netbox/project-static/dist/netbox-external.css
  71. 0 0
      netbox/project-static/dist/netbox.css
  72. BIN
      netbox/project-static/dist/plus-jakarta-sans-cyrillic-ext-wght-normal-3FNWYSHQ.woff2
  73. BIN
      netbox/project-static/dist/plus-jakarta-sans-latin-ext-wght-normal-WWG75Y4U.woff2
  74. BIN
      netbox/project-static/dist/plus-jakarta-sans-latin-wght-normal-S6EFCQOU.woff2
  75. BIN
      netbox/project-static/dist/plus-jakarta-sans-vietnamese-wght-normal-NNXUV3SN.woff2
  76. 3 3
      netbox/project-static/package.json
  77. 1 2
      netbox/project-static/styles/_variables.scss
  78. 1 1
      netbox/project-static/styles/external.scss
  79. 3 0
      netbox/project-static/styles/overrides/_tabler.scss
  80. 32 25
      netbox/project-static/yarn.lock
  81. 2 2
      netbox/release.yaml
  82. 1 0
      netbox/templates/dcim/device.html
  83. 6 2
      netbox/templates/dcim/rack.html
  84. 1 1
      netbox/templates/extras/script_list.html
  85. 1 1
      netbox/templates/generic/_base.html
  86. 1 1
      netbox/templates/virtualization/cluster.html
  87. BIN
      netbox/translations/cs/LC_MESSAGES/django.mo
  88. 179 164
      netbox/translations/cs/LC_MESSAGES/django.po
  89. BIN
      netbox/translations/da/LC_MESSAGES/django.mo
  90. 176 161
      netbox/translations/da/LC_MESSAGES/django.po
  91. BIN
      netbox/translations/de/LC_MESSAGES/django.mo
  92. 182 168
      netbox/translations/de/LC_MESSAGES/django.po
  93. 182 167
      netbox/translations/en/LC_MESSAGES/django.po
  94. BIN
      netbox/translations/es/LC_MESSAGES/django.mo
  95. 179 164
      netbox/translations/es/LC_MESSAGES/django.po
  96. BIN
      netbox/translations/fr/LC_MESSAGES/django.mo
  97. 179 164
      netbox/translations/fr/LC_MESSAGES/django.po
  98. BIN
      netbox/translations/it/LC_MESSAGES/django.mo
  99. 179 164
      netbox/translations/it/LC_MESSAGES/django.po
  100. BIN
      netbox/translations/ja/LC_MESSAGES/django.mo

+ 1 - 1
.github/ISSUE_TEMPLATE/01-feature_request.yaml

@@ -14,7 +14,7 @@ body:
     attributes:
       label: NetBox version
       description: What version of NetBox are you currently running?
-      placeholder: v4.1.1
+      placeholder: v4.1.2
     validations:
       required: true
   - type: dropdown

+ 1 - 1
.github/ISSUE_TEMPLATE/02-bug_report.yaml

@@ -26,7 +26,7 @@ body:
     attributes:
       label: NetBox Version
       description: What version of NetBox are you currently running?
-      placeholder: v4.1.1
+      placeholder: v4.1.2
     validations:
       required: true
   - type: dropdown

+ 2 - 2
.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
@@ -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'

+ 3 - 0
contrib/generated_schema.json

@@ -290,6 +290,7 @@
                         "molex-micro-fit-2x2",
                         "molex-micro-fit-2x4",
                         "dc-terminal",
+                        "eaton-c39",
                         "hdot-cx",
                         "saf-d-grid",
                         "neutrik-powercon-20a",
@@ -330,6 +331,7 @@
                         "5gbase-t",
                         "10gbase-t",
                         "10gbase-cx4",
+                        "100base-x-sfp",
                         "1000base-x-gbic",
                         "1000base-x-sfp",
                         "10gbase-x-sfpp",
@@ -381,6 +383,7 @@
                         "ieee802.11ay",
                         "ieee802.11be",
                         "ieee802.15.1",
+                        "ieee802.15.4",
                         "other-wireless",
                         "gsm",
                         "cdma",

+ 18 - 0
docs/_theme/partials/copyright.html

@@ -0,0 +1,18 @@
+<div class="md-copyright">
+  {% if config.copyright %}
+    <div class="md-copyright__highlight">
+      {{ config.copyright }}
+    </div>
+  {% endif %}
+  {% if not config.extra.generator == false %}
+    Made with
+    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
+      Material for MkDocs
+    </a>
+  {% endif %}
+</div>
+{% if not config.extra.build_public %}
+  <div class="md-copyright">
+    ℹ️ Documentation is being served locally
+  </div>
+{% endif %}

+ 36 - 0
docs/release-notes/version-4.1.md

@@ -1,5 +1,41 @@
 # NetBox v4.1
 
+## v4.1.2 (2024-09-26)
+
+### Enhancements
+
+* [#14201](https://github.com/netbox-community/netbox/issues/14201) - Enable global search for AS numbers using "AS" prefix
+* [#15408](https://github.com/netbox-community/netbox/issues/15408) - Enable bulk import of primary IPv4 & IPv6 addresses for virtual device contexts (VDCs)
+* [#16781](https://github.com/netbox-community/netbox/issues/16781) - Add 100Base-X SFP interface type
+* [#17255](https://github.com/netbox-community/netbox/issues/17255) - Include return URL when creating new IP address from prefix IPs list
+* [#17471](https://github.com/netbox-community/netbox/issues/17471) - Add Eaton C39 power outlet type
+* [#17482](https://github.com/netbox-community/netbox/issues/17482) - Do not preload Branch & StagedChange models in `nbshell`
+* [#17550](https://github.com/netbox-community/netbox/issues/17550) - Add IEEE 802.15.4 wireless interface type
+
+### Bug Fixes
+
+* [#16837](https://github.com/netbox-community/netbox/issues/16837) - Fix filtering of cables with no type assigned
+* [#17083](https://github.com/netbox-community/netbox/issues/17083) - Trim clickable area of form field labels
+* [#17126](https://github.com/netbox-community/netbox/issues/17126) - Show total device weight in both imperial & metric units
+* [#17360](https://github.com/netbox-community/netbox/issues/17360) - Fix AttributeError under child object views when experimental HTMX navigation is enabled
+* [#17406](https://github.com/netbox-community/netbox/issues/17406) - Fix the cleanup of stale custom field data after removing a plugin
+* [#17419](https://github.com/netbox-community/netbox/issues/17419) - Rebuild MPTT for module bays on upgrade to v4.1
+* [#17492](https://github.com/netbox-community/netbox/issues/17492) - Fix URL resolution in `NetBoxModelSerializer` for plugin models
+* [#17497](https://github.com/netbox-community/netbox/issues/17497) - Fix uncaught FieldError exception when referencing an invalid field on a related object during bulk import
+* [#17498](https://github.com/netbox-community/netbox/issues/17498) - Fix MultipleObjectsReturned exception when importing a device type without uniquely specifying a manufacturer
+* [#17501](https://github.com/netbox-community/netbox/issues/17501) - Fix reporting of last run time & status for custom scripts under UI
+* [#17511](https://github.com/netbox-community/netbox/issues/17511) - Restore consistent font support for non-Latin characters
+* [#17517](https://github.com/netbox-community/netbox/issues/17517) - Fix cable termination selection after switching termination type
+* [#17521](https://github.com/netbox-community/netbox/issues/17521) - Correct text color in notification pop-ups under dark mode
+* [#17522](https://github.com/netbox-community/netbox/issues/17522) - Fix language translation of form field labels under user preferences
+* [#17537](https://github.com/netbox-community/netbox/issues/17537) - Fix global search support for ASN range names
+* [#17555](https://github.com/netbox-community/netbox/issues/17555) - Fix toggling disconnected interfaces under device view
+* [#17601](https://github.com/netbox-community/netbox/issues/17601) - Record change to terminating object when disconnecting a cable
+* [#17605](https://github.com/netbox-community/netbox/issues/17605) - Fix calculation of aggregate VM disk space under cluster view
+* [#17611](https://github.com/netbox-community/netbox/issues/17611) - Correct custom field minimum value validation error message
+
+---
+
 ## v4.1.1 (2024-09-12)
 
 ### Enhancements

+ 11 - 3
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:

+ 6 - 0
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)'),
@@ -861,6 +863,7 @@ class InterfaceTypeChoices(ChoiceSet):
     TYPE_100ME_LFX = '100base-lfx'
     TYPE_100ME_FIXED = '100base-tx'
     TYPE_100ME_T1 = '100base-t1'
+    TYPE_100ME_SFP = '100base-x-sfp'
     TYPE_1GE_FIXED = '1000base-t'
     TYPE_1GE_TX_FIXED = '1000base-tx'
     TYPE_1GE_GBIC = '1000base-x-gbic'
@@ -922,6 +925,7 @@ class InterfaceTypeChoices(ChoiceSet):
     TYPE_80211AY = 'ieee802.11ay'
     TYPE_80211BE = 'ieee802.11be'
     TYPE_802151 = 'ieee802.15.1'
+    TYPE_802154 = 'ieee802.15.4'
     TYPE_OTHER_WIRELESS = 'other-wireless'
 
     # Cellular
@@ -1033,6 +1037,7 @@ class InterfaceTypeChoices(ChoiceSet):
         (
             _('Ethernet (modular)'),
             (
+                (TYPE_100ME_SFP, 'SFP (100ME)'),
                 (TYPE_1GE_GBIC, 'GBIC (1GE)'),
                 (TYPE_1GE_SFP, 'SFP (1GE)'),
                 (TYPE_10GE_SFP_PLUS, 'SFP+ (10GE)'),
@@ -1094,6 +1099,7 @@ class InterfaceTypeChoices(ChoiceSet):
                 (TYPE_80211AY, 'IEEE 802.11ay'),
                 (TYPE_80211BE, 'IEEE 802.11be'),
                 (TYPE_802151, 'IEEE 802.15.1 (Bluetooth)'),
+                (TYPE_802154, 'IEEE 802.15.4 (LR-WPAN)'),
                 (TYPE_OTHER_WIRELESS, 'Other (Wireless)'),
             )
         ),

+ 1 - 0
netbox/dcim/constants.py

@@ -51,6 +51,7 @@ WIRELESS_IFACE_TYPES = [
     InterfaceTypeChoices.TYPE_80211AY,
     InterfaceTypeChoices.TYPE_80211BE,
     InterfaceTypeChoices.TYPE_802151,
+    InterfaceTypeChoices.TYPE_802154,
     InterfaceTypeChoices.TYPE_OTHER_WIRELESS,
 ]
 

+ 28 - 4
netbox/dcim/forms/bulk_import.py

@@ -9,7 +9,7 @@ from dcim.choices import *
 from dcim.constants import *
 from dcim.models import *
 from extras.models import ConfigTemplate
-from ipam.models import VRF
+from ipam.models import VRF, IPAddress
 from netbox.forms import NetBoxModelImportForm
 from tenancy.models import Tenant
 from utilities.forms.fields import (
@@ -367,13 +367,13 @@ class ManufacturerImportForm(NetBoxModelImportForm):
 
 
 class DeviceTypeImportForm(NetBoxModelImportForm):
-    manufacturer = forms.ModelChoiceField(
+    manufacturer = CSVModelChoiceField(
         label=_('Manufacturer'),
         queryset=Manufacturer.objects.all(),
         to_field_name='name',
         help_text=_('The manufacturer which produces this device type')
     )
-    default_platform = forms.ModelChoiceField(
+    default_platform = CSVModelChoiceField(
         label=_('Default platform'),
         queryset=Platform.objects.all(),
         to_field_name='name',
@@ -1435,9 +1435,33 @@ class VirtualDeviceContextImportForm(NetBoxModelImportForm):
         label=_('Status'),
         choices=VirtualDeviceContextStatusChoices,
     )
+    primary_ip4 = CSVModelChoiceField(
+        label=_('Primary IPv4'),
+        queryset=IPAddress.objects.all(),
+        required=False,
+        to_field_name='address',
+        help_text=_('IPv4 address with mask, e.g. 1.2.3.4/24')
+    )
+    primary_ip6 = CSVModelChoiceField(
+        label=_('Primary IPv6'),
+        queryset=IPAddress.objects.all(),
+        required=False,
+        to_field_name='address',
+        help_text=_('IPv6 address with prefix length, e.g. 2001:db8::1/64')
+    )
 
     class Meta:
         fields = [
-            'name', 'device', 'status', 'tenant', 'identifier', 'comments',
+            'name', 'device', 'status', 'tenant', 'identifier', 'comments', 'primary_ip4', 'primary_ip6',
         ]
         model = VirtualDeviceContext
+
+    def __init__(self, data=None, *args, **kwargs):
+        super().__init__(data, *args, **kwargs)
+
+        if data:
+
+            # Limit primary_ip4/ip6 querysets by assigned device
+            params = {f"interface__device__{self.fields['device'].to_field_name}": data.get('device')}
+            self.fields['primary_ip4'].queryset = self.fields['primary_ip4'].queryset.filter(**params)
+            self.fields['primary_ip6'].queryset = self.fields['primary_ip6'].queryset.filter(**params)

+ 2 - 1
netbox/dcim/forms/model_forms.py

@@ -1351,7 +1351,8 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm):
     vlan_group = DynamicModelChoiceField(
         queryset=VLANGroup.objects.all(),
         required=False,
-        label=_('VLAN group')
+        label=_('VLAN group'),
+        help_text=_("Filter VLANs available for assignment by group.")
     )
     untagged_vlan = DynamicModelChoiceField(
         queryset=VLAN.objects.all(),

+ 26 - 0
netbox/dcim/migrations/0191_module_bay_rebuild.py

@@ -0,0 +1,26 @@
+from django.db import migrations
+import mptt
+import mptt.managers
+
+
+def rebuild_mptt(apps, schema_editor):
+    manager = mptt.managers.TreeManager()
+    ModuleBay = apps.get_model('dcim', 'ModuleBay')
+    manager.model = ModuleBay
+    mptt.register(ModuleBay)
+    manager.contribute_to_class(ModuleBay, 'objects')
+    manager.rebuild()
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('dcim', '0190_nested_modules'),
+    ]
+
+    operations = [
+        migrations.RunPython(
+            code=rebuild_mptt,
+            reverse_code=migrations.RunPython.noop
+        ),
+    ]

+ 6 - 6
netbox/dcim/models/cables.py

@@ -164,7 +164,7 @@ class Cable(PrimaryModel):
         if self.length is not None and not self.length_unit:
             raise ValidationError(_("Must specify a unit when setting a cable length"))
 
-        if self.pk is None and (not self.a_terminations or not self.b_terminations):
+        if self._state.adding and (not self.a_terminations or not self.b_terminations):
             raise ValidationError(_("Must define A and B terminations when creating a new cable."))
 
         if self._terminations_modified:
@@ -366,11 +366,11 @@ class CableTermination(ChangeLoggedModel):
     def delete(self, *args, **kwargs):
 
         # Delete the cable association on the terminating object
-        termination_model = self.termination._meta.model
-        termination_model.objects.filter(pk=self.termination_id).update(
-            cable=None,
-            cable_end=''
-        )
+        termination = self.termination._meta.model.objects.get(pk=self.termination_id)
+        termination.snapshot()
+        termination.cable = None
+        termination.cable_end = ''
+        termination.save()
 
         super().delete(*args, **kwargs)
 

+ 1 - 1
netbox/dcim/models/device_component_templates.py

@@ -98,7 +98,7 @@ class ComponentTemplateModel(ChangeLoggedModel, TrackingModelMixin):
     def clean(self):
         super().clean()
 
-        if self.pk is not None and self._original_device_type != self.device_type_id:
+        if not self._state.adding and self._original_device_type != self.device_type_id:
             raise ValidationError({
                 "device_type": _("Component templates cannot be moved to a different device type.")
             })

+ 3 - 3
netbox/dcim/models/device_components.py

@@ -561,7 +561,7 @@ class BaseInterface(models.Model):
             self.untagged_vlan = None
 
         # Only "tagged" interfaces may have tagged VLANs assigned. ("tagged all" implies all VLANs are assigned.)
-        if self.pk and self.mode != InterfaceModeChoices.MODE_TAGGED:
+        if not self._state.adding and self.mode != InterfaceModeChoices.MODE_TAGGED:
             self.tagged_vlans.clear()
 
         return super().save(*args, **kwargs)
@@ -1072,7 +1072,7 @@ class RearPort(ModularComponentModel, CabledObjectModel, TrackingModelMixin):
         super().clean()
 
         # Check that positions count is greater than or equal to the number of associated FrontPorts
-        if self.pk:
+        if not self._state.adding:
             frontport_count = self.frontports.count()
             if self.positions < frontport_count:
                 raise ValidationError({
@@ -1314,7 +1314,7 @@ class InventoryItem(MPTTModel, ComponentModel, TrackingModelMixin):
             })
 
         # Validation for moving InventoryItems
-        if self.pk:
+        if not self._state.adding:
             # Cannot move an InventoryItem to another device if it has a parent
             if self.parent and self.parent.device != self.device:
                 raise ValidationError({

+ 3 - 3
netbox/dcim/models/devices.py

@@ -293,7 +293,7 @@ class DeviceType(ImageAttachmentsMixin, PrimaryModel, WeightMixin):
         # If editing an existing DeviceType to have a larger u_height, first validate that *all* instances of it have
         # room to expand within their racks. This validation will impose a very high performance penalty when there are
         # many instances to check, but increasing the u_height of a DeviceType should be a very rare occurrence.
-        if self.pk and self.u_height > self._original_u_height:
+        if not self._state.adding and self.u_height > self._original_u_height:
             for d in Device.objects.filter(device_type=self, position__isnull=False):
                 face_required = None if self.is_full_depth else d.face
                 u_available = d.rack.get_available_units(
@@ -310,7 +310,7 @@ class DeviceType(ImageAttachmentsMixin, PrimaryModel, WeightMixin):
                     })
 
         # If modifying the height of an existing DeviceType to 0U, check for any instances assigned to a rack position.
-        elif self.pk and self._original_u_height > 0 and self.u_height == 0:
+        elif not self._state.adding and self._original_u_height > 0 and self.u_height == 0:
             racked_instance_count = Device.objects.filter(
                 device_type=self,
                 position__isnull=False
@@ -1351,7 +1351,7 @@ class VirtualChassis(PrimaryModel):
 
         # Verify that the selected master device has been assigned to this VirtualChassis. (Skip when creating a new
         # VirtualChassis.)
-        if self.pk and self.master and self.master not in self.members.all():
+        if not self._state.adding and self.master and self.master not in self.members.all():
             raise ValidationError({
                 'master': _("The selected master ({master}) is not assigned to this virtual chassis.").format(
                     master=self.master

+ 2 - 2
netbox/dcim/models/racks.py

@@ -382,7 +382,7 @@ class Rack(ContactsMixin, ImageAttachmentsMixin, RackBase):
         if self.max_weight and not self.weight_unit:
             raise ValidationError(_("Must specify a unit when setting a maximum weight"))
 
-        if self.pk:
+        if not self._state.adding:
             mounted_devices = Device.objects.filter(rack=self).exclude(position__isnull=True).order_by('position')
 
             # Validate that Rack is tall enough to house the highest mounted Device
@@ -468,7 +468,7 @@ class Rack(ContactsMixin, ImageAttachmentsMixin, RackBase):
             }
 
         # Add devices to rack units list
-        if self.pk:
+        if not self._state.adding:
 
             # Retrieve all devices installed within the rack
             devices = Device.objects.prefetch_related(

+ 2 - 1
netbox/dcim/tables/devices.py

@@ -684,7 +684,8 @@ class DeviceInterfaceTable(InterfaceTable):
             'data-virtual': lambda record: "true" if record.is_virtual else "false",
             'data-mark-connected': lambda record: "true" if record.mark_connected else "false",
             'data-cable-status': lambda record: record.cable.status if record.cable else "",
-            'data-type': lambda record: record.type
+            'data-type': lambda record: record.type,
+            'data-connected': lambda record: "connected" if record.mark_connected or record.cable else "disconnected"
         }
 
 

+ 4 - 0
netbox/dcim/tests/test_filtersets.py

@@ -5247,6 +5247,10 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests):
     def test_type(self):
         params = {'type': [CableTypeChoices.TYPE_CAT3, CableTypeChoices.TYPE_CAT5E]}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
+        params = {'type__empty': 'true'}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 8)
+        params = {'type__empty': 'false'}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)
 
     def test_status(self):
         params = {'status': [LinkStatusChoices.STATUS_CONNECTED]}

+ 2 - 2
netbox/dcim/views.py

@@ -3253,10 +3253,10 @@ class CableEditView(generic.ObjectEditView):
         doesn't currently provide a hook for dynamic class resolution.
         """
         a_terminations_type = CABLE_TERMINATION_TYPES.get(
-            request.GET.get('a_terminations_type') or request.POST.get('a_terminations_type')
+            request.POST.get('a_terminations_type') or request.GET.get('a_terminations_type')
         )
         b_terminations_type = CABLE_TERMINATION_TYPES.get(
-            request.GET.get('b_terminations_type') or request.POST.get('b_terminations_type')
+            request.POST.get('b_terminations_type') or request.GET.get('b_terminations_type')
         )
 
         if obj.pk:

+ 6 - 6
netbox/extras/models/customfields.py

@@ -294,11 +294,11 @@ 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()
-            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 := 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)
 
     def rename_object_data(self, old_name, new_name):
         """
@@ -661,7 +661,7 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel):
                     raise ValidationError(_("Value must be an integer."))
                 if self.validation_minimum is not None and value < self.validation_minimum:
                     raise ValidationError(
-                        _("Value must be at least {minimum}").format(minimum=self.validation_maximum)
+                        _("Value must be at least {minimum}").format(minimum=self.validation_minimum)
                     )
                 if self.validation_maximum is not None and value > self.validation_maximum:
                     raise ValidationError(

+ 4 - 0
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}'

+ 2 - 0
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')
@@ -28,6 +29,7 @@ class ASNIndex(SearchIndex):
 class ASNRangeIndex(SearchIndex):
     model = models.ASNRange
     fields = (
+        ('name', 100),
         ('description', 500),
     )
     display_attrs = ('rir', 'tenant', 'description')

+ 1 - 1
netbox/ipam/tables/ip.py

@@ -51,7 +51,7 @@ IPADDRESS_LINK = """
 {% if record.pk %}
     <a href="{{ record.get_absolute_url }}" id="ipaddress_{{ record.pk }}">{{ record.address }}</a>
 {% elif perms.ipam.add_ipaddress %}
-    <a href="{% url 'ipam:ipaddress_add' %}?address={{ record.1 }}{% if object.vrf %}&vrf={{ object.vrf.pk }}{% endif %}{% if object.tenant %}&tenant={{ object.tenant.pk }}{% endif %}" class="btn btn-sm btn-success">{% if record.0 <= 65536 %}{{ record.0 }}{% else %}Many{% endif %} IP{{ record.0|pluralize }} available</a>
+    <a href="{% url 'ipam:ipaddress_add' %}?address={{ record.1 }}{% if object.vrf %}&vrf={{ object.vrf.pk }}{% endif %}{% if object.tenant %}&tenant={{ object.tenant.pk }}{% endif %}&return_url={% url 'ipam:prefix_ipaddresses' pk=object.pk %}" class="btn btn-sm btn-success">{% if record.0 <= 65536 %}{{ record.0 }}{% else %}Many{% endif %} IP{{ record.0|pluralize }} available</a>
 {% else %}
     {% if record.0 <= 65536 %}{{ record.0 }}{% else %}Many{% endif %} IP{{ record.0|pluralize }} available
 {% endif %}

+ 9 - 8
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)

+ 5 - 2
netbox/netbox/filtersets.py

@@ -133,7 +133,7 @@ class BaseFilterSet(django_filters.FilterSet):
             django_filters.ModelChoiceFilter,
             django_filters.ModelMultipleChoiceFilter,
             TagFilter
-        )) or existing_filter.extra.get('choices'):
+        )):
             # These filter types support only negation
             return FILTER_NEGATION_LOOKUP_MAP
 
@@ -172,6 +172,7 @@ class BaseFilterSet(django_filters.FilterSet):
         # Create new filters for each lookup expression in the map
         for lookup_name, lookup_expr in lookup_map.items():
             new_filter_name = f'{existing_filter_name}__{lookup_name}'
+            existing_filter_extra = deepcopy(existing_filter.extra)
 
             try:
                 if existing_filter_name in cls.declared_filters:
@@ -179,6 +180,8 @@ class BaseFilterSet(django_filters.FilterSet):
                     # create the new filter with the same type because there is no guarantee the defined type
                     # is the same as the default type for the field
                     resolve_field(field, lookup_expr)  # Will raise FieldLookupError if the lookup is invalid
+                    for field_to_remove in ('choices', 'null_value'):
+                        existing_filter_extra.pop(field_to_remove, None)
                     filter_cls = django_filters.BooleanFilter if lookup_expr == 'empty' else type(existing_filter)
                     new_filter = filter_cls(
                         field_name=field_name,
@@ -186,7 +189,7 @@ class BaseFilterSet(django_filters.FilterSet):
                         label=existing_filter.label,
                         exclude=existing_filter.exclude,
                         distinct=existing_filter.distinct,
-                        **existing_filter.extra
+                        **existing_filter_extra
                     )
                 elif hasattr(existing_filter, 'custom_field'):
                     # Filter is for a custom field

+ 1 - 1
netbox/netbox/models/__init__.py

@@ -162,7 +162,7 @@ class NestedGroupModel(NetBoxFeatureSet, MPTTModel):
         super().clean()
 
         # An MPTT model cannot be its own parent
-        if self.pk and self.parent and self.parent in self.get_descendants(include_self=True):
+        if not self._state.adding and self.parent and self.parent in self.get_descendants(include_self=True):
             raise ValidationError({
                 "parent": "Cannot assign self or child {type} as parent.".format(type=self._meta.verbose_name)
             })

+ 2 - 7
netbox/netbox/models/features.py

@@ -408,14 +408,9 @@ class JobsMixin(models.Model):
 
     def get_latest_jobs(self):
         """
-        Return a dictionary mapping of the most recent jobs for this instance.
+        Return a list of the most recent jobs for this instance.
         """
-        return {
-            job.name: job
-            for job in self.jobs.filter(
-                status__in=JobStatusChoices.TERMINAL_STATE_CHOICES
-            ).order_by('name', '-created').distinct('name').defer('data')
-        }
+        return self.jobs.filter(status__in=JobStatusChoices.TERMINAL_STATE_CHOICES).order_by('-created').defer('data')
 
 
 class JournalingMixin(models.Model):

+ 1 - 1
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

+ 2 - 0
netbox/netbox/views/generic/object_views.py

@@ -146,10 +146,12 @@ class ObjectChildrenView(ObjectView, ActionsMixin, TableMixin):
             return render(request, 'htmx/table.html', {
                 'object': instance,
                 'table': table,
+                'model': self.child_model,
             })
 
         return render(request, self.get_template_name(), {
             'object': instance,
+            'model': self.child_model,
             'child_model': self.child_model,
             'base_template': f'{instance._meta.app_label}/{instance._meta.model_name}.html',
             'table': table,

BIN
netbox/project-static/dist/Inter-Black-7VL4YR6G.woff


BIN
netbox/project-static/dist/Inter-Black-NU3KAVPI.woff2


BIN
netbox/project-static/dist/Inter-BlackItalic-4BVAVUVI.woff2


BIN
netbox/project-static/dist/Inter-BlackItalic-HJLUEYVW.woff


BIN
netbox/project-static/dist/Inter-Bold-6AVOS7AV.woff2


BIN
netbox/project-static/dist/Inter-Bold-RTIBL5DO.woff


BIN
netbox/project-static/dist/Inter-BoldItalic-AID2XGS3.woff2


BIN
netbox/project-static/dist/Inter-BoldItalic-UU7SOVRI.woff


BIN
netbox/project-static/dist/Inter-ExtraBold-B5RSZK6R.woff


BIN
netbox/project-static/dist/Inter-ExtraBold-VAPCTO5F.woff2


BIN
netbox/project-static/dist/Inter-ExtraBoldItalic-R7DLWYIK.woff


BIN
netbox/project-static/dist/Inter-ExtraBoldItalic-W26CJYY7.woff2


BIN
netbox/project-static/dist/Inter-ExtraLight-A7NHN7KT.woff


BIN
netbox/project-static/dist/Inter-ExtraLight-DVW3SATI.woff2


BIN
netbox/project-static/dist/Inter-ExtraLightItalic-KXZYPKOE.woff2


BIN
netbox/project-static/dist/Inter-ExtraLightItalic-SKGXKLLA.woff


BIN
netbox/project-static/dist/Inter-Italic-GHDVOOKA.woff


BIN
netbox/project-static/dist/Inter-Italic-RW2ZALTO.woff2


BIN
netbox/project-static/dist/Inter-Light-ARG5Y6MT.woff


BIN
netbox/project-static/dist/Inter-Light-XBRUIIRZ.woff2


BIN
netbox/project-static/dist/Inter-LightItalic-4OWY6V5R.woff2


BIN
netbox/project-static/dist/Inter-LightItalic-WFS25IQZ.woff


BIN
netbox/project-static/dist/Inter-Medium-JV63DMR7.woff2


BIN
netbox/project-static/dist/Inter-Medium-KH2CGZVE.woff


BIN
netbox/project-static/dist/Inter-MediumItalic-P7H6BBYU.woff2


BIN
netbox/project-static/dist/Inter-MediumItalic-PO2E4FIG.woff


BIN
netbox/project-static/dist/Inter-Regular-373XMOLM.woff2


BIN
netbox/project-static/dist/Inter-Regular-DR3VC6YG.woff


BIN
netbox/project-static/dist/Inter-SemiBold-TJ6HPMMH.woff


BIN
netbox/project-static/dist/Inter-SemiBold-UMRILHOG.woff2


BIN
netbox/project-static/dist/Inter-SemiBoldItalic-ABO2DCC7.woff2


BIN
netbox/project-static/dist/Inter-SemiBoldItalic-DM4JJSFU.woff


BIN
netbox/project-static/dist/Inter-Thin-MEKOZMGA.woff


BIN
netbox/project-static/dist/Inter-Thin-TCINWRKS.woff2


BIN
netbox/project-static/dist/Inter-ThinItalic-WRULPH3M.woff2


BIN
netbox/project-static/dist/Inter-ThinItalic-ZFOL6JFL.woff


BIN
netbox/project-static/dist/Inter-italic.var-7LS4VCXC.woff2


BIN
netbox/project-static/dist/Inter-roman.var-EDENVCUS.woff2


BIN
netbox/project-static/dist/Inter.var-FTIQFLGO.woff2


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
netbox/project-static/dist/netbox-external.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
netbox/project-static/dist/netbox.css


BIN
netbox/project-static/dist/plus-jakarta-sans-cyrillic-ext-wght-normal-3FNWYSHQ.woff2


BIN
netbox/project-static/dist/plus-jakarta-sans-latin-ext-wght-normal-WWG75Y4U.woff2


BIN
netbox/project-static/dist/plus-jakarta-sans-latin-wght-normal-S6EFCQOU.woff2


BIN
netbox/project-static/dist/plus-jakarta-sans-vietnamese-wght-normal-NNXUV3SN.woff2


+ 3 - 3
netbox/project-static/package.json

@@ -22,17 +22,17 @@
     "validate:formatting:scripts": "prettier -c src/**/*.ts"
   },
   "dependencies": {
-    "@fontsource-variable/plus-jakarta-sans": "^5.1.0",
     "@mdi/font": "7.4.47",
-    "@tabler/core": "1.0.0-beta20",
+    "@tabler/core": "1.0.0-beta21",
     "bootstrap": "5.3.3",
     "clipboard": "2.0.11",
     "flatpickr": "4.6.13",
     "gridstack": "10.3.1",
     "htmx.org": "1.9.12",
     "query-string": "9.1.0",
-    "sass": "1.78.0",
+    "sass": "1.79.3",
     "tom-select": "2.3.1",
+    "typeface-inter": "3.18.1",
     "typeface-roboto-mono": "1.1.13"
   },
   "devDependencies": {

+ 1 - 2
netbox/project-static/styles/_variables.scss

@@ -1,10 +1,9 @@
 // Global variables
 
 // Set base fonts
-$font-family-sans-serif: 'Plus Jakarta Sans Variable', system-ui, sans-serif;
+$font-family-sans-serif: 'Inter', system-ui, sans-serif;
 // See https://github.com/tabler/tabler/issues/1812
 $font-family-monospace: 'Roboto Mono';
-$font-weight-base: 500;
 
 // Set the navigation sidebar width
 $sidebar-width: 18rem;

+ 1 - 1
netbox/project-static/styles/external.scss

@@ -4,5 +4,5 @@
 @import 'gridstack/dist/gridstack.min.css';
 
 // Fonts
+@import url("../node_modules/typeface-inter/inter.css");
 @import url("../node_modules/typeface-roboto-mono/index.css");
-@import url("../node_modules/@fontsource-variable/plus-jakarta-sans/index.css");

+ 3 - 0
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 <code> elements inside a <pre>

+ 32 - 25
netbox/project-static/yarn.lock

@@ -200,11 +200,6 @@
   resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5"
   integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==
 
-"@fontsource-variable/plus-jakarta-sans@^5.1.0":
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/@fontsource-variable/plus-jakarta-sans/-/plus-jakarta-sans-5.1.0.tgz#9dd5aa72277c43d408f6e34cd658d823fbef1fe1"
-  integrity sha512-K7o2GO7/quVFFyfjTqYZu0ng4KJGf60KSAGbvUWwKuH+/Giyl6Qe/EqnGLcjrl9AmXZzTvtRB1xpkASn8FNFoQ==
-
 "@graphiql/plugin-explorer@3.2.2":
   version "3.2.2"
   resolved "https://registry.yarnpkg.com/@graphiql/plugin-explorer/-/plugin-explorer-3.2.2.tgz#973d6015b6db15041902e95c3e4b746473313eb6"
@@ -675,19 +670,19 @@
   resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8"
   integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
 
-"@tabler/core@1.0.0-beta20":
-  version "1.0.0-beta20"
-  resolved "https://registry.yarnpkg.com/@tabler/core/-/core-1.0.0-beta20.tgz#3fcc3b5634ca89a413ba9c077df7bdfc531ab93c"
-  integrity sha512-OzKpur+Ug7e+HMbNJrMcSuWZGUsJTvu7HYboBNRE8qyo1RKIWqvwL5YewKBJ+odW5pDOqBPzbsS4je3EBQQxHw==
+"@tabler/core@1.0.0-beta21":
+  version "1.0.0-beta21"
+  resolved "https://registry.yarnpkg.com/@tabler/core/-/core-1.0.0-beta21.tgz#cd10d7648b3b7b31927a430fd776d3304e796403"
+  integrity sha512-9ZKu38BScc0eHruhX/SlVDSiXenBFSgBp2WDq6orkuC8J/1yutKDt7CdXuJpBwkiADEk5yqYV31Ku+CnhwOc3Q==
   dependencies:
     "@popperjs/core" "^2.11.8"
-    "@tabler/icons" "^2.32.0"
-    bootstrap "5.3.1"
+    "@tabler/icons" "^3.14.0"
+    bootstrap "5.3.3"
 
-"@tabler/icons@^2.32.0":
-  version "2.47.0"
-  resolved "https://registry.yarnpkg.com/@tabler/icons/-/icons-2.47.0.tgz#c41c680d1947e3ab2d60af3febc4132287c60596"
-  integrity sha512-4w5evLh+7FUUiA1GucvGj2ReX2TvOjEr4ejXdwL/bsjoSkof6r1gQmzqI+VHrE2CpJpB3al7bCTulOkFa/RcyA==
+"@tabler/icons@^3.14.0":
+  version "3.16.0"
+  resolved "https://registry.yarnpkg.com/@tabler/icons/-/icons-3.16.0.tgz#d618670b80163925a31a6c2290e8775f6058d81a"
+  integrity sha512-GU7MSx4uQEr55BmyON6hD/QYTl6k1v0YlRhM91gBWDoKAbyCt6QIYw7rpJ/ecdh5zrHaTOJKPenZ4+luoutwFA==
 
 "@tanstack/react-virtual@^3.0.0-beta.60":
   version "3.5.0"
@@ -977,11 +972,6 @@ binary-extensions@^2.0.0:
   resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
   integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
 
-bootstrap@5.3.1:
-  version "5.3.1"
-  resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.1.tgz#8ca07040ad15d7f75891d1504cf14c5dedfb1cfe"
-  integrity sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g==
-
 bootstrap@5.3.3:
   version "5.3.3"
   resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.3.tgz#de35e1a765c897ac940021900fcbb831602bac38"
@@ -1048,6 +1038,13 @@ chalk@^4.0.0:
   optionalDependencies:
     fsevents "~2.3.2"
 
+chokidar@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41"
+  integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==
+  dependencies:
+    readdirp "^4.0.1"
+
 client-only@^0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
@@ -2477,6 +2474,11 @@ react@18.3.1:
   dependencies:
     loose-envify "^1.1.0"
 
+readdirp@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.1.tgz#b2fe35f8dca63183cd3b86883ecc8f720ea96ae6"
+  integrity sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==
+
 readdirp@~3.6.0:
   version "3.6.0"
   resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -2561,12 +2563,12 @@ safe-regex-test@^1.0.3:
     es-errors "^1.3.0"
     is-regex "^1.1.4"
 
-sass@1.78.0:
-  version "1.78.0"
-  resolved "https://registry.yarnpkg.com/sass/-/sass-1.78.0.tgz#cef369b2f9dc21ea1d2cf22c979f52365da60841"
-  integrity sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==
+sass@1.79.3:
+  version "1.79.3"
+  resolved "https://registry.yarnpkg.com/sass/-/sass-1.79.3.tgz#7811b000eb68195fe51dea89177e73e7ef7f546f"
+  integrity sha512-m7dZxh0W9EZ3cw50Me5GOuYm/tVAJAn91SUnohLRo9cXBixGUOdvmryN+dXpwR831bhoY3Zv7rEFt85PUwTmzA==
   dependencies:
-    chokidar ">=3.0.0 <4.0.0"
+    chokidar "^4.0.0"
     immutable "^4.0.0"
     source-map-js ">=0.6.2 <2.0.0"
 
@@ -2857,6 +2859,11 @@ typed-array-length@^1.0.6:
     is-typed-array "^1.1.13"
     possible-typed-array-names "^1.0.0"
 
+typeface-inter@3.18.1:
+  version "3.18.1"
+  resolved "https://registry.yarnpkg.com/typeface-inter/-/typeface-inter-3.18.1.tgz#24cccdf29923f318589783997be20a662cd3ab9c"
+  integrity sha512-c+TBanYFCvmg3j5vPk+zxK4ocMZbPxMEmjnwG7rPQoV87xvQ6b07VbAOC0Va0XBbbZCGw6cWNeFuLeg1YQru3Q==
+
 typeface-roboto-mono@1.1.13:
   version "1.1.13"
   resolved "https://registry.yarnpkg.com/typeface-roboto-mono/-/typeface-roboto-mono-1.1.13.tgz#2af8662db8f9119c00efd55d6ed8877d2a69ec94"

+ 2 - 2
netbox/release.yaml

@@ -1,3 +1,3 @@
-version: "4.1.1"
+version: "4.1.2"
 edition: "Community"
-published: "2024-09-12"
+published: "2024-09-26"

+ 1 - 0
netbox/templates/dcim/device.html

@@ -325,6 +325,7 @@
                         <td>
                             {% if object.total_weight %}
                                 {{ object.total_weight|floatformat }} {% trans "Kilograms" %}
+                                ({{ object.total_weight|kg_to_pounds|floatformat }} {% trans "Pounds" %})
                             {% else %}
                                 {{ ''|placeholder }}
                             {% endif %}

+ 6 - 2
netbox/templates/dcim/rack.html

@@ -103,8 +103,12 @@
           <tr>
             <th scope="row">{% trans "Total Weight" %}</th>
             <td>
-              {{ object.total_weight|floatformat }} {% trans "Kilograms" %}
-              ({{ object.total_weight|kg_to_pounds|floatformat }} {% trans "Pounds" %})
+                {% if object.total_weight %}
+                    {{ object.total_weight|floatformat }} {% trans "Kilograms" %}
+                    ({{ object.total_weight|kg_to_pounds|floatformat }} {% trans "Pounds" %})
+                {% else %}
+                    {{ ''|placeholder }}
+                {% endif %}
             </td>
           </tr>
         </table>

+ 1 - 1
netbox/templates/extras/script_list.html

@@ -50,7 +50,7 @@
           </thead>
           <tbody>
             {% for script in module.scripts.all %}
-              {% with last_job=script.get_latest_jobs|get_key:script.name %}
+              {% with last_job=script.get_latest_jobs|first %}
                 <tr>
                   <td>
                     {% if script.is_executable %}

+ 1 - 1
netbox/templates/generic/_base.html

@@ -10,7 +10,7 @@
 
           {# Title #}
           <div>
-            <h1 class="page-title mt-1 mb-2">{% block title %}{% endblock title %}</h1>
+            <h1 class="page-title">{% block title %}{% endblock title %}</h1>
             {% block subtitle %}{% endblock %}
           </div>
 

+ 1 - 1
netbox/templates/virtualization/cluster.html

@@ -69,7 +69,7 @@
               <th scope="row"><i class="mdi mdi-harddisk"></i> {% trans "Disk Space" %}</th>
               <td>
                   {% if disk_sum %}
-                      {{ disk_sum }} {% trans "GB" context "Abbreviation for gigabyte" %}
+                      {{ disk_sum|humanize_megabytes }}
                   {% else %}
                       {{ ''|placeholder }}
                   {% endif %}

BIN
netbox/translations/cs/LC_MESSAGES/django.mo


+ 179 - 164
netbox/translations/cs/LC_MESSAGES/django.po

@@ -12,7 +12,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-25 05:02+0000\n"
 "PO-Revision-Date: 2023-10-30 17:48+0000\n"
 "Last-Translator: Jeremy Stretch, 2024\n"
 "Language-Team: Czech (https://app.transifex.com/netbox-community/teams/178115/cs/)\n"
@@ -87,8 +87,8 @@ msgstr "Vaše heslo bylo úspěšně změněno."
 
 #: 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:1522
+#: netbox/dcim/choices.py:1598 netbox/dcim/choices.py:1648
 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45
 #: netbox/vpn/choices.py:18
 msgid "Planned"
@@ -101,7 +101,7 @@ msgstr "Zajišťování"
 #: 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:1597 netbox/dcim/choices.py:1647
 #: 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
@@ -112,8 +112,8 @@ msgid "Active"
 msgstr "Aktivní"
 
 #: 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:1596
+#: netbox/dcim/choices.py:1649 netbox/virtualization/choices.py:24
 #: netbox/virtualization/choices.py:43
 msgid "Offline"
 msgstr "Vypnuto"
@@ -126,7 +126,7 @@ msgstr "Zrušení přidělování"
 msgid "Decommissioned"
 msgstr "Vyřazeno z provozu"
 
-#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605
+#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1609
 #: netbox/tenancy/choices.py:17
 msgid "Primary"
 msgstr "Primární"
@@ -332,7 +332,7 @@ msgstr "Zakončení A (ID)"
 #: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391
 #: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498
 #: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703
-#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277
+#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:280
 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167
 #: netbox/templates/htmx/object_selector.html:28
 #: netbox/templates/inc/filter_list.html:45
@@ -570,8 +570,8 @@ msgstr "ID služby"
 #: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200
 #: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064
 #: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479
-#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757
-#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250
+#: netbox/dcim/tables/devices.py:701 netbox/dcim/tables/devices.py:758
+#: netbox/dcim/tables/devices.py:1000 netbox/dcim/tables/devicetypes.py:250
 #: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33
 #: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443
 #: netbox/templates/circuits/circuittype.html:30
@@ -608,7 +608,7 @@ msgstr "Barva"
 #: 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
-#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77
+#: netbox/dcim/tables/devices.py:811 netbox/dcim/tables/power.py:77
 #: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42
 #: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465
 #: netbox/netbox/tables/tables.py:240
@@ -665,8 +665,8 @@ msgstr "Účet poskytovatele"
 #: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799
 #: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958
 #: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170
-#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813
-#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69
+#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:814
+#: netbox/dcim/tables/devices.py:1060 netbox/dcim/tables/modules.py:69
 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126
 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138
 #: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305
@@ -815,7 +815,7 @@ msgstr "Parametry služby"
 #: netbox/circuits/forms/model_forms.py:183
 #: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181
 #: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323
-#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691
+#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1692
 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81
 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136
 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232
@@ -1397,11 +1397,11 @@ msgstr "sítě poskytovatelů"
 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289
 #: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433
 #: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531
-#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727
-#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837
-#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970
-#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019
-#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32
+#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:728
+#: netbox/dcim/tables/devices.py:775 netbox/dcim/tables/devices.py:838
+#: netbox/dcim/tables/devices.py:908 netbox/dcim/tables/devices.py:971
+#: netbox/dcim/tables/devices.py:991 netbox/dcim/tables/devices.py:1020
+#: netbox/dcim/tables/devices.py:1050 netbox/dcim/tables/devicetypes.py:32
 #: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62
 #: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113
 #: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51
@@ -1539,7 +1539,7 @@ msgstr "Míra odevzdání"
 #: netbox/circuits/tables/circuits.py:80
 #: netbox/circuits/tables/providers.py:48
 #: netbox/circuits/tables/providers.py:82
-#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032
+#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1033
 #: 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:84
@@ -1618,7 +1618,7 @@ msgstr "Dokončeno"
 #: 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:1599 netbox/virtualization/choices.py:47
 msgid "Failed"
 msgstr "Neuspěl"
 
@@ -1943,7 +1943,7 @@ msgstr ""
 msgid "Rack Elevations"
 msgstr "Výšky stojanů"
 
-#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506
+#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1510
 #: 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
@@ -2516,7 +2516,7 @@ msgid "Staging"
 msgstr "Inscenace"
 
 #: 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:1523
 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48
 msgid "Decommissioning"
 msgstr "Vyřazení z provozu"
@@ -2580,7 +2580,7 @@ msgstr "Zastaralé"
 msgid "Millimeters"
 msgstr "Milimetry"
 
-#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541
+#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1545
 msgid "Inches"
 msgstr "palce"
 
@@ -2602,9 +2602,9 @@ msgstr "Zezadu dopředu"
 #: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234
 #: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93
 #: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062
-#: netbox/dcim/forms/model_forms.py:1501
+#: netbox/dcim/forms/model_forms.py:1502
 #: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653
-#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950
+#: netbox/dcim/tables/devices.py:866 netbox/dcim/tables/devices.py:951
 #: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59
 #: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44
 #: netbox/templates/dcim/interface.html:102
@@ -2634,15 +2634,15 @@ msgstr "Rodič"
 msgid "Child"
 msgstr "Dítě"
 
-#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339
-#: netbox/templates/dcim/rack.html:129
+#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:340
+#: netbox/templates/dcim/rack.html:133
 #: netbox/templates/dcim/rack_elevation_list.html:20
 #: netbox/templates/dcim/rackreservation.html:76
 msgid "Front"
 msgstr "Fronta"
 
-#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345
-#: netbox/templates/dcim/rack.html:135
+#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:346
+#: netbox/templates/dcim/rack.html:139
 #: netbox/templates/dcim/rack_elevation_list.html:21
 #: netbox/templates/dcim/rackreservation.html:82
 msgid "Rear"
@@ -2670,7 +2670,7 @@ msgid "Side to rear"
 msgstr "Ze strany dozadu"
 
 #: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253
-#: netbox/dcim/choices.py:1291
+#: netbox/dcim/choices.py:1295
 msgid "Passive"
 msgstr "pasivní"
 
@@ -2678,15 +2678,15 @@ msgstr "pasivní"
 msgid "Mixed"
 msgstr "Smíšené"
 
-#: 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 "NEMA (bez blokování)"
 
-#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748
+#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:749
 msgid "NEMA (Locking)"
 msgstr "NEMA (zamykání)"
 
-#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772
+#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:773
 msgid "California Style"
 msgstr "Kalifornský styl"
 
@@ -2694,42 +2694,42 @@ msgstr "Kalifornský styl"
 msgid "International/ITA"
 msgstr "Mezinárodní/ITA"
 
-#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807
+#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:808
 msgid "Proprietary"
 msgstr "Proprietární"
 
-#: 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:1211 netbox/dcim/choices.py:1213
+#: netbox/dcim/choices.py:1439 netbox/dcim/choices.py:1441
 #: netbox/netbox/navigation/menu.py:200
 msgid "Other"
 msgstr "Ostatní"
 
-#: netbox/dcim/choices.py:780
+#: netbox/dcim/choices.py:781
 msgid "ITA/International"
 msgstr "ITA/Mezinárodní"
 
-#: netbox/dcim/choices.py:846
+#: netbox/dcim/choices.py:848
 msgid "Physical"
 msgstr "Fyzické"
 
-#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013
+#: netbox/dcim/choices.py:849 netbox/dcim/choices.py:1016
 msgid "Virtual"
 msgstr "Virtuální"
 
-#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086
+#: netbox/dcim/choices.py:850 netbox/dcim/choices.py:1089
 #: 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/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1397
 #: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144
 #: netbox/templates/dcim/interface.html:210
 msgid "Wireless"
 msgstr "Bezdrátové"
 
-#: netbox/dcim/choices.py:1011
+#: netbox/dcim/choices.py:1014
 msgid "Virtual interfaces"
 msgstr "Virtuální rozhraní"
 
-#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410
+#: netbox/dcim/choices.py:1017 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
@@ -2739,27 +2739,27 @@ msgstr "Virtuální rozhraní"
 msgid "Bridge"
 msgstr "Most"
 
-#: netbox/dcim/choices.py:1015
+#: netbox/dcim/choices.py:1018
 msgid "Link Aggregation Group (LAG)"
 msgstr "Agregační skupina (LAG)"
 
-#: netbox/dcim/choices.py:1019
+#: netbox/dcim/choices.py:1022
 msgid "Ethernet (fixed)"
 msgstr "Ethernet (pevný)"
 
-#: netbox/dcim/choices.py:1034
+#: netbox/dcim/choices.py:1037
 msgid "Ethernet (modular)"
 msgstr "Ethernet (modulární)"
 
-#: netbox/dcim/choices.py:1070
+#: netbox/dcim/choices.py:1073
 msgid "Ethernet (backplane)"
 msgstr "Ethernet (propojovací deska)"
 
-#: netbox/dcim/choices.py:1101
+#: netbox/dcim/choices.py:1105
 msgid "Cellular"
 msgstr "Buněčný"
 
-#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383
+#: netbox/dcim/choices.py:1157 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
@@ -2767,129 +2767,130 @@ msgstr "Buněčný"
 msgid "Serial"
 msgstr "Sériový"
 
-#: netbox/dcim/choices.py:1168
+#: netbox/dcim/choices.py:1172
 msgid "Coaxial"
 msgstr "Koaxiální"
 
-#: netbox/dcim/choices.py:1188
+#: netbox/dcim/choices.py:1192
 msgid "Stacking"
 msgstr "Stohování"
 
-#: netbox/dcim/choices.py:1238
+#: netbox/dcim/choices.py:1242
 msgid "Half"
 msgstr "Poloviční"
 
-#: netbox/dcim/choices.py:1239
+#: netbox/dcim/choices.py:1243
 msgid "Full"
 msgstr "Plný"
 
-#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31
+#: netbox/dcim/choices.py:1244 netbox/netbox/preferences.py:31
 #: netbox/wireless/choices.py:480
 msgid "Auto"
 msgstr "Auto"
 
-#: netbox/dcim/choices.py:1251
+#: netbox/dcim/choices.py:1255
 msgid "Access"
 msgstr "Přístup"
 
-#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172
+#: netbox/dcim/choices.py:1256 netbox/ipam/tables/vlans.py:172
 #: netbox/ipam/tables/vlans.py:217
 #: netbox/templates/dcim/inc/interface_vlans_table.html:7
 msgid "Tagged"
 msgstr "Označeno"
 
-#: netbox/dcim/choices.py:1253
+#: netbox/dcim/choices.py:1257
 msgid "Tagged (All)"
 msgstr "Označeno (Vše)"
 
-#: netbox/dcim/choices.py:1282
+#: netbox/dcim/choices.py:1286
 msgid "IEEE Standard"
 msgstr "Norma IEEE"
 
-#: netbox/dcim/choices.py:1293
+#: netbox/dcim/choices.py:1297
 msgid "Passive 24V (2-pair)"
 msgstr "Pasivní 24V (2 páry)"
 
-#: netbox/dcim/choices.py:1294
+#: netbox/dcim/choices.py:1298
 msgid "Passive 24V (4-pair)"
 msgstr "Pasivní 24V (4 páry)"
 
-#: netbox/dcim/choices.py:1295
+#: netbox/dcim/choices.py:1299
 msgid "Passive 48V (2-pair)"
 msgstr "Pasivní 48V (2 páry)"
 
-#: netbox/dcim/choices.py:1296
+#: netbox/dcim/choices.py:1300
 msgid "Passive 48V (4-pair)"
 msgstr "Pasivní 48V (4 páry)"
 
-#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476
+#: netbox/dcim/choices.py:1370 netbox/dcim/choices.py:1480
 msgid "Copper"
 msgstr "měď"
 
-#: netbox/dcim/choices.py:1389
+#: netbox/dcim/choices.py:1393
 msgid "Fiber Optic"
 msgstr "Optická vlákna"
 
-#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505
+#: netbox/dcim/choices.py:1426 netbox/dcim/choices.py:1509
 msgid "USB"
 msgstr "USB"
 
-#: netbox/dcim/choices.py:1492
+#: netbox/dcim/choices.py:1496
 msgid "Fiber"
 msgstr "Vlákno"
 
-#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227
+#: netbox/dcim/choices.py:1521 netbox/dcim/forms/filtersets.py:1227
 msgid "Connected"
 msgstr "Připojeno"
 
-#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497
+#: netbox/dcim/choices.py:1540 netbox/wireless/choices.py:497
 msgid "Kilometers"
 msgstr "Kilometry"
 
-#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65
+#: netbox/dcim/choices.py:1541 netbox/templates/dcim/cable_trace.html:65
 #: netbox/wireless/choices.py:498
 msgid "Meters"
 msgstr "Metry"
 
-#: netbox/dcim/choices.py:1538
+#: netbox/dcim/choices.py:1542
 msgid "Centimeters"
 msgstr "Centimetry"
 
-#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499
+#: netbox/dcim/choices.py:1543 netbox/wireless/choices.py:499
 msgid "Miles"
 msgstr "Míle"
 
-#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66
+#: netbox/dcim/choices.py:1544 netbox/templates/dcim/cable_trace.html:66
 #: netbox/wireless/choices.py:500
 msgid "Feet"
 msgstr "Stopy"
 
-#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327
-#: netbox/templates/dcim/rack.html:106
+#: netbox/dcim/choices.py:1560 netbox/templates/dcim/device.html:327
+#: netbox/templates/dcim/rack.html:107
 msgid "Kilograms"
 msgstr "Kilogramy"
 
-#: netbox/dcim/choices.py:1557
+#: netbox/dcim/choices.py:1561
 msgid "Grams"
 msgstr "Gramy"
 
-#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107
+#: netbox/dcim/choices.py:1562 netbox/templates/dcim/device.html:328
+#: netbox/templates/dcim/rack.html:108
 msgid "Pounds"
 msgstr "libry"
 
-#: netbox/dcim/choices.py:1559
+#: netbox/dcim/choices.py:1563
 msgid "Ounces"
 msgstr "Unce"
 
-#: netbox/dcim/choices.py:1606
+#: netbox/dcim/choices.py:1610
 msgid "Redundant"
 msgstr "Redundantní"
 
-#: netbox/dcim/choices.py:1627
+#: netbox/dcim/choices.py:1631
 msgid "Single phase"
 msgstr "Jednofázový"
 
-#: netbox/dcim/choices.py:1628
+#: netbox/dcim/choices.py:1632
 msgid "Three-phase"
 msgstr "Třífázový"
 
@@ -3259,7 +3260,7 @@ msgstr "Přiřazené VID"
 
 #: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489
 #: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428
-#: netbox/dcim/forms/model_forms.py:1377
+#: netbox/dcim/forms/model_forms.py:1378
 #: netbox/dcim/models/device_components.py:712
 #: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316
 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483
@@ -3338,7 +3339,7 @@ msgid "LAG interface (ID)"
 msgstr "Rozhraní LAG (ID)"
 
 #: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725
-#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689
+#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1690
 #: netbox/templates/dcim/virtualdevicecontext.html:15
 msgid "Virtual Device Context"
 msgstr "Kontext virtuálního zařízení"
@@ -3413,7 +3414,7 @@ msgstr "Značky"
 #: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546
 #: netbox/dcim/forms/object_create.py:197
 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165
-#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247
+#: netbox/dcim/tables/devices.py:704 netbox/dcim/tables/devicetypes.py:247
 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131
 #: netbox/templates/dcim/modulebay.html:38
 #: netbox/templates/dcim/virtualchassis.html:66
@@ -3460,9 +3461,9 @@ msgstr "Časové pásmo"
 #: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337
 #: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395
 #: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075
-#: netbox/dcim/forms/model_forms.py:1514
+#: netbox/dcim/forms/model_forms.py:1515
 #: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96
-#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936
+#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:937
 #: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309
 #: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60
 #: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132
@@ -3586,9 +3587,9 @@ msgstr "Číslování"
 #: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367
 #: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534
 #: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070
-#: netbox/dcim/forms/model_forms.py:1509
+#: netbox/dcim/forms/model_forms.py:1510
 #: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169
-#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933
+#: netbox/dcim/tables/devices.py:806 netbox/dcim/tables/devices.py:934
 #: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129
 #: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260
 #: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358
@@ -3678,7 +3679,7 @@ msgstr "Stojan"
 #: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398
 #: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608
 #: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942
-#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579
+#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1580
 #: netbox/templates/dcim/device_edit.html:20
 msgid "Hardware"
 msgstr "Hardware"
@@ -3786,15 +3787,15 @@ msgstr "Nástupiště"
 #: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616
 #: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633
 #: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208
-#: netbox/dcim/forms/model_forms.py:1663
+#: netbox/dcim/forms/model_forms.py:1664
 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22
 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60
 #: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371
 #: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454
 #: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594
-#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750
-#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857
-#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053
+#: netbox/dcim/tables/devices.py:694 netbox/dcim/tables/devices.py:751
+#: netbox/dcim/tables/devices.py:798 netbox/dcim/tables/devices.py:858
+#: netbox/dcim/tables/devices.py:927 netbox/dcim/tables/devices.py:1054
 #: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321
 #: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481
 #: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319
@@ -3938,7 +3939,7 @@ msgstr "Přidělený příkon (W)"
 
 #: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786
 #: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278
-#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55
+#: netbox/dcim/forms/model_forms.py:1567 netbox/dcim/forms/object_import.py:55
 msgid "Power port"
 msgstr "Napájecí port"
 
@@ -4026,14 +4027,14 @@ msgstr "Režim"
 msgid "VLAN group"
 msgstr "Skupina VLAN"
 
-#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359
+#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1360
 #: netbox/dcim/tables/devices.py:579
 #: netbox/virtualization/forms/bulk_edit.py:248
 #: netbox/virtualization/forms/model_forms.py:326
 msgid "Untagged VLAN"
 msgstr "Neznačené VLAN"
 
-#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368
+#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1369
 #: netbox/dcim/tables/devices.py:585
 #: netbox/virtualization/forms/bulk_edit.py:256
 #: netbox/virtualization/forms/model_forms.py:335
@@ -4052,7 +4053,7 @@ msgid "Wireless LANs"
 msgstr "Bezdrátové LAN sítě"
 
 #: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328
-#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285
+#: netbox/dcim/forms/model_forms.py:1390 netbox/ipam/forms/bulk_edit.py:285
 #: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169
 #: netbox/templates/dcim/interface.html:122
 #: netbox/templates/ipam/prefix.html:95
@@ -4061,24 +4062,24 @@ msgid "Addressing"
 msgstr "Adresování"
 
 #: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720
-#: netbox/dcim/forms/model_forms.py:1390
+#: netbox/dcim/forms/model_forms.py:1391
 #: netbox/virtualization/forms/model_forms.py:350
 msgid "Operation"
 msgstr "Operace"
 
 #: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329
-#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392
+#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1393
 msgid "PoE"
 msgstr "PoE"
 
-#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391
+#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1392
 #: netbox/templates/dcim/interface.html:99
 #: netbox/virtualization/forms/bulk_edit.py:267
 #: netbox/virtualization/forms/model_forms.py:351
 msgid "Related Interfaces"
 msgstr "Související rozhraní"
 
-#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393
+#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1394
 #: netbox/virtualization/forms/bulk_edit.py:268
 #: netbox/virtualization/forms/model_forms.py:352
 msgid "802.1Q Switching"
@@ -4417,7 +4418,7 @@ msgid "VDC {vdc} is not assigned to device {device}"
 msgstr "VDC {vdc} není přiřazen k zařízení {device}"
 
 #: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000
-#: netbox/dcim/forms/model_forms.py:1574
+#: netbox/dcim/forms/model_forms.py:1575
 #: netbox/dcim/forms/object_import.py:117
 msgid "Rear port"
 msgstr "Zadní port"
@@ -4431,7 +4432,7 @@ msgstr "Odpovídající zadní port"
 msgid "Physical medium classification"
 msgstr "Klasifikace fyzického média"
 
-#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818
+#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:819
 msgid "Installed device"
 msgstr "Nainstalované zařízení"
 
@@ -4520,7 +4521,7 @@ msgid "{side_upper} side termination not found: {device} {name}"
 msgstr "Zakončení strany {side_upper} nebylo nalezeno: {device} {name}"
 
 #: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785
-#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132
+#: netbox/dcim/tables/devices.py:1024 netbox/templates/dcim/device.html:132
 #: netbox/templates/dcim/virtualchassis.html:27
 #: netbox/templates/dcim/virtualchassis.html:67
 msgid "Master"
@@ -4550,6 +4551,28 @@ msgstr "Typ napájení (AC/DC)"
 msgid "Single or three-phase"
 msgstr "Jednofázové nebo třífázové"
 
+#: netbox/dcim/forms/bulk_import.py:1439 netbox/dcim/forms/model_forms.py:1670
+#: netbox/templates/dcim/device.html:190
+#: netbox/templates/dcim/virtualdevicecontext.html:30
+#: netbox/templates/virtualization/virtualmachine.html:52
+msgid "Primary IPv4"
+msgstr "Primární IPv4"
+
+#: netbox/dcim/forms/bulk_import.py:1443
+msgid "IPv4 address with mask, e.g. 1.2.3.4/24"
+msgstr "IPv4 adresa s maskou, např. 1.2.3.4/24"
+
+#: netbox/dcim/forms/bulk_import.py:1446 netbox/dcim/forms/model_forms.py:1679
+#: netbox/templates/dcim/device.html:206
+#: netbox/templates/dcim/virtualdevicecontext.html:41
+#: netbox/templates/virtualization/virtualmachine.html:68
+msgid "Primary IPv6"
+msgstr "Primární IPv6"
+
+#: netbox/dcim/forms/bulk_import.py:1450
+msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64"
+msgstr "IPv6 adresa s délkou předpony, např. 2001:db8: :1/64"
+
 #: netbox/dcim/forms/common.py:24 netbox/dcim/models/device_components.py:528
 #: netbox/templates/dcim/interface.html:57
 #: netbox/templates/virtualization/vminterface.html:55
@@ -4712,7 +4735,7 @@ msgstr "Druh"
 msgid "Mgmt only"
 msgstr "Pouze správa"
 
-#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382
+#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1383
 #: netbox/dcim/models/device_components.py:630
 #: netbox/templates/dcim/interface.html:129
 msgid "WWN"
@@ -4746,7 +4769,7 @@ msgstr "Vysílací výkon (dBm)"
 msgid "Cable"
 msgstr "Kabel"
 
-#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945
+#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:946
 msgid "Discovered"
 msgstr "objeveno"
 
@@ -4843,8 +4866,8 @@ msgstr "Šablona napájecího portu"
 msgid "Rear port template"
 msgstr "Šablona zadního portu"
 
-#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387
-#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582
+#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1388
+#: netbox/dcim/forms/model_forms.py:1551 netbox/dcim/forms/model_forms.py:1583
 #: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318
 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289
 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372
@@ -4868,7 +4891,7 @@ msgstr "Šablona zadního portu"
 msgid "Interface"
 msgstr "Rozhraní"
 
-#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583
+#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1584
 #: netbox/dcim/tables/connections.py:27
 #: netbox/templates/dcim/consoleport.html:17
 #: netbox/templates/dcim/consoleserverport.html:74
@@ -4876,14 +4899,14 @@ msgstr "Rozhraní"
 msgid "Console Port"
 msgstr "Port konzoly"
 
-#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584
+#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1585
 #: netbox/templates/dcim/consoleport.html:73
 #: netbox/templates/dcim/consoleserverport.html:17
 #: netbox/templates/dcim/frontport.html:109
 msgid "Console Server Port"
 msgstr "Port konzolového serveru"
 
-#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585
+#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1586
 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52
 #: netbox/templates/dcim/consoleport.html:76
 #: netbox/templates/dcim/consoleserverport.html:77
@@ -4894,8 +4917,8 @@ msgstr "Port konzolového serveru"
 msgid "Front Port"
 msgstr "Přední port"
 
-#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586
-#: netbox/dcim/tables/devices.py:706
+#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1587
+#: netbox/dcim/tables/devices.py:707
 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53
 #: netbox/templates/dcim/consoleport.html:79
 #: netbox/templates/dcim/consoleserverport.html:80
@@ -4907,24 +4930,24 @@ msgstr "Přední port"
 msgid "Rear Port"
 msgstr "Zadní port"
 
-#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587
+#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1588
 #: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512
 #: netbox/templates/dcim/poweroutlet.html:44
 #: netbox/templates/dcim/powerport.html:17
 msgid "Power Port"
 msgstr "Napájecí port"
 
-#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588
+#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1589
 #: netbox/templates/dcim/poweroutlet.html:17
 #: netbox/templates/dcim/powerport.html:77
 msgid "Power Outlet"
 msgstr "Napájecí zásuvka"
 
-#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590
+#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1591
 msgid "Component Assignment"
 msgstr "Přiřazení komponent"
 
-#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637
+#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1638
 msgid "An InventoryItem can only be assigned to a single component."
 msgstr "InventoryItem lze přiřadit pouze k jedné komponentě."
 
@@ -4932,11 +4955,15 @@ msgstr "InventoryItem lze přiřadit pouze k jedné komponentě."
 msgid "LAG interface"
 msgstr "Rozhraní LAG"
 
-#: netbox/dcim/forms/model_forms.py:1483
+#: netbox/dcim/forms/model_forms.py:1355
+msgid "Filter VLANs available for assignment by group."
+msgstr "Filtrujte sítě VLAN dostupné pro přiřazení podle skupiny."
+
+#: netbox/dcim/forms/model_forms.py:1484
 msgid "Child Device"
 msgstr "Podřazené zařízení"
 
-#: netbox/dcim/forms/model_forms.py:1484
+#: netbox/dcim/forms/model_forms.py:1485
 msgid ""
 "Child devices must first be created and assigned to the site and rack of the"
 " parent device."
@@ -4944,44 +4971,32 @@ msgstr ""
 "Podřízená zařízení musí být nejprve vytvořena a přiřazena k staveništi a "
 "stojanu nadřazeného zařízení."
 
-#: netbox/dcim/forms/model_forms.py:1526
+#: netbox/dcim/forms/model_forms.py:1527
 msgid "Console port"
 msgstr "Port konzoly"
 
-#: netbox/dcim/forms/model_forms.py:1534
+#: netbox/dcim/forms/model_forms.py:1535
 msgid "Console server port"
 msgstr "Port konzolového serveru"
 
-#: netbox/dcim/forms/model_forms.py:1542
+#: netbox/dcim/forms/model_forms.py:1543
 msgid "Front port"
 msgstr "Přední port"
 
-#: netbox/dcim/forms/model_forms.py:1558
+#: netbox/dcim/forms/model_forms.py:1559
 msgid "Power outlet"
 msgstr "Napájecí zásuvka"
 
-#: netbox/dcim/forms/model_forms.py:1578
+#: netbox/dcim/forms/model_forms.py:1579
 #: netbox/templates/dcim/inventoryitem.html:17
 msgid "Inventory Item"
 msgstr "Položka inventáře"
 
-#: netbox/dcim/forms/model_forms.py:1651
+#: netbox/dcim/forms/model_forms.py:1652
 #: netbox/templates/dcim/inventoryitemrole.html:15
 msgid "Inventory Item Role"
 msgstr "Role položky inventáře"
 
-#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190
-#: netbox/templates/dcim/virtualdevicecontext.html:30
-#: netbox/templates/virtualization/virtualmachine.html:52
-msgid "Primary IPv4"
-msgstr "Primární IPv4"
-
-#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206
-#: netbox/templates/dcim/virtualdevicecontext.html:41
-#: netbox/templates/virtualization/virtualmachine.html:68
-msgid "Primary IPv6"
-msgstr "Primární IPv6"
-
 #: netbox/dcim/forms/object_create.py:48
 #: netbox/dcim/forms/object_create.py:199
 #: netbox/dcim/forms/object_create.py:355
@@ -5039,7 +5054,7 @@ msgstr ""
 "Počet předních portů, které mají být vytvořeny ({frontport_count}), musí "
 "odpovídat zvolenému počtu pozic zadních portů ({rearport_count})."
 
-#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029
+#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1030
 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53
 #: netbox/templates/dcim/virtualchassis_edit.html:47
 #: netbox/templates/ipam/fhrpgroup.html:38
@@ -6615,7 +6630,7 @@ msgstr "Konfigurační šablona"
 msgid "Site Group"
 msgstr "Skupina stránek"
 
-#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064
+#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1065
 #: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306
 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356
 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446
@@ -6624,12 +6639,12 @@ msgstr "Skupina stránek"
 msgid "IP Address"
 msgstr "IP adresa"
 
-#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068
+#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1069
 #: netbox/virtualization/tables/virtualmachines.py:86
 msgid "IPv4 Address"
 msgstr "IPv4 Adresa"
 
-#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072
+#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1073
 #: netbox/virtualization/tables/virtualmachines.py:90
 msgid "IPv6 Address"
 msgstr "Adresa IPv6"
@@ -6667,7 +6682,7 @@ msgstr "Napájecí porty"
 msgid "Power outlets"
 msgstr "Elektrické zásuvky"
 
-#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077
+#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1078
 #: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042
 #: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977
 #: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250
@@ -6774,28 +6789,28 @@ msgstr "Pouze správa"
 msgid "VDCs"
 msgstr "VDC"
 
-#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53
+#: netbox/dcim/tables/devices.py:870 netbox/templates/dcim/modulebay.html:53
 msgid "Installed Module"
 msgstr "Instalovaný modul"
 
-#: netbox/dcim/tables/devices.py:872
+#: netbox/dcim/tables/devices.py:873
 msgid "Module Serial"
 msgstr "Sériový modul"
 
-#: netbox/dcim/tables/devices.py:876
+#: netbox/dcim/tables/devices.py:877
 msgid "Module Asset Tag"
 msgstr "Štítek aktiv modulu"
 
-#: netbox/dcim/tables/devices.py:885
+#: netbox/dcim/tables/devices.py:886
 msgid "Module Status"
 msgstr "Stav modulu"
 
-#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313
+#: netbox/dcim/tables/devices.py:941 netbox/dcim/tables/devicetypes.py:313
 #: netbox/templates/dcim/inventoryitem.html:40
 msgid "Component"
 msgstr "Komponenta"
 
-#: netbox/dcim/tables/devices.py:996
+#: netbox/dcim/tables/devices.py:997
 msgid "Items"
 msgstr "Položky"
 
@@ -10362,7 +10377,7 @@ msgstr "Rozsahy musí být specifikovány ve formuláři (dolní, horní)."
 msgid "Range boundaries must be defined as integers."
 msgstr "Hranice rozsahu musí být definovány jako celá čísla."
 
-#: 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 "{class_name} musí implementovat get_view_name ()"
@@ -10712,32 +10727,32 @@ msgstr "Vlastní pole '{name}Musí mít jedinečnou hodnotu."
 msgid "Missing required custom field '{name}'."
 msgstr "Chybí povinné vlastní pole '{name}„."
 
-#: netbox/netbox/models/features.py:467
+#: netbox/netbox/models/features.py:462
 msgid "Remote data source"
 msgstr "Vzdálený zdroj dat"
 
-#: netbox/netbox/models/features.py:477
+#: netbox/netbox/models/features.py:472
 msgid "data path"
 msgstr "datová cesta"
 
-#: netbox/netbox/models/features.py:481
+#: netbox/netbox/models/features.py:476
 msgid "Path to remote file (relative to data source root)"
 msgstr "Cesta ke vzdálenému souboru (vzhledem k kořenovému zdroji dat)"
 
-#: netbox/netbox/models/features.py:484
+#: netbox/netbox/models/features.py:479
 msgid "auto sync enabled"
 msgstr "automatická synchronizace povolena"
 
-#: netbox/netbox/models/features.py:486
+#: netbox/netbox/models/features.py:481
 msgid "Enable automatic synchronization of data when the data file is updated"
 msgstr ""
 "Povolit automatickou synchronizaci dat při aktualizaci datového souboru"
 
-#: netbox/netbox/models/features.py:489
+#: netbox/netbox/models/features.py:484
 msgid "date synced"
 msgstr "datum synchronizováno"
 
-#: netbox/netbox/models/features.py:583
+#: netbox/netbox/models/features.py:578
 #, python-brace-format
 msgid "{class_name} must implement a sync_data() method."
 msgstr "{class_name} musí implementovat metodu sync_data ()."
@@ -12472,7 +12487,7 @@ msgid "Parent Bay"
 msgstr "Mateřská zátoka"
 
 #: netbox/templates/dcim/device_edit.html:48
-#: netbox/utilities/templates/form_helpers/render_field.html:20
+#: netbox/utilities/templates/form_helpers/render_field.html:22
 msgid "Regenerate Slug"
 msgstr "Regenerujte slimáka"
 
@@ -12817,17 +12832,17 @@ msgstr "Maximální hmotnost"
 msgid "Total Weight"
 msgstr "Celková hmotnost"
 
-#: netbox/templates/dcim/rack.html:121
+#: netbox/templates/dcim/rack.html:125
 #: netbox/templates/dcim/rack_elevation_list.html:15
 msgid "Images and Labels"
 msgstr "Obrázky a štítky"
 
-#: netbox/templates/dcim/rack.html:122
+#: netbox/templates/dcim/rack.html:126
 #: netbox/templates/dcim/rack_elevation_list.html:16
 msgid "Images only"
 msgstr "Pouze obrázky"
 
-#: netbox/templates/dcim/rack.html:123
+#: netbox/templates/dcim/rack.html:127
 #: netbox/templates/dcim/rack_elevation_list.html:17
 msgid "Labels only"
 msgstr "Pouze štítky"
@@ -15099,15 +15114,15 @@ msgstr "Odhlásit"
 msgid "Subscribe"
 msgstr "Přihlásit"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:39
+#: netbox/utilities/templates/form_helpers/render_field.html:41
 msgid "Copy to clipboard"
 msgstr "Kopírovat do schránky"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:55
+#: netbox/utilities/templates/form_helpers/render_field.html:57
 msgid "This field is required"
 msgstr "Toto pole je povinné"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:68
+#: netbox/utilities/templates/form_helpers/render_field.html:70
 msgid "Set Null"
 msgstr "Nastavit Null"
 

BIN
netbox/translations/da/LC_MESSAGES/django.mo


Разница между файлами не показана из-за своего большого размера
+ 176 - 161
netbox/translations/da/LC_MESSAGES/django.po


BIN
netbox/translations/de/LC_MESSAGES/django.mo


Разница между файлами не показана из-за своего большого размера
+ 182 - 168
netbox/translations/de/LC_MESSAGES/django.po


+ 182 - 167
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-25 05:02+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\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:1522
+#: netbox/dcim/choices.py:1598 netbox/dcim/choices.py:1648
 #: 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:1597 netbox/dcim/choices.py:1647
 #: 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:1596
+#: netbox/dcim/choices.py:1649 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:1609
 #: netbox/tenancy/choices.py:17
 msgid "Primary"
 msgstr ""
@@ -327,7 +327,7 @@ msgstr ""
 #: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391
 #: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498
 #: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703
-#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277
+#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:280
 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167
 #: netbox/templates/htmx/object_selector.html:28
 #: netbox/templates/inc/filter_list.html:45
@@ -559,8 +559,8 @@ msgstr ""
 #: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200
 #: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064
 #: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479
-#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757
-#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250
+#: netbox/dcim/tables/devices.py:701 netbox/dcim/tables/devices.py:758
+#: netbox/dcim/tables/devices.py:1000 netbox/dcim/tables/devicetypes.py:250
 #: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33
 #: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443
 #: netbox/templates/circuits/circuittype.html:30
@@ -595,7 +595,7 @@ msgstr ""
 #: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709
 #: 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
-#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77
+#: netbox/dcim/tables/devices.py:811 netbox/dcim/tables/power.py:77
 #: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42
 #: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465
 #: netbox/netbox/tables/tables.py:240 netbox/templates/circuits/circuit.html:30
@@ -650,8 +650,8 @@ msgstr ""
 #: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799
 #: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958
 #: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170
-#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813
-#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69
+#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:814
+#: netbox/dcim/tables/devices.py:1060 netbox/dcim/tables/modules.py:69
 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126
 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138
 #: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305
@@ -798,7 +798,7 @@ msgstr ""
 #: netbox/circuits/forms/model_forms.py:183
 #: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181
 #: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323
-#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691
+#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1692
 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81
 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136
 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232
@@ -1371,11 +1371,11 @@ msgstr ""
 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289
 #: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433
 #: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531
-#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727
-#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837
-#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970
-#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019
-#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32
+#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:728
+#: netbox/dcim/tables/devices.py:775 netbox/dcim/tables/devices.py:838
+#: netbox/dcim/tables/devices.py:908 netbox/dcim/tables/devices.py:971
+#: netbox/dcim/tables/devices.py:991 netbox/dcim/tables/devices.py:1020
+#: netbox/dcim/tables/devices.py:1050 netbox/dcim/tables/devicetypes.py:32
 #: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62
 #: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113
 #: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51
@@ -1508,7 +1508,7 @@ msgstr ""
 
 #: netbox/circuits/tables/circuits.py:80 netbox/circuits/tables/providers.py:48
 #: netbox/circuits/tables/providers.py:82
-#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032
+#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1033
 #: 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:84
@@ -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:1599 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:1510
 #: 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:1523
 #: 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:1545
 msgid "Inches"
 msgstr ""
 
@@ -2563,9 +2563,9 @@ msgstr ""
 #: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234
 #: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93
 #: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062
-#: netbox/dcim/forms/model_forms.py:1501 netbox/dcim/forms/object_import.py:176
-#: netbox/dcim/tables/devices.py:653 netbox/dcim/tables/devices.py:865
-#: netbox/dcim/tables/devices.py:950 netbox/extras/tables/tables.py:223
+#: netbox/dcim/forms/model_forms.py:1502 netbox/dcim/forms/object_import.py:176
+#: netbox/dcim/tables/devices.py:653 netbox/dcim/tables/devices.py:866
+#: netbox/dcim/tables/devices.py:951 netbox/extras/tables/tables.py:223
 #: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378
 #: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102
 #: netbox/templates/dcim/interface.html:309
@@ -2594,15 +2594,15 @@ msgstr ""
 msgid "Child"
 msgstr ""
 
-#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339
-#: netbox/templates/dcim/rack.html:129
+#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:340
+#: netbox/templates/dcim/rack.html:133
 #: netbox/templates/dcim/rack_elevation_list.html:20
 #: netbox/templates/dcim/rackreservation.html:76
 msgid "Front"
 msgstr ""
 
-#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345
-#: netbox/templates/dcim/rack.html:135
+#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:346
+#: netbox/templates/dcim/rack.html:139
 #: netbox/templates/dcim/rack_elevation_list.html:21
 #: netbox/templates/dcim/rackreservation.html:82
 msgid "Rear"
@@ -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:1295
 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,42 +2654,42 @@ 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:1211 netbox/dcim/choices.py:1213
+#: netbox/dcim/choices.py:1439 netbox/dcim/choices.py:1441
 #: 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:1016
 msgid "Virtual"
 msgstr ""
 
-#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086
+#: netbox/dcim/choices.py:850 netbox/dcim/choices.py:1089
 #: 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/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1397
 #: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144
 #: netbox/templates/dcim/interface.html:210
 msgid "Wireless"
 msgstr ""
 
-#: netbox/dcim/choices.py:1011
+#: netbox/dcim/choices.py:1014
 msgid "Virtual interfaces"
 msgstr ""
 
-#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410
+#: netbox/dcim/choices.py:1017 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:1018
 msgid "Link Aggregation Group (LAG)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1019
+#: netbox/dcim/choices.py:1022
 msgid "Ethernet (fixed)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1034
+#: netbox/dcim/choices.py:1037
 msgid "Ethernet (modular)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1070
+#: netbox/dcim/choices.py:1073
 msgid "Ethernet (backplane)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1101
+#: netbox/dcim/choices.py:1105
 msgid "Cellular"
 msgstr ""
 
-#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383
+#: netbox/dcim/choices.py:1157 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,130 @@ msgstr ""
 msgid "Serial"
 msgstr ""
 
-#: netbox/dcim/choices.py:1168
+#: netbox/dcim/choices.py:1172
 msgid "Coaxial"
 msgstr ""
 
-#: netbox/dcim/choices.py:1188
+#: netbox/dcim/choices.py:1192
 msgid "Stacking"
 msgstr ""
 
-#: netbox/dcim/choices.py:1238
+#: netbox/dcim/choices.py:1242
 msgid "Half"
 msgstr ""
 
-#: netbox/dcim/choices.py:1239
+#: netbox/dcim/choices.py:1243
 msgid "Full"
 msgstr ""
 
-#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31
+#: netbox/dcim/choices.py:1244 netbox/netbox/preferences.py:31
 #: netbox/wireless/choices.py:480
 msgid "Auto"
 msgstr ""
 
-#: netbox/dcim/choices.py:1251
+#: netbox/dcim/choices.py:1255
 msgid "Access"
 msgstr ""
 
-#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172
+#: netbox/dcim/choices.py:1256 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:1257
 msgid "Tagged (All)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1282
+#: netbox/dcim/choices.py:1286
 msgid "IEEE Standard"
 msgstr ""
 
-#: netbox/dcim/choices.py:1293
+#: netbox/dcim/choices.py:1297
 msgid "Passive 24V (2-pair)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1294
+#: netbox/dcim/choices.py:1298
 msgid "Passive 24V (4-pair)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1295
+#: netbox/dcim/choices.py:1299
 msgid "Passive 48V (2-pair)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1296
+#: netbox/dcim/choices.py:1300
 msgid "Passive 48V (4-pair)"
 msgstr ""
 
-#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476
+#: netbox/dcim/choices.py:1370 netbox/dcim/choices.py:1480
 msgid "Copper"
 msgstr ""
 
-#: netbox/dcim/choices.py:1389
+#: netbox/dcim/choices.py:1393
 msgid "Fiber Optic"
 msgstr ""
 
-#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505
+#: netbox/dcim/choices.py:1426 netbox/dcim/choices.py:1509
 msgid "USB"
 msgstr ""
 
-#: netbox/dcim/choices.py:1492
+#: netbox/dcim/choices.py:1496
 msgid "Fiber"
 msgstr ""
 
-#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227
+#: netbox/dcim/choices.py:1521 netbox/dcim/forms/filtersets.py:1227
 msgid "Connected"
 msgstr ""
 
-#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497
+#: netbox/dcim/choices.py:1540 netbox/wireless/choices.py:497
 msgid "Kilometers"
 msgstr ""
 
-#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65
+#: netbox/dcim/choices.py:1541 netbox/templates/dcim/cable_trace.html:65
 #: netbox/wireless/choices.py:498
 msgid "Meters"
 msgstr ""
 
-#: netbox/dcim/choices.py:1538
+#: netbox/dcim/choices.py:1542
 msgid "Centimeters"
 msgstr ""
 
-#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499
+#: netbox/dcim/choices.py:1543 netbox/wireless/choices.py:499
 msgid "Miles"
 msgstr ""
 
-#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66
+#: netbox/dcim/choices.py:1544 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/templates/dcim/rack.html:106
+#: netbox/dcim/choices.py:1560 netbox/templates/dcim/device.html:327
+#: netbox/templates/dcim/rack.html:107
 msgid "Kilograms"
 msgstr ""
 
-#: netbox/dcim/choices.py:1557
+#: netbox/dcim/choices.py:1561
 msgid "Grams"
 msgstr ""
 
-#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107
+#: netbox/dcim/choices.py:1562 netbox/templates/dcim/device.html:328
+#: netbox/templates/dcim/rack.html:108
 msgid "Pounds"
 msgstr ""
 
-#: netbox/dcim/choices.py:1559
+#: netbox/dcim/choices.py:1563
 msgid "Ounces"
 msgstr ""
 
-#: netbox/dcim/choices.py:1606
+#: netbox/dcim/choices.py:1610
 msgid "Redundant"
 msgstr ""
 
-#: netbox/dcim/choices.py:1627
+#: netbox/dcim/choices.py:1631
 msgid "Single phase"
 msgstr ""
 
-#: netbox/dcim/choices.py:1628
+#: netbox/dcim/choices.py:1632
 msgid "Three-phase"
 msgstr ""
 
@@ -3219,7 +3220,7 @@ msgstr ""
 
 #: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489
 #: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428
-#: netbox/dcim/forms/model_forms.py:1377
+#: netbox/dcim/forms/model_forms.py:1378
 #: netbox/dcim/models/device_components.py:712
 #: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316
 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483
@@ -3298,7 +3299,7 @@ msgid "LAG interface (ID)"
 msgstr ""
 
 #: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725
-#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689
+#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1690
 #: netbox/templates/dcim/virtualdevicecontext.html:15
 msgid "Virtual Device Context"
 msgstr ""
@@ -3372,7 +3373,7 @@ msgstr ""
 #: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546
 #: netbox/dcim/forms/object_create.py:197
 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165
-#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247
+#: netbox/dcim/tables/devices.py:704 netbox/dcim/tables/devicetypes.py:247
 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131
 #: netbox/templates/dcim/modulebay.html:38
 #: netbox/templates/dcim/virtualchassis.html:66
@@ -3417,9 +3418,9 @@ msgstr ""
 #: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337
 #: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395
 #: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075
-#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:187
+#: netbox/dcim/forms/model_forms.py:1515 netbox/dcim/forms/object_import.py:187
 #: netbox/dcim/tables/devices.py:96 netbox/dcim/tables/devices.py:172
-#: netbox/dcim/tables/devices.py:936 netbox/dcim/tables/devicetypes.py:81
+#: netbox/dcim/tables/devices.py:937 netbox/dcim/tables/devicetypes.py:81
 #: netbox/dcim/tables/devicetypes.py:309 netbox/dcim/tables/modules.py:20
 #: netbox/dcim/tables/modules.py:60 netbox/dcim/tables/racks.py:58
 #: netbox/dcim/tables/racks.py:132 netbox/templates/dcim/devicetype.html:14
@@ -3542,9 +3543,9 @@ msgstr ""
 #: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367
 #: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534
 #: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070
-#: netbox/dcim/forms/model_forms.py:1509 netbox/dcim/forms/object_import.py:181
-#: netbox/dcim/tables/devices.py:169 netbox/dcim/tables/devices.py:805
-#: netbox/dcim/tables/devices.py:933 netbox/dcim/tables/devicetypes.py:305
+#: netbox/dcim/forms/model_forms.py:1510 netbox/dcim/forms/object_import.py:181
+#: netbox/dcim/tables/devices.py:169 netbox/dcim/tables/devices.py:806
+#: netbox/dcim/tables/devices.py:934 netbox/dcim/tables/devicetypes.py:305
 #: netbox/dcim/tables/racks.py:129 netbox/extras/filtersets.py:552
 #: netbox/ipam/forms/bulk_edit.py:260 netbox/ipam/forms/bulk_edit.py:310
 #: netbox/ipam/forms/bulk_edit.py:358 netbox/ipam/forms/bulk_edit.py:556
@@ -3632,7 +3633,7 @@ msgstr ""
 #: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398
 #: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608
 #: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942
-#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579
+#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1580
 #: netbox/templates/dcim/device_edit.html:20
 msgid "Hardware"
 msgstr ""
@@ -3738,15 +3739,15 @@ msgstr ""
 #: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616
 #: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633
 #: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208
-#: netbox/dcim/forms/model_forms.py:1663 netbox/dcim/forms/object_create.py:257
+#: netbox/dcim/forms/model_forms.py:1664 netbox/dcim/forms/object_create.py:257
 #: netbox/dcim/tables/connections.py:22 netbox/dcim/tables/connections.py:41
 #: netbox/dcim/tables/connections.py:60 netbox/dcim/tables/devices.py:285
 #: netbox/dcim/tables/devices.py:371 netbox/dcim/tables/devices.py:412
 #: netbox/dcim/tables/devices.py:454 netbox/dcim/tables/devices.py:505
-#: netbox/dcim/tables/devices.py:594 netbox/dcim/tables/devices.py:693
-#: netbox/dcim/tables/devices.py:750 netbox/dcim/tables/devices.py:797
-#: netbox/dcim/tables/devices.py:857 netbox/dcim/tables/devices.py:926
-#: netbox/dcim/tables/devices.py:1053 netbox/dcim/tables/modules.py:52
+#: netbox/dcim/tables/devices.py:594 netbox/dcim/tables/devices.py:694
+#: netbox/dcim/tables/devices.py:751 netbox/dcim/tables/devices.py:798
+#: netbox/dcim/tables/devices.py:858 netbox/dcim/tables/devices.py:927
+#: netbox/dcim/tables/devices.py:1054 netbox/dcim/tables/modules.py:52
 #: netbox/extras/forms/filtersets.py:321 netbox/ipam/forms/bulk_import.py:304
 #: netbox/ipam/forms/bulk_import.py:481 netbox/ipam/forms/filtersets.py:551
 #: netbox/ipam/forms/model_forms.py:319 netbox/ipam/forms/model_forms.py:679
@@ -3886,7 +3887,7 @@ msgstr ""
 
 #: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786
 #: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278
-#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55
+#: netbox/dcim/forms/model_forms.py:1567 netbox/dcim/forms/object_import.py:55
 msgid "Power port"
 msgstr ""
 
@@ -3973,14 +3974,14 @@ msgstr ""
 msgid "VLAN group"
 msgstr ""
 
-#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359
+#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1360
 #: netbox/dcim/tables/devices.py:579
 #: netbox/virtualization/forms/bulk_edit.py:248
 #: netbox/virtualization/forms/model_forms.py:326
 msgid "Untagged VLAN"
 msgstr ""
 
-#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368
+#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1369
 #: netbox/dcim/tables/devices.py:585
 #: netbox/virtualization/forms/bulk_edit.py:256
 #: netbox/virtualization/forms/model_forms.py:335
@@ -3999,7 +4000,7 @@ msgid "Wireless LANs"
 msgstr ""
 
 #: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328
-#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285
+#: netbox/dcim/forms/model_forms.py:1390 netbox/ipam/forms/bulk_edit.py:285
 #: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169
 #: netbox/templates/dcim/interface.html:122
 #: netbox/templates/ipam/prefix.html:95
@@ -4008,24 +4009,24 @@ msgid "Addressing"
 msgstr ""
 
 #: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720
-#: netbox/dcim/forms/model_forms.py:1390
+#: netbox/dcim/forms/model_forms.py:1391
 #: netbox/virtualization/forms/model_forms.py:350
 msgid "Operation"
 msgstr ""
 
 #: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329
-#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392
+#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1393
 msgid "PoE"
 msgstr ""
 
-#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391
+#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1392
 #: netbox/templates/dcim/interface.html:99
 #: netbox/virtualization/forms/bulk_edit.py:267
 #: netbox/virtualization/forms/model_forms.py:351
 msgid "Related Interfaces"
 msgstr ""
 
-#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393
+#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1394
 #: netbox/virtualization/forms/bulk_edit.py:268
 #: netbox/virtualization/forms/model_forms.py:352
 msgid "802.1Q Switching"
@@ -4360,7 +4361,7 @@ msgid "VDC {vdc} is not assigned to device {device}"
 msgstr ""
 
 #: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000
-#: netbox/dcim/forms/model_forms.py:1574 netbox/dcim/forms/object_import.py:117
+#: netbox/dcim/forms/model_forms.py:1575 netbox/dcim/forms/object_import.py:117
 msgid "Rear port"
 msgstr ""
 
@@ -4373,7 +4374,7 @@ msgstr ""
 msgid "Physical medium classification"
 msgstr ""
 
-#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818
+#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:819
 msgid "Installed device"
 msgstr ""
 
@@ -4462,7 +4463,7 @@ msgid "{side_upper} side termination not found: {device} {name}"
 msgstr ""
 
 #: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785
-#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132
+#: netbox/dcim/tables/devices.py:1024 netbox/templates/dcim/device.html:132
 #: netbox/templates/dcim/virtualchassis.html:27
 #: netbox/templates/dcim/virtualchassis.html:67
 msgid "Master"
@@ -4492,6 +4493,28 @@ msgstr ""
 msgid "Single or three-phase"
 msgstr ""
 
+#: netbox/dcim/forms/bulk_import.py:1439 netbox/dcim/forms/model_forms.py:1670
+#: netbox/templates/dcim/device.html:190
+#: netbox/templates/dcim/virtualdevicecontext.html:30
+#: netbox/templates/virtualization/virtualmachine.html:52
+msgid "Primary IPv4"
+msgstr ""
+
+#: netbox/dcim/forms/bulk_import.py:1443
+msgid "IPv4 address with mask, e.g. 1.2.3.4/24"
+msgstr ""
+
+#: netbox/dcim/forms/bulk_import.py:1446 netbox/dcim/forms/model_forms.py:1679
+#: netbox/templates/dcim/device.html:206
+#: netbox/templates/dcim/virtualdevicecontext.html:41
+#: netbox/templates/virtualization/virtualmachine.html:68
+msgid "Primary IPv6"
+msgstr ""
+
+#: netbox/dcim/forms/bulk_import.py:1450
+msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64"
+msgstr ""
+
 #: netbox/dcim/forms/common.py:24 netbox/dcim/models/device_components.py:528
 #: netbox/templates/dcim/interface.html:57
 #: netbox/templates/virtualization/vminterface.html:55
@@ -4647,7 +4670,7 @@ msgstr ""
 msgid "Mgmt only"
 msgstr ""
 
-#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382
+#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1383
 #: netbox/dcim/models/device_components.py:630
 #: netbox/templates/dcim/interface.html:129
 msgid "WWN"
@@ -4680,7 +4703,7 @@ msgstr ""
 msgid "Cable"
 msgstr ""
 
-#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945
+#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:946
 msgid "Discovered"
 msgstr ""
 
@@ -4774,8 +4797,8 @@ msgstr ""
 msgid "Rear port template"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387
-#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582
+#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1388
+#: netbox/dcim/forms/model_forms.py:1551 netbox/dcim/forms/model_forms.py:1583
 #: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318
 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289
 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372
@@ -4798,7 +4821,7 @@ msgstr ""
 msgid "Interface"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583
+#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1584
 #: netbox/dcim/tables/connections.py:27
 #: netbox/templates/dcim/consoleport.html:17
 #: netbox/templates/dcim/consoleserverport.html:74
@@ -4806,14 +4829,14 @@ msgstr ""
 msgid "Console Port"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584
+#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1585
 #: netbox/templates/dcim/consoleport.html:73
 #: netbox/templates/dcim/consoleserverport.html:17
 #: netbox/templates/dcim/frontport.html:109
 msgid "Console Server Port"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585
+#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1586
 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52
 #: netbox/templates/dcim/consoleport.html:76
 #: netbox/templates/dcim/consoleserverport.html:77
@@ -4824,8 +4847,8 @@ msgstr ""
 msgid "Front Port"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586
-#: netbox/dcim/tables/devices.py:706
+#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1587
+#: netbox/dcim/tables/devices.py:707
 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53
 #: netbox/templates/dcim/consoleport.html:79
 #: netbox/templates/dcim/consoleserverport.html:80
@@ -4837,24 +4860,24 @@ msgstr ""
 msgid "Rear Port"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587
+#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1588
 #: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512
 #: netbox/templates/dcim/poweroutlet.html:44
 #: netbox/templates/dcim/powerport.html:17
 msgid "Power Port"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588
+#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1589
 #: netbox/templates/dcim/poweroutlet.html:17
 #: netbox/templates/dcim/powerport.html:77
 msgid "Power Outlet"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590
+#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1591
 msgid "Component Assignment"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637
+#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1638
 msgid "An InventoryItem can only be assigned to a single component."
 msgstr ""
 
@@ -4862,54 +4885,46 @@ msgstr ""
 msgid "LAG interface"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1483
-msgid "Child Device"
+#: netbox/dcim/forms/model_forms.py:1355
+msgid "Filter VLANs available for assignment by group."
 msgstr ""
 
 #: netbox/dcim/forms/model_forms.py:1484
+msgid "Child Device"
+msgstr ""
+
+#: netbox/dcim/forms/model_forms.py:1485
 msgid ""
 "Child devices must first be created and assigned to the site and rack of the "
 "parent device."
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1526
+#: netbox/dcim/forms/model_forms.py:1527
 msgid "Console port"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1534
+#: netbox/dcim/forms/model_forms.py:1535
 msgid "Console server port"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1542
+#: netbox/dcim/forms/model_forms.py:1543
 msgid "Front port"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1558
+#: netbox/dcim/forms/model_forms.py:1559
 msgid "Power outlet"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1578
+#: netbox/dcim/forms/model_forms.py:1579
 #: netbox/templates/dcim/inventoryitem.html:17
 msgid "Inventory Item"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1651
+#: netbox/dcim/forms/model_forms.py:1652
 #: netbox/templates/dcim/inventoryitemrole.html:15
 msgid "Inventory Item Role"
 msgstr ""
 
-#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190
-#: netbox/templates/dcim/virtualdevicecontext.html:30
-#: netbox/templates/virtualization/virtualmachine.html:52
-msgid "Primary IPv4"
-msgstr ""
-
-#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206
-#: netbox/templates/dcim/virtualdevicecontext.html:41
-#: netbox/templates/virtualization/virtualmachine.html:68
-msgid "Primary IPv6"
-msgstr ""
-
 #: netbox/dcim/forms/object_create.py:48 netbox/dcim/forms/object_create.py:199
 #: netbox/dcim/forms/object_create.py:355
 msgid ""
@@ -4955,7 +4970,7 @@ msgid ""
 "selected number of rear port positions ({rearport_count})."
 msgstr ""
 
-#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029
+#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1030
 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53
 #: netbox/templates/dcim/virtualchassis_edit.html:47
 #: netbox/templates/ipam/fhrpgroup.html:38
@@ -6466,7 +6481,7 @@ msgstr ""
 msgid "Site Group"
 msgstr ""
 
-#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064
+#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1065
 #: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306
 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356
 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446
@@ -6475,12 +6490,12 @@ msgstr ""
 msgid "IP Address"
 msgstr ""
 
-#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068
+#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1069
 #: netbox/virtualization/tables/virtualmachines.py:86
 msgid "IPv4 Address"
 msgstr ""
 
-#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072
+#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1073
 #: netbox/virtualization/tables/virtualmachines.py:90
 msgid "IPv6 Address"
 msgstr ""
@@ -6518,7 +6533,7 @@ msgstr ""
 msgid "Power outlets"
 msgstr ""
 
-#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077
+#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1078
 #: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042
 #: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977
 #: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250
@@ -6625,28 +6640,28 @@ msgstr ""
 msgid "VDCs"
 msgstr ""
 
-#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53
+#: netbox/dcim/tables/devices.py:870 netbox/templates/dcim/modulebay.html:53
 msgid "Installed Module"
 msgstr ""
 
-#: netbox/dcim/tables/devices.py:872
+#: netbox/dcim/tables/devices.py:873
 msgid "Module Serial"
 msgstr ""
 
-#: netbox/dcim/tables/devices.py:876
+#: netbox/dcim/tables/devices.py:877
 msgid "Module Asset Tag"
 msgstr ""
 
-#: netbox/dcim/tables/devices.py:885
+#: netbox/dcim/tables/devices.py:886
 msgid "Module Status"
 msgstr ""
 
-#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313
+#: netbox/dcim/tables/devices.py:941 netbox/dcim/tables/devicetypes.py:313
 #: netbox/templates/dcim/inventoryitem.html:40
 msgid "Component"
 msgstr ""
 
-#: netbox/dcim/tables/devices.py:996
+#: netbox/dcim/tables/devices.py:997
 msgid "Items"
 msgstr ""
 
@@ -10097,7 +10112,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 ""
@@ -10444,31 +10459,31 @@ msgstr ""
 msgid "Missing required custom field '{name}'."
 msgstr ""
 
-#: netbox/netbox/models/features.py:467
+#: netbox/netbox/models/features.py:462
 msgid "Remote data source"
 msgstr ""
 
-#: netbox/netbox/models/features.py:477
+#: netbox/netbox/models/features.py:472
 msgid "data path"
 msgstr ""
 
-#: netbox/netbox/models/features.py:481
+#: netbox/netbox/models/features.py:476
 msgid "Path to remote file (relative to data source root)"
 msgstr ""
 
-#: netbox/netbox/models/features.py:484
+#: netbox/netbox/models/features.py:479
 msgid "auto sync enabled"
 msgstr ""
 
-#: netbox/netbox/models/features.py:486
+#: netbox/netbox/models/features.py:481
 msgid "Enable automatic synchronization of data when the data file is updated"
 msgstr ""
 
-#: netbox/netbox/models/features.py:489
+#: netbox/netbox/models/features.py:484
 msgid "date synced"
 msgstr ""
 
-#: netbox/netbox/models/features.py:583
+#: netbox/netbox/models/features.py:578
 #, python-brace-format
 msgid "{class_name} must implement a sync_data() method."
 msgstr ""
@@ -12187,7 +12202,7 @@ msgid "Parent Bay"
 msgstr ""
 
 #: netbox/templates/dcim/device_edit.html:48
-#: netbox/utilities/templates/form_helpers/render_field.html:20
+#: netbox/utilities/templates/form_helpers/render_field.html:22
 msgid "Regenerate Slug"
 msgstr ""
 
@@ -12529,17 +12544,17 @@ msgstr ""
 msgid "Total Weight"
 msgstr ""
 
-#: netbox/templates/dcim/rack.html:121
+#: netbox/templates/dcim/rack.html:125
 #: netbox/templates/dcim/rack_elevation_list.html:15
 msgid "Images and Labels"
 msgstr ""
 
-#: netbox/templates/dcim/rack.html:122
+#: netbox/templates/dcim/rack.html:126
 #: netbox/templates/dcim/rack_elevation_list.html:16
 msgid "Images only"
 msgstr ""
 
-#: netbox/templates/dcim/rack.html:123
+#: netbox/templates/dcim/rack.html:127
 #: netbox/templates/dcim/rack_elevation_list.html:17
 msgid "Labels only"
 msgstr ""
@@ -14695,15 +14710,15 @@ msgstr ""
 msgid "Subscribe"
 msgstr ""
 
-#: netbox/utilities/templates/form_helpers/render_field.html:39
+#: netbox/utilities/templates/form_helpers/render_field.html:41
 msgid "Copy to clipboard"
 msgstr ""
 
-#: netbox/utilities/templates/form_helpers/render_field.html:55
+#: netbox/utilities/templates/form_helpers/render_field.html:57
 msgid "This field is required"
 msgstr ""
 
-#: netbox/utilities/templates/form_helpers/render_field.html:68
+#: netbox/utilities/templates/form_helpers/render_field.html:70
 msgid "Set Null"
 msgstr ""
 

BIN
netbox/translations/es/LC_MESSAGES/django.mo


+ 179 - 164
netbox/translations/es/LC_MESSAGES/django.po

@@ -11,7 +11,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-25 05:02+0000\n"
 "PO-Revision-Date: 2023-10-30 17:48+0000\n"
 "Last-Translator: Jeremy Stretch, 2024\n"
 "Language-Team: Spanish (https://app.transifex.com/netbox-community/teams/178115/es/)\n"
@@ -88,8 +88,8 @@ msgstr "La contraseña se ha cambiado correctamente."
 
 #: 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:1522
+#: netbox/dcim/choices.py:1598 netbox/dcim/choices.py:1648
 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45
 #: netbox/vpn/choices.py:18
 msgid "Planned"
@@ -102,7 +102,7 @@ msgstr "Aprovisionamiento"
 #: 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:1597 netbox/dcim/choices.py:1647
 #: 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
@@ -113,8 +113,8 @@ msgid "Active"
 msgstr "Activo"
 
 #: 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:1596
+#: netbox/dcim/choices.py:1649 netbox/virtualization/choices.py:24
 #: netbox/virtualization/choices.py:43
 msgid "Offline"
 msgstr "Desconectado"
@@ -127,7 +127,7 @@ msgstr "Desaprovisionamiento"
 msgid "Decommissioned"
 msgstr "Desmantelado"
 
-#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605
+#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1609
 #: netbox/tenancy/choices.py:17
 msgid "Primary"
 msgstr "Primaria"
@@ -333,7 +333,7 @@ msgstr "Terminación A (ID)"
 #: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391
 #: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498
 #: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703
-#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277
+#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:280
 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167
 #: netbox/templates/htmx/object_selector.html:28
 #: netbox/templates/inc/filter_list.html:45
@@ -571,8 +571,8 @@ msgstr "ID de servicio"
 #: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200
 #: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064
 #: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479
-#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757
-#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250
+#: netbox/dcim/tables/devices.py:701 netbox/dcim/tables/devices.py:758
+#: netbox/dcim/tables/devices.py:1000 netbox/dcim/tables/devicetypes.py:250
 #: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33
 #: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443
 #: netbox/templates/circuits/circuittype.html:30
@@ -609,7 +609,7 @@ msgstr "Color"
 #: 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
-#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77
+#: netbox/dcim/tables/devices.py:811 netbox/dcim/tables/power.py:77
 #: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42
 #: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465
 #: netbox/netbox/tables/tables.py:240
@@ -666,8 +666,8 @@ msgstr "Cuenta de proveedor"
 #: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799
 #: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958
 #: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170
-#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813
-#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69
+#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:814
+#: netbox/dcim/tables/devices.py:1060 netbox/dcim/tables/modules.py:69
 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126
 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138
 #: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305
@@ -816,7 +816,7 @@ msgstr "Parámetros de servicio"
 #: netbox/circuits/forms/model_forms.py:183
 #: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181
 #: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323
-#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691
+#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1692
 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81
 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136
 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232
@@ -1399,11 +1399,11 @@ msgstr "redes de proveedores"
 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289
 #: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433
 #: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531
-#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727
-#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837
-#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970
-#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019
-#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32
+#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:728
+#: netbox/dcim/tables/devices.py:775 netbox/dcim/tables/devices.py:838
+#: netbox/dcim/tables/devices.py:908 netbox/dcim/tables/devices.py:971
+#: netbox/dcim/tables/devices.py:991 netbox/dcim/tables/devices.py:1020
+#: netbox/dcim/tables/devices.py:1050 netbox/dcim/tables/devicetypes.py:32
 #: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62
 #: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113
 #: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51
@@ -1541,7 +1541,7 @@ msgstr "Tasa de compromiso"
 #: netbox/circuits/tables/circuits.py:80
 #: netbox/circuits/tables/providers.py:48
 #: netbox/circuits/tables/providers.py:82
-#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032
+#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1033
 #: 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:84
@@ -1620,7 +1620,7 @@ msgstr "Completado"
 #: 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:1599 netbox/virtualization/choices.py:47
 msgid "Failed"
 msgstr "Falló"
 
@@ -1946,7 +1946,7 @@ msgstr ""
 msgid "Rack Elevations"
 msgstr "Elevaciones de estanterías"
 
-#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506
+#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1510
 #: 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
@@ -2526,7 +2526,7 @@ msgid "Staging"
 msgstr "Puesta en escena"
 
 #: 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:1523
 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48
 msgid "Decommissioning"
 msgstr "Desmantelamiento"
@@ -2590,7 +2590,7 @@ msgstr "Obsoleto"
 msgid "Millimeters"
 msgstr "Milímetros"
 
-#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541
+#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1545
 msgid "Inches"
 msgstr "Pulgadas"
 
@@ -2612,9 +2612,9 @@ msgstr "De atrás hacia adelante"
 #: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234
 #: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93
 #: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062
-#: netbox/dcim/forms/model_forms.py:1501
+#: netbox/dcim/forms/model_forms.py:1502
 #: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653
-#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950
+#: netbox/dcim/tables/devices.py:866 netbox/dcim/tables/devices.py:951
 #: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59
 #: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44
 #: netbox/templates/dcim/interface.html:102
@@ -2644,15 +2644,15 @@ msgstr "Padre"
 msgid "Child"
 msgstr "Niño"
 
-#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339
-#: netbox/templates/dcim/rack.html:129
+#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:340
+#: netbox/templates/dcim/rack.html:133
 #: netbox/templates/dcim/rack_elevation_list.html:20
 #: netbox/templates/dcim/rackreservation.html:76
 msgid "Front"
 msgstr "Delantera"
 
-#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345
-#: netbox/templates/dcim/rack.html:135
+#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:346
+#: netbox/templates/dcim/rack.html:139
 #: netbox/templates/dcim/rack_elevation_list.html:21
 #: netbox/templates/dcim/rackreservation.html:82
 msgid "Rear"
@@ -2680,7 +2680,7 @@ msgid "Side to rear"
 msgstr "De lado a atrás"
 
 #: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253
-#: netbox/dcim/choices.py:1291
+#: netbox/dcim/choices.py:1295
 msgid "Passive"
 msgstr "Pasivo"
 
@@ -2688,15 +2688,15 @@ msgstr "Pasivo"
 msgid "Mixed"
 msgstr "Mezclado"
 
-#: 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 "NEMA (sin bloqueo)"
 
-#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748
+#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:749
 msgid "NEMA (Locking)"
 msgstr "NEMA (Bloqueo)"
 
-#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772
+#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:773
 msgid "California Style"
 msgstr "Estilo californiano"
 
@@ -2704,42 +2704,42 @@ msgstr "Estilo californiano"
 msgid "International/ITA"
 msgstr "Internacional/ITA"
 
-#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807
+#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:808
 msgid "Proprietary"
 msgstr "Proprietario"
 
-#: 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:1211 netbox/dcim/choices.py:1213
+#: netbox/dcim/choices.py:1439 netbox/dcim/choices.py:1441
 #: netbox/netbox/navigation/menu.py:200
 msgid "Other"
 msgstr "Otros"
 
-#: netbox/dcim/choices.py:780
+#: netbox/dcim/choices.py:781
 msgid "ITA/International"
 msgstr "ITA/Internacional"
 
-#: netbox/dcim/choices.py:846
+#: netbox/dcim/choices.py:848
 msgid "Physical"
 msgstr "Físico"
 
-#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013
+#: netbox/dcim/choices.py:849 netbox/dcim/choices.py:1016
 msgid "Virtual"
 msgstr "Virtual"
 
-#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086
+#: netbox/dcim/choices.py:850 netbox/dcim/choices.py:1089
 #: 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/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1397
 #: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144
 #: netbox/templates/dcim/interface.html:210
 msgid "Wireless"
 msgstr "inalámbrico"
 
-#: netbox/dcim/choices.py:1011
+#: netbox/dcim/choices.py:1014
 msgid "Virtual interfaces"
 msgstr "Interfaces virtuales"
 
-#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410
+#: netbox/dcim/choices.py:1017 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
@@ -2749,27 +2749,27 @@ msgstr "Interfaces virtuales"
 msgid "Bridge"
 msgstr "puente"
 
-#: netbox/dcim/choices.py:1015
+#: netbox/dcim/choices.py:1018
 msgid "Link Aggregation Group (LAG)"
 msgstr "Grupo de agregación de enlaces (LAG)"
 
-#: netbox/dcim/choices.py:1019
+#: netbox/dcim/choices.py:1022
 msgid "Ethernet (fixed)"
 msgstr "Ethernet (fijo)"
 
-#: netbox/dcim/choices.py:1034
+#: netbox/dcim/choices.py:1037
 msgid "Ethernet (modular)"
 msgstr "Ethernet (modular)"
 
-#: netbox/dcim/choices.py:1070
+#: netbox/dcim/choices.py:1073
 msgid "Ethernet (backplane)"
 msgstr "Ethernet (placa base)"
 
-#: netbox/dcim/choices.py:1101
+#: netbox/dcim/choices.py:1105
 msgid "Cellular"
 msgstr "Celular"
 
-#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383
+#: netbox/dcim/choices.py:1157 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
@@ -2777,129 +2777,130 @@ msgstr "Celular"
 msgid "Serial"
 msgstr "serie"
 
-#: netbox/dcim/choices.py:1168
+#: netbox/dcim/choices.py:1172
 msgid "Coaxial"
 msgstr "Coaxial"
 
-#: netbox/dcim/choices.py:1188
+#: netbox/dcim/choices.py:1192
 msgid "Stacking"
 msgstr "Apilamiento"
 
-#: netbox/dcim/choices.py:1238
+#: netbox/dcim/choices.py:1242
 msgid "Half"
 msgstr "Mitad"
 
-#: netbox/dcim/choices.py:1239
+#: netbox/dcim/choices.py:1243
 msgid "Full"
 msgstr "Lleno"
 
-#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31
+#: netbox/dcim/choices.py:1244 netbox/netbox/preferences.py:31
 #: netbox/wireless/choices.py:480
 msgid "Auto"
 msgstr "Auto"
 
-#: netbox/dcim/choices.py:1251
+#: netbox/dcim/choices.py:1255
 msgid "Access"
 msgstr "Acceso"
 
-#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172
+#: netbox/dcim/choices.py:1256 netbox/ipam/tables/vlans.py:172
 #: netbox/ipam/tables/vlans.py:217
 #: netbox/templates/dcim/inc/interface_vlans_table.html:7
 msgid "Tagged"
 msgstr "Etiquetado"
 
-#: netbox/dcim/choices.py:1253
+#: netbox/dcim/choices.py:1257
 msgid "Tagged (All)"
 msgstr "Etiquetado (Todos)"
 
-#: netbox/dcim/choices.py:1282
+#: netbox/dcim/choices.py:1286
 msgid "IEEE Standard"
 msgstr "Estándar IEEE"
 
-#: netbox/dcim/choices.py:1293
+#: netbox/dcim/choices.py:1297
 msgid "Passive 24V (2-pair)"
 msgstr "Pasivo 24 V (2 pares)"
 
-#: netbox/dcim/choices.py:1294
+#: netbox/dcim/choices.py:1298
 msgid "Passive 24V (4-pair)"
 msgstr "Pasivo de 24 V (4 pares)"
 
-#: netbox/dcim/choices.py:1295
+#: netbox/dcim/choices.py:1299
 msgid "Passive 48V (2-pair)"
 msgstr "Pasivo 48 V (2 pares)"
 
-#: netbox/dcim/choices.py:1296
+#: netbox/dcim/choices.py:1300
 msgid "Passive 48V (4-pair)"
 msgstr "Pasivo de 48 V (4 pares)"
 
-#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476
+#: netbox/dcim/choices.py:1370 netbox/dcim/choices.py:1480
 msgid "Copper"
 msgstr "Cobre"
 
-#: netbox/dcim/choices.py:1389
+#: netbox/dcim/choices.py:1393
 msgid "Fiber Optic"
 msgstr "Fibra óptica"
 
-#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505
+#: netbox/dcim/choices.py:1426 netbox/dcim/choices.py:1509
 msgid "USB"
 msgstr "USB"
 
-#: netbox/dcim/choices.py:1492
+#: netbox/dcim/choices.py:1496
 msgid "Fiber"
 msgstr "Fibra"
 
-#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227
+#: netbox/dcim/choices.py:1521 netbox/dcim/forms/filtersets.py:1227
 msgid "Connected"
 msgstr "Conectado"
 
-#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497
+#: netbox/dcim/choices.py:1540 netbox/wireless/choices.py:497
 msgid "Kilometers"
 msgstr "Kilómetros"
 
-#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65
+#: netbox/dcim/choices.py:1541 netbox/templates/dcim/cable_trace.html:65
 #: netbox/wireless/choices.py:498
 msgid "Meters"
 msgstr "Medidores"
 
-#: netbox/dcim/choices.py:1538
+#: netbox/dcim/choices.py:1542
 msgid "Centimeters"
 msgstr "Centímetros"
 
-#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499
+#: netbox/dcim/choices.py:1543 netbox/wireless/choices.py:499
 msgid "Miles"
 msgstr "Millas"
 
-#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66
+#: netbox/dcim/choices.py:1544 netbox/templates/dcim/cable_trace.html:66
 #: netbox/wireless/choices.py:500
 msgid "Feet"
 msgstr "Pies"
 
-#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327
-#: netbox/templates/dcim/rack.html:106
+#: netbox/dcim/choices.py:1560 netbox/templates/dcim/device.html:327
+#: netbox/templates/dcim/rack.html:107
 msgid "Kilograms"
 msgstr "Kilogramos"
 
-#: netbox/dcim/choices.py:1557
+#: netbox/dcim/choices.py:1561
 msgid "Grams"
 msgstr "Gramos"
 
-#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107
+#: netbox/dcim/choices.py:1562 netbox/templates/dcim/device.html:328
+#: netbox/templates/dcim/rack.html:108
 msgid "Pounds"
 msgstr "Libras"
 
-#: netbox/dcim/choices.py:1559
+#: netbox/dcim/choices.py:1563
 msgid "Ounces"
 msgstr "Onzas"
 
-#: netbox/dcim/choices.py:1606
+#: netbox/dcim/choices.py:1610
 msgid "Redundant"
 msgstr "Redundante"
 
-#: netbox/dcim/choices.py:1627
+#: netbox/dcim/choices.py:1631
 msgid "Single phase"
 msgstr "Monofásico"
 
-#: netbox/dcim/choices.py:1628
+#: netbox/dcim/choices.py:1632
 msgid "Three-phase"
 msgstr "Trifásico"
 
@@ -3269,7 +3270,7 @@ msgstr "VID asignado"
 
 #: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489
 #: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428
-#: netbox/dcim/forms/model_forms.py:1377
+#: netbox/dcim/forms/model_forms.py:1378
 #: netbox/dcim/models/device_components.py:712
 #: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316
 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483
@@ -3348,7 +3349,7 @@ msgid "LAG interface (ID)"
 msgstr "Interfaz LAG (ID)"
 
 #: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725
-#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689
+#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1690
 #: netbox/templates/dcim/virtualdevicecontext.html:15
 msgid "Virtual Device Context"
 msgstr "Contexto de dispositivo virtual"
@@ -3423,7 +3424,7 @@ msgstr "Etiquetas"
 #: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546
 #: netbox/dcim/forms/object_create.py:197
 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165
-#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247
+#: netbox/dcim/tables/devices.py:704 netbox/dcim/tables/devicetypes.py:247
 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131
 #: netbox/templates/dcim/modulebay.html:38
 #: netbox/templates/dcim/virtualchassis.html:66
@@ -3470,9 +3471,9 @@ msgstr "Zona horaria"
 #: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337
 #: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395
 #: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075
-#: netbox/dcim/forms/model_forms.py:1514
+#: netbox/dcim/forms/model_forms.py:1515
 #: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96
-#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936
+#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:937
 #: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309
 #: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60
 #: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132
@@ -3596,9 +3597,9 @@ msgstr "Numeración"
 #: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367
 #: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534
 #: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070
-#: netbox/dcim/forms/model_forms.py:1509
+#: netbox/dcim/forms/model_forms.py:1510
 #: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169
-#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933
+#: netbox/dcim/tables/devices.py:806 netbox/dcim/tables/devices.py:934
 #: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129
 #: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260
 #: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358
@@ -3688,7 +3689,7 @@ msgstr "Estante"
 #: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398
 #: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608
 #: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942
-#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579
+#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1580
 #: netbox/templates/dcim/device_edit.html:20
 msgid "Hardware"
 msgstr "Hardware"
@@ -3796,15 +3797,15 @@ msgstr "Plataforma"
 #: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616
 #: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633
 #: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208
-#: netbox/dcim/forms/model_forms.py:1663
+#: netbox/dcim/forms/model_forms.py:1664
 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22
 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60
 #: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371
 #: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454
 #: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594
-#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750
-#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857
-#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053
+#: netbox/dcim/tables/devices.py:694 netbox/dcim/tables/devices.py:751
+#: netbox/dcim/tables/devices.py:798 netbox/dcim/tables/devices.py:858
+#: netbox/dcim/tables/devices.py:927 netbox/dcim/tables/devices.py:1054
 #: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321
 #: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481
 #: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319
@@ -3948,7 +3949,7 @@ msgstr "Consumo de energía asignado (vatios)"
 
 #: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786
 #: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278
-#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55
+#: netbox/dcim/forms/model_forms.py:1567 netbox/dcim/forms/object_import.py:55
 msgid "Power port"
 msgstr "Puerto de alimentación"
 
@@ -4036,14 +4037,14 @@ msgstr "Modo"
 msgid "VLAN group"
 msgstr "Grupo de VLAN"
 
-#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359
+#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1360
 #: netbox/dcim/tables/devices.py:579
 #: netbox/virtualization/forms/bulk_edit.py:248
 #: netbox/virtualization/forms/model_forms.py:326
 msgid "Untagged VLAN"
 msgstr "VLAN sin etiquetar"
 
-#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368
+#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1369
 #: netbox/dcim/tables/devices.py:585
 #: netbox/virtualization/forms/bulk_edit.py:256
 #: netbox/virtualization/forms/model_forms.py:335
@@ -4062,7 +4063,7 @@ msgid "Wireless LANs"
 msgstr "LAN inalámbricas"
 
 #: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328
-#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285
+#: netbox/dcim/forms/model_forms.py:1390 netbox/ipam/forms/bulk_edit.py:285
 #: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169
 #: netbox/templates/dcim/interface.html:122
 #: netbox/templates/ipam/prefix.html:95
@@ -4071,24 +4072,24 @@ msgid "Addressing"
 msgstr "Dirigiéndose"
 
 #: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720
-#: netbox/dcim/forms/model_forms.py:1390
+#: netbox/dcim/forms/model_forms.py:1391
 #: netbox/virtualization/forms/model_forms.py:350
 msgid "Operation"
 msgstr "Operación"
 
 #: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329
-#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392
+#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1393
 msgid "PoE"
 msgstr "PoE"
 
-#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391
+#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1392
 #: netbox/templates/dcim/interface.html:99
 #: netbox/virtualization/forms/bulk_edit.py:267
 #: netbox/virtualization/forms/model_forms.py:351
 msgid "Related Interfaces"
 msgstr "Interfaces relacionadas"
 
-#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393
+#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1394
 #: netbox/virtualization/forms/bulk_edit.py:268
 #: netbox/virtualization/forms/model_forms.py:352
 msgid "802.1Q Switching"
@@ -4430,7 +4431,7 @@ msgid "VDC {vdc} is not assigned to device {device}"
 msgstr "VDC {vdc} no está asignado al dispositivo {device}"
 
 #: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000
-#: netbox/dcim/forms/model_forms.py:1574
+#: netbox/dcim/forms/model_forms.py:1575
 #: netbox/dcim/forms/object_import.py:117
 msgid "Rear port"
 msgstr "Puerto trasero"
@@ -4444,7 +4445,7 @@ msgstr "Puerto trasero correspondiente"
 msgid "Physical medium classification"
 msgstr "Clasificación de medios físicos"
 
-#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818
+#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:819
 msgid "Installed device"
 msgstr "Dispositivo instalado"
 
@@ -4533,7 +4534,7 @@ msgid "{side_upper} side termination not found: {device} {name}"
 msgstr "{side_upper} no se encontró la terminación lateral: {device} {name}"
 
 #: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785
-#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132
+#: netbox/dcim/tables/devices.py:1024 netbox/templates/dcim/device.html:132
 #: netbox/templates/dcim/virtualchassis.html:27
 #: netbox/templates/dcim/virtualchassis.html:67
 msgid "Master"
@@ -4563,6 +4564,28 @@ msgstr "Tipo de alimentación (AC/DC)"
 msgid "Single or three-phase"
 msgstr "Monofásico o trifásico"
 
+#: netbox/dcim/forms/bulk_import.py:1439 netbox/dcim/forms/model_forms.py:1670
+#: netbox/templates/dcim/device.html:190
+#: netbox/templates/dcim/virtualdevicecontext.html:30
+#: netbox/templates/virtualization/virtualmachine.html:52
+msgid "Primary IPv4"
+msgstr "IPv4 principal"
+
+#: netbox/dcim/forms/bulk_import.py:1443
+msgid "IPv4 address with mask, e.g. 1.2.3.4/24"
+msgstr "Dirección IPv4 con máscara, p. ej. 1.2.3.4/24"
+
+#: netbox/dcim/forms/bulk_import.py:1446 netbox/dcim/forms/model_forms.py:1679
+#: netbox/templates/dcim/device.html:206
+#: netbox/templates/dcim/virtualdevicecontext.html:41
+#: netbox/templates/virtualization/virtualmachine.html:68
+msgid "Primary IPv6"
+msgstr "IPv6 principal"
+
+#: netbox/dcim/forms/bulk_import.py:1450
+msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64"
+msgstr "Dirección IPv6 con longitud de prefijo, por ejemplo, 2001:db8: :1/64"
+
 #: netbox/dcim/forms/common.py:24 netbox/dcim/models/device_components.py:528
 #: netbox/templates/dcim/interface.html:57
 #: netbox/templates/virtualization/vminterface.html:55
@@ -4726,7 +4749,7 @@ msgstr "Amable"
 msgid "Mgmt only"
 msgstr "Solo administración"
 
-#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382
+#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1383
 #: netbox/dcim/models/device_components.py:630
 #: netbox/templates/dcim/interface.html:129
 msgid "WWN"
@@ -4760,7 +4783,7 @@ msgstr "Potencia de transmisión (dBm)"
 msgid "Cable"
 msgstr "Cable"
 
-#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945
+#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:946
 msgid "Discovered"
 msgstr "Descubierto"
 
@@ -4860,8 +4883,8 @@ msgstr "Plantilla de puerto de alimentación"
 msgid "Rear port template"
 msgstr "Plantilla de puerto trasero"
 
-#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387
-#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582
+#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1388
+#: netbox/dcim/forms/model_forms.py:1551 netbox/dcim/forms/model_forms.py:1583
 #: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318
 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289
 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372
@@ -4885,7 +4908,7 @@ msgstr "Plantilla de puerto trasero"
 msgid "Interface"
 msgstr "Interfaz"
 
-#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583
+#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1584
 #: netbox/dcim/tables/connections.py:27
 #: netbox/templates/dcim/consoleport.html:17
 #: netbox/templates/dcim/consoleserverport.html:74
@@ -4893,14 +4916,14 @@ msgstr "Interfaz"
 msgid "Console Port"
 msgstr "Puerto de consola"
 
-#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584
+#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1585
 #: netbox/templates/dcim/consoleport.html:73
 #: netbox/templates/dcim/consoleserverport.html:17
 #: netbox/templates/dcim/frontport.html:109
 msgid "Console Server Port"
 msgstr "Puerto de servidor de consola"
 
-#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585
+#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1586
 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52
 #: netbox/templates/dcim/consoleport.html:76
 #: netbox/templates/dcim/consoleserverport.html:77
@@ -4911,8 +4934,8 @@ msgstr "Puerto de servidor de consola"
 msgid "Front Port"
 msgstr "Puerto frontal"
 
-#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586
-#: netbox/dcim/tables/devices.py:706
+#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1587
+#: netbox/dcim/tables/devices.py:707
 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53
 #: netbox/templates/dcim/consoleport.html:79
 #: netbox/templates/dcim/consoleserverport.html:80
@@ -4924,24 +4947,24 @@ msgstr "Puerto frontal"
 msgid "Rear Port"
 msgstr "Puerto trasero"
 
-#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587
+#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1588
 #: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512
 #: netbox/templates/dcim/poweroutlet.html:44
 #: netbox/templates/dcim/powerport.html:17
 msgid "Power Port"
 msgstr "Puerto de alimentación"
 
-#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588
+#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1589
 #: netbox/templates/dcim/poweroutlet.html:17
 #: netbox/templates/dcim/powerport.html:77
 msgid "Power Outlet"
 msgstr "Toma de corriente"
 
-#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590
+#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1591
 msgid "Component Assignment"
 msgstr "Asignación de componentes"
 
-#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637
+#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1638
 msgid "An InventoryItem can only be assigned to a single component."
 msgstr "Un InventoryItem solo se puede asignar a un único componente."
 
@@ -4949,11 +4972,15 @@ msgstr "Un InventoryItem solo se puede asignar a un único componente."
 msgid "LAG interface"
 msgstr "Interfaz LAG"
 
-#: netbox/dcim/forms/model_forms.py:1483
+#: netbox/dcim/forms/model_forms.py:1355
+msgid "Filter VLANs available for assignment by group."
+msgstr "Filtre las VLAN disponibles para la asignación por grupo."
+
+#: netbox/dcim/forms/model_forms.py:1484
 msgid "Child Device"
 msgstr "Dispositivo infantil"
 
-#: netbox/dcim/forms/model_forms.py:1484
+#: netbox/dcim/forms/model_forms.py:1485
 msgid ""
 "Child devices must first be created and assigned to the site and rack of the"
 " parent device."
@@ -4961,44 +4988,32 @@ msgstr ""
 "Los dispositivos secundarios primero deben crearse y asignarse al sitio y al"
 " rack del dispositivo principal."
 
-#: netbox/dcim/forms/model_forms.py:1526
+#: netbox/dcim/forms/model_forms.py:1527
 msgid "Console port"
 msgstr "Puerto de consola"
 
-#: netbox/dcim/forms/model_forms.py:1534
+#: netbox/dcim/forms/model_forms.py:1535
 msgid "Console server port"
 msgstr "Puerto de servidor de consola"
 
-#: netbox/dcim/forms/model_forms.py:1542
+#: netbox/dcim/forms/model_forms.py:1543
 msgid "Front port"
 msgstr "Puerto frontal"
 
-#: netbox/dcim/forms/model_forms.py:1558
+#: netbox/dcim/forms/model_forms.py:1559
 msgid "Power outlet"
 msgstr "toma de corriente"
 
-#: netbox/dcim/forms/model_forms.py:1578
+#: netbox/dcim/forms/model_forms.py:1579
 #: netbox/templates/dcim/inventoryitem.html:17
 msgid "Inventory Item"
 msgstr "Artículo de inventario"
 
-#: netbox/dcim/forms/model_forms.py:1651
+#: netbox/dcim/forms/model_forms.py:1652
 #: netbox/templates/dcim/inventoryitemrole.html:15
 msgid "Inventory Item Role"
 msgstr "Función del artículo de inventario"
 
-#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190
-#: netbox/templates/dcim/virtualdevicecontext.html:30
-#: netbox/templates/virtualization/virtualmachine.html:52
-msgid "Primary IPv4"
-msgstr "IPv4 principal"
-
-#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206
-#: netbox/templates/dcim/virtualdevicecontext.html:41
-#: netbox/templates/virtualization/virtualmachine.html:68
-msgid "Primary IPv6"
-msgstr "IPv6 principal"
-
 #: netbox/dcim/forms/object_create.py:48
 #: netbox/dcim/forms/object_create.py:199
 #: netbox/dcim/forms/object_create.py:355
@@ -5059,7 +5074,7 @@ msgstr ""
 "coincidir con el número seleccionado de posiciones de los puertos traseros "
 "({rearport_count})."
 
-#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029
+#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1030
 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53
 #: netbox/templates/dcim/virtualchassis_edit.html:47
 #: netbox/templates/ipam/fhrpgroup.html:38
@@ -6692,7 +6707,7 @@ msgstr "Plantilla de configuración"
 msgid "Site Group"
 msgstr "Grupo de sitios"
 
-#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064
+#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1065
 #: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306
 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356
 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446
@@ -6701,12 +6716,12 @@ msgstr "Grupo de sitios"
 msgid "IP Address"
 msgstr "Dirección IP"
 
-#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068
+#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1069
 #: netbox/virtualization/tables/virtualmachines.py:86
 msgid "IPv4 Address"
 msgstr "Dirección IPv4"
 
-#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072
+#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1073
 #: netbox/virtualization/tables/virtualmachines.py:90
 msgid "IPv6 Address"
 msgstr "Dirección IPv6"
@@ -6744,7 +6759,7 @@ msgstr "Puertos de alimentación"
 msgid "Power outlets"
 msgstr "tomas de corriente"
 
-#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077
+#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1078
 #: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042
 #: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977
 #: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250
@@ -6851,28 +6866,28 @@ msgstr "Solo administración"
 msgid "VDCs"
 msgstr "VDC"
 
-#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53
+#: netbox/dcim/tables/devices.py:870 netbox/templates/dcim/modulebay.html:53
 msgid "Installed Module"
 msgstr "Módulo instalado"
 
-#: netbox/dcim/tables/devices.py:872
+#: netbox/dcim/tables/devices.py:873
 msgid "Module Serial"
 msgstr "Serie del módulo"
 
-#: netbox/dcim/tables/devices.py:876
+#: netbox/dcim/tables/devices.py:877
 msgid "Module Asset Tag"
 msgstr "Etiqueta de activo del módulo"
 
-#: netbox/dcim/tables/devices.py:885
+#: netbox/dcim/tables/devices.py:886
 msgid "Module Status"
 msgstr "Estado del módulo"
 
-#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313
+#: netbox/dcim/tables/devices.py:941 netbox/dcim/tables/devicetypes.py:313
 #: netbox/templates/dcim/inventoryitem.html:40
 msgid "Component"
 msgstr "Componente"
 
-#: netbox/dcim/tables/devices.py:996
+#: netbox/dcim/tables/devices.py:997
 msgid "Items"
 msgstr "Artículos"
 
@@ -10498,7 +10513,7 @@ msgstr ""
 msgid "Range boundaries must be defined as integers."
 msgstr "Los límites del rango se deben definir como números enteros."
 
-#: 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 "{class_name} debe implementar get_view_name ()"
@@ -10856,33 +10871,33 @@ msgstr "Campo personalizado '{name}'debe tener un valor único."
 msgid "Missing required custom field '{name}'."
 msgstr "Falta el campo personalizado obligatorio '{name}'."
 
-#: netbox/netbox/models/features.py:467
+#: netbox/netbox/models/features.py:462
 msgid "Remote data source"
 msgstr "Fuente de datos remota"
 
-#: netbox/netbox/models/features.py:477
+#: netbox/netbox/models/features.py:472
 msgid "data path"
 msgstr "ruta de datos"
 
-#: netbox/netbox/models/features.py:481
+#: netbox/netbox/models/features.py:476
 msgid "Path to remote file (relative to data source root)"
 msgstr "Ruta al archivo remoto (relativa a la raíz de la fuente de datos)"
 
-#: netbox/netbox/models/features.py:484
+#: netbox/netbox/models/features.py:479
 msgid "auto sync enabled"
 msgstr "sincronización automática habilitada"
 
-#: netbox/netbox/models/features.py:486
+#: netbox/netbox/models/features.py:481
 msgid "Enable automatic synchronization of data when the data file is updated"
 msgstr ""
 "Habilitar la sincronización automática de datos cuando se actualiza el "
 "archivo de datos"
 
-#: netbox/netbox/models/features.py:489
+#: netbox/netbox/models/features.py:484
 msgid "date synced"
 msgstr "fecha sincronizada"
 
-#: netbox/netbox/models/features.py:583
+#: netbox/netbox/models/features.py:578
 #, python-brace-format
 msgid "{class_name} must implement a sync_data() method."
 msgstr "{class_name} debe implementar un método sync_data ()."
@@ -12630,7 +12645,7 @@ msgid "Parent Bay"
 msgstr "Bahía para padres"
 
 #: netbox/templates/dcim/device_edit.html:48
-#: netbox/utilities/templates/form_helpers/render_field.html:20
+#: netbox/utilities/templates/form_helpers/render_field.html:22
 msgid "Regenerate Slug"
 msgstr "Regenera a Slug"
 
@@ -12975,17 +12990,17 @@ msgstr "Peso máximo"
 msgid "Total Weight"
 msgstr "Peso total"
 
-#: netbox/templates/dcim/rack.html:121
+#: netbox/templates/dcim/rack.html:125
 #: netbox/templates/dcim/rack_elevation_list.html:15
 msgid "Images and Labels"
 msgstr "Imágenes y etiquetas"
 
-#: netbox/templates/dcim/rack.html:122
+#: netbox/templates/dcim/rack.html:126
 #: netbox/templates/dcim/rack_elevation_list.html:16
 msgid "Images only"
 msgstr "Solo imágenes"
 
-#: netbox/templates/dcim/rack.html:123
+#: netbox/templates/dcim/rack.html:127
 #: netbox/templates/dcim/rack_elevation_list.html:17
 msgid "Labels only"
 msgstr "Solo etiquetas"
@@ -15285,15 +15300,15 @@ msgstr "Cancelar suscripción"
 msgid "Subscribe"
 msgstr "Suscríbase"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:39
+#: netbox/utilities/templates/form_helpers/render_field.html:41
 msgid "Copy to clipboard"
 msgstr "Copiar al portapapeles"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:55
+#: netbox/utilities/templates/form_helpers/render_field.html:57
 msgid "This field is required"
 msgstr "Este campo es obligatorio"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:68
+#: netbox/utilities/templates/form_helpers/render_field.html:70
 msgid "Set Null"
 msgstr "Establecer nulo"
 

BIN
netbox/translations/fr/LC_MESSAGES/django.mo


+ 179 - 164
netbox/translations/fr/LC_MESSAGES/django.po

@@ -18,7 +18,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-25 05:02+0000\n"
 "PO-Revision-Date: 2023-10-30 17:48+0000\n"
 "Last-Translator: Jeremy Stretch, 2024\n"
 "Language-Team: French (https://app.transifex.com/netbox-community/teams/178115/fr/)\n"
@@ -95,8 +95,8 @@ msgstr "Votre mot de passe a été modifié avec succès."
 
 #: 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:1522
+#: netbox/dcim/choices.py:1598 netbox/dcim/choices.py:1648
 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45
 #: netbox/vpn/choices.py:18
 msgid "Planned"
@@ -109,7 +109,7 @@ msgstr "Approvisionnement"
 #: 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:1597 netbox/dcim/choices.py:1647
 #: 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
@@ -120,8 +120,8 @@ msgid "Active"
 msgstr "Actif"
 
 #: 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:1596
+#: netbox/dcim/choices.py:1649 netbox/virtualization/choices.py:24
 #: netbox/virtualization/choices.py:43
 msgid "Offline"
 msgstr "Hors ligne"
@@ -134,7 +134,7 @@ msgstr "Déprovisionnement"
 msgid "Decommissioned"
 msgstr "Mis hors service"
 
-#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605
+#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1609
 #: netbox/tenancy/choices.py:17
 msgid "Primary"
 msgstr "Primaire"
@@ -340,7 +340,7 @@ msgstr "Terminaison A (ID)"
 #: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391
 #: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498
 #: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703
-#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277
+#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:280
 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167
 #: netbox/templates/htmx/object_selector.html:28
 #: netbox/templates/inc/filter_list.html:45
@@ -578,8 +578,8 @@ msgstr "Identifiant du service"
 #: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200
 #: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064
 #: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479
-#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757
-#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250
+#: netbox/dcim/tables/devices.py:701 netbox/dcim/tables/devices.py:758
+#: netbox/dcim/tables/devices.py:1000 netbox/dcim/tables/devicetypes.py:250
 #: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33
 #: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443
 #: netbox/templates/circuits/circuittype.html:30
@@ -616,7 +616,7 @@ msgstr "Couleur"
 #: 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
-#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77
+#: netbox/dcim/tables/devices.py:811 netbox/dcim/tables/power.py:77
 #: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42
 #: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465
 #: netbox/netbox/tables/tables.py:240
@@ -673,8 +673,8 @@ msgstr "Identifiant de compte du prestataire"
 #: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799
 #: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958
 #: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170
-#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813
-#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69
+#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:814
+#: netbox/dcim/tables/devices.py:1060 netbox/dcim/tables/modules.py:69
 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126
 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138
 #: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305
@@ -823,7 +823,7 @@ msgstr "Paramètres du service"
 #: netbox/circuits/forms/model_forms.py:183
 #: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181
 #: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323
-#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691
+#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1692
 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81
 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136
 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232
@@ -1406,11 +1406,11 @@ msgstr "réseaux de fournisseurs"
 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289
 #: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433
 #: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531
-#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727
-#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837
-#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970
-#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019
-#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32
+#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:728
+#: netbox/dcim/tables/devices.py:775 netbox/dcim/tables/devices.py:838
+#: netbox/dcim/tables/devices.py:908 netbox/dcim/tables/devices.py:971
+#: netbox/dcim/tables/devices.py:991 netbox/dcim/tables/devices.py:1020
+#: netbox/dcim/tables/devices.py:1050 netbox/dcim/tables/devicetypes.py:32
 #: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62
 #: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113
 #: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51
@@ -1548,7 +1548,7 @@ msgstr "Bande passante garantie"
 #: netbox/circuits/tables/circuits.py:80
 #: netbox/circuits/tables/providers.py:48
 #: netbox/circuits/tables/providers.py:82
-#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032
+#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1033
 #: 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:84
@@ -1628,7 +1628,7 @@ msgstr "Terminé"
 #: 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:1599 netbox/virtualization/choices.py:47
 msgid "Failed"
 msgstr "Échoué"
 
@@ -1956,7 +1956,7 @@ msgstr ""
 msgid "Rack Elevations"
 msgstr "Élévations des baies"
 
-#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506
+#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1510
 #: 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
@@ -2539,7 +2539,7 @@ msgid "Staging"
 msgstr "Mise en scène"
 
 #: 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:1523
 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48
 msgid "Decommissioning"
 msgstr "Démantèlement"
@@ -2603,7 +2603,7 @@ msgstr "Obsolète"
 msgid "Millimeters"
 msgstr "Millimètres"
 
-#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541
+#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1545
 msgid "Inches"
 msgstr "Pouces"
 
@@ -2625,9 +2625,9 @@ msgstr "De l'arrière vers l'avant"
 #: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234
 #: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93
 #: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062
-#: netbox/dcim/forms/model_forms.py:1501
+#: netbox/dcim/forms/model_forms.py:1502
 #: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653
-#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950
+#: netbox/dcim/tables/devices.py:866 netbox/dcim/tables/devices.py:951
 #: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59
 #: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44
 #: netbox/templates/dcim/interface.html:102
@@ -2657,15 +2657,15 @@ msgstr "Parent"
 msgid "Child"
 msgstr "Enfant"
 
-#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339
-#: netbox/templates/dcim/rack.html:129
+#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:340
+#: netbox/templates/dcim/rack.html:133
 #: netbox/templates/dcim/rack_elevation_list.html:20
 #: netbox/templates/dcim/rackreservation.html:76
 msgid "Front"
 msgstr "Avant"
 
-#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345
-#: netbox/templates/dcim/rack.html:135
+#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:346
+#: netbox/templates/dcim/rack.html:139
 #: netbox/templates/dcim/rack_elevation_list.html:21
 #: netbox/templates/dcim/rackreservation.html:82
 msgid "Rear"
@@ -2693,7 +2693,7 @@ msgid "Side to rear"
 msgstr "D'un côté à l'arrière"
 
 #: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253
-#: netbox/dcim/choices.py:1291
+#: netbox/dcim/choices.py:1295
 msgid "Passive"
 msgstr "Passif"
 
@@ -2701,15 +2701,15 @@ msgstr "Passif"
 msgid "Mixed"
 msgstr "Mixte"
 
-#: 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 "NEMA (non verrouillable)"
 
-#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748
+#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:749
 msgid "NEMA (Locking)"
 msgstr "NEMA (verrouillage)"
 
-#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772
+#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:773
 msgid "California Style"
 msgstr "Style californien"
 
@@ -2717,42 +2717,42 @@ msgstr "Style californien"
 msgid "International/ITA"
 msgstr "International/ITA"
 
-#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807
+#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:808
 msgid "Proprietary"
 msgstr "Propriétaire"
 
-#: 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:1211 netbox/dcim/choices.py:1213
+#: netbox/dcim/choices.py:1439 netbox/dcim/choices.py:1441
 #: netbox/netbox/navigation/menu.py:200
 msgid "Other"
 msgstr "Autres"
 
-#: netbox/dcim/choices.py:780
+#: netbox/dcim/choices.py:781
 msgid "ITA/International"
 msgstr "ITA/International"
 
-#: netbox/dcim/choices.py:846
+#: netbox/dcim/choices.py:848
 msgid "Physical"
 msgstr "Physique"
 
-#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013
+#: netbox/dcim/choices.py:849 netbox/dcim/choices.py:1016
 msgid "Virtual"
 msgstr "Virtuel"
 
-#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086
+#: netbox/dcim/choices.py:850 netbox/dcim/choices.py:1089
 #: 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/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1397
 #: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144
 #: netbox/templates/dcim/interface.html:210
 msgid "Wireless"
 msgstr "Sans fil"
 
-#: netbox/dcim/choices.py:1011
+#: netbox/dcim/choices.py:1014
 msgid "Virtual interfaces"
 msgstr "Interfaces virtuelles"
 
-#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410
+#: netbox/dcim/choices.py:1017 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
@@ -2762,27 +2762,27 @@ msgstr "Interfaces virtuelles"
 msgid "Bridge"
 msgstr "Passerelle"
 
-#: netbox/dcim/choices.py:1015
+#: netbox/dcim/choices.py:1018
 msgid "Link Aggregation Group (LAG)"
 msgstr "Groupe d'agrégation de liens (LAG)"
 
-#: netbox/dcim/choices.py:1019
+#: netbox/dcim/choices.py:1022
 msgid "Ethernet (fixed)"
 msgstr "Ethernet (fixe)"
 
-#: netbox/dcim/choices.py:1034
+#: netbox/dcim/choices.py:1037
 msgid "Ethernet (modular)"
 msgstr "Ethernet (modulaire)"
 
-#: netbox/dcim/choices.py:1070
+#: netbox/dcim/choices.py:1073
 msgid "Ethernet (backplane)"
 msgstr "Ethernet (panneau arrière)"
 
-#: netbox/dcim/choices.py:1101
+#: netbox/dcim/choices.py:1105
 msgid "Cellular"
 msgstr "Cellulaire"
 
-#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383
+#: netbox/dcim/choices.py:1157 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
@@ -2790,129 +2790,130 @@ msgstr "Cellulaire"
 msgid "Serial"
 msgstr "Série"
 
-#: netbox/dcim/choices.py:1168
+#: netbox/dcim/choices.py:1172
 msgid "Coaxial"
 msgstr "Coaxiale"
 
-#: netbox/dcim/choices.py:1188
+#: netbox/dcim/choices.py:1192
 msgid "Stacking"
 msgstr "Empilage"
 
-#: netbox/dcim/choices.py:1238
+#: netbox/dcim/choices.py:1242
 msgid "Half"
 msgstr "La moitié"
 
-#: netbox/dcim/choices.py:1239
+#: netbox/dcim/choices.py:1243
 msgid "Full"
 msgstr "Complet"
 
-#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31
+#: netbox/dcim/choices.py:1244 netbox/netbox/preferences.py:31
 #: netbox/wireless/choices.py:480
 msgid "Auto"
 msgstr "Automatique"
 
-#: netbox/dcim/choices.py:1251
+#: netbox/dcim/choices.py:1255
 msgid "Access"
 msgstr "Accès"
 
-#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172
+#: netbox/dcim/choices.py:1256 netbox/ipam/tables/vlans.py:172
 #: netbox/ipam/tables/vlans.py:217
 #: netbox/templates/dcim/inc/interface_vlans_table.html:7
 msgid "Tagged"
 msgstr "Tagué"
 
-#: netbox/dcim/choices.py:1253
+#: netbox/dcim/choices.py:1257
 msgid "Tagged (All)"
 msgstr "Tagué (Tous)"
 
-#: netbox/dcim/choices.py:1282
+#: netbox/dcim/choices.py:1286
 msgid "IEEE Standard"
 msgstr "Norme IEEE"
 
-#: netbox/dcim/choices.py:1293
+#: netbox/dcim/choices.py:1297
 msgid "Passive 24V (2-pair)"
 msgstr "24 V passif (2 paires)"
 
-#: netbox/dcim/choices.py:1294
+#: netbox/dcim/choices.py:1298
 msgid "Passive 24V (4-pair)"
 msgstr "24 V passif (4 paires)"
 
-#: netbox/dcim/choices.py:1295
+#: netbox/dcim/choices.py:1299
 msgid "Passive 48V (2-pair)"
 msgstr "48 V passif (2 paires)"
 
-#: netbox/dcim/choices.py:1296
+#: netbox/dcim/choices.py:1300
 msgid "Passive 48V (4-pair)"
 msgstr "48 V passif (4 paires)"
 
-#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476
+#: netbox/dcim/choices.py:1370 netbox/dcim/choices.py:1480
 msgid "Copper"
 msgstr "Cuivre"
 
-#: netbox/dcim/choices.py:1389
+#: netbox/dcim/choices.py:1393
 msgid "Fiber Optic"
 msgstr "fibre optique"
 
-#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505
+#: netbox/dcim/choices.py:1426 netbox/dcim/choices.py:1509
 msgid "USB"
 msgstr "USB"
 
-#: netbox/dcim/choices.py:1492
+#: netbox/dcim/choices.py:1496
 msgid "Fiber"
 msgstr "Fibre"
 
-#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227
+#: netbox/dcim/choices.py:1521 netbox/dcim/forms/filtersets.py:1227
 msgid "Connected"
 msgstr "Connecté"
 
-#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497
+#: netbox/dcim/choices.py:1540 netbox/wireless/choices.py:497
 msgid "Kilometers"
 msgstr "Kilomètres"
 
-#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65
+#: netbox/dcim/choices.py:1541 netbox/templates/dcim/cable_trace.html:65
 #: netbox/wireless/choices.py:498
 msgid "Meters"
 msgstr "Compteurs"
 
-#: netbox/dcim/choices.py:1538
+#: netbox/dcim/choices.py:1542
 msgid "Centimeters"
 msgstr "Centimètres"
 
-#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499
+#: netbox/dcim/choices.py:1543 netbox/wireless/choices.py:499
 msgid "Miles"
 msgstr "Miles"
 
-#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66
+#: netbox/dcim/choices.py:1544 netbox/templates/dcim/cable_trace.html:66
 #: netbox/wireless/choices.py:500
 msgid "Feet"
 msgstr "Pieds"
 
-#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327
-#: netbox/templates/dcim/rack.html:106
+#: netbox/dcim/choices.py:1560 netbox/templates/dcim/device.html:327
+#: netbox/templates/dcim/rack.html:107
 msgid "Kilograms"
 msgstr "Kilogrammes"
 
-#: netbox/dcim/choices.py:1557
+#: netbox/dcim/choices.py:1561
 msgid "Grams"
 msgstr "Grammes"
 
-#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107
+#: netbox/dcim/choices.py:1562 netbox/templates/dcim/device.html:328
+#: netbox/templates/dcim/rack.html:108
 msgid "Pounds"
 msgstr "Livres"
 
-#: netbox/dcim/choices.py:1559
+#: netbox/dcim/choices.py:1563
 msgid "Ounces"
 msgstr "Onces"
 
-#: netbox/dcim/choices.py:1606
+#: netbox/dcim/choices.py:1610
 msgid "Redundant"
 msgstr "Redondant"
 
-#: netbox/dcim/choices.py:1627
+#: netbox/dcim/choices.py:1631
 msgid "Single phase"
 msgstr "Monophasé"
 
-#: netbox/dcim/choices.py:1628
+#: netbox/dcim/choices.py:1632
 msgid "Three-phase"
 msgstr "Triphasé"
 
@@ -3282,7 +3283,7 @@ msgstr "VID attribué"
 
 #: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489
 #: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428
-#: netbox/dcim/forms/model_forms.py:1377
+#: netbox/dcim/forms/model_forms.py:1378
 #: netbox/dcim/models/device_components.py:712
 #: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316
 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483
@@ -3361,7 +3362,7 @@ msgid "LAG interface (ID)"
 msgstr "Interface LAG (ID)"
 
 #: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725
-#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689
+#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1690
 #: netbox/templates/dcim/virtualdevicecontext.html:15
 msgid "Virtual Device Context"
 msgstr "Contexte du périphérique virtuel"
@@ -3436,7 +3437,7 @@ msgstr "Balises"
 #: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546
 #: netbox/dcim/forms/object_create.py:197
 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165
-#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247
+#: netbox/dcim/tables/devices.py:704 netbox/dcim/tables/devicetypes.py:247
 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131
 #: netbox/templates/dcim/modulebay.html:38
 #: netbox/templates/dcim/virtualchassis.html:66
@@ -3483,9 +3484,9 @@ msgstr "Fuseau horaire"
 #: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337
 #: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395
 #: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075
-#: netbox/dcim/forms/model_forms.py:1514
+#: netbox/dcim/forms/model_forms.py:1515
 #: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96
-#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936
+#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:937
 #: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309
 #: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60
 #: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132
@@ -3609,9 +3610,9 @@ msgstr "Numérotation"
 #: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367
 #: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534
 #: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070
-#: netbox/dcim/forms/model_forms.py:1509
+#: netbox/dcim/forms/model_forms.py:1510
 #: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169
-#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933
+#: netbox/dcim/tables/devices.py:806 netbox/dcim/tables/devices.py:934
 #: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129
 #: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260
 #: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358
@@ -3701,7 +3702,7 @@ msgstr "Baie"
 #: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398
 #: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608
 #: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942
-#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579
+#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1580
 #: netbox/templates/dcim/device_edit.html:20
 msgid "Hardware"
 msgstr "Matériel"
@@ -3809,15 +3810,15 @@ msgstr "Plateforme"
 #: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616
 #: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633
 #: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208
-#: netbox/dcim/forms/model_forms.py:1663
+#: netbox/dcim/forms/model_forms.py:1664
 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22
 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60
 #: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371
 #: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454
 #: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594
-#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750
-#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857
-#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053
+#: netbox/dcim/tables/devices.py:694 netbox/dcim/tables/devices.py:751
+#: netbox/dcim/tables/devices.py:798 netbox/dcim/tables/devices.py:858
+#: netbox/dcim/tables/devices.py:927 netbox/dcim/tables/devices.py:1054
 #: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321
 #: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481
 #: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319
@@ -3961,7 +3962,7 @@ msgstr "Consommation électrique allouée (watts)"
 
 #: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786
 #: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278
-#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55
+#: netbox/dcim/forms/model_forms.py:1567 netbox/dcim/forms/object_import.py:55
 msgid "Power port"
 msgstr "port d'alimentation"
 
@@ -4049,14 +4050,14 @@ msgstr "Mode"
 msgid "VLAN group"
 msgstr "groupe VLAN"
 
-#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359
+#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1360
 #: netbox/dcim/tables/devices.py:579
 #: netbox/virtualization/forms/bulk_edit.py:248
 #: netbox/virtualization/forms/model_forms.py:326
 msgid "Untagged VLAN"
 msgstr "VLAN non balisé"
 
-#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368
+#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1369
 #: netbox/dcim/tables/devices.py:585
 #: netbox/virtualization/forms/bulk_edit.py:256
 #: netbox/virtualization/forms/model_forms.py:335
@@ -4075,7 +4076,7 @@ msgid "Wireless LANs"
 msgstr "Réseaux locaux sans fil"
 
 #: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328
-#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285
+#: netbox/dcim/forms/model_forms.py:1390 netbox/ipam/forms/bulk_edit.py:285
 #: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169
 #: netbox/templates/dcim/interface.html:122
 #: netbox/templates/ipam/prefix.html:95
@@ -4084,24 +4085,24 @@ msgid "Addressing"
 msgstr "Adressage"
 
 #: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720
-#: netbox/dcim/forms/model_forms.py:1390
+#: netbox/dcim/forms/model_forms.py:1391
 #: netbox/virtualization/forms/model_forms.py:350
 msgid "Operation"
 msgstr "Fonctionnement"
 
 #: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329
-#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392
+#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1393
 msgid "PoE"
 msgstr "PoE"
 
-#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391
+#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1392
 #: netbox/templates/dcim/interface.html:99
 #: netbox/virtualization/forms/bulk_edit.py:267
 #: netbox/virtualization/forms/model_forms.py:351
 msgid "Related Interfaces"
 msgstr "Interfaces associées"
 
-#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393
+#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1394
 #: netbox/virtualization/forms/bulk_edit.py:268
 #: netbox/virtualization/forms/model_forms.py:352
 msgid "802.1Q Switching"
@@ -4442,7 +4443,7 @@ msgid "VDC {vdc} is not assigned to device {device}"
 msgstr "VDC {vdc} n'est pas attribué à l'appareil {device}"
 
 #: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000
-#: netbox/dcim/forms/model_forms.py:1574
+#: netbox/dcim/forms/model_forms.py:1575
 #: netbox/dcim/forms/object_import.py:117
 msgid "Rear port"
 msgstr "Port arrière"
@@ -4456,7 +4457,7 @@ msgstr "Port arrière correspondant"
 msgid "Physical medium classification"
 msgstr "Classification des supports physiques"
 
-#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818
+#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:819
 msgid "Installed device"
 msgstr "Appareil installé"
 
@@ -4545,7 +4546,7 @@ msgid "{side_upper} side termination not found: {device} {name}"
 msgstr "{side_upper} terminaison latérale introuvable : {device} {name}"
 
 #: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785
-#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132
+#: netbox/dcim/tables/devices.py:1024 netbox/templates/dcim/device.html:132
 #: netbox/templates/dcim/virtualchassis.html:27
 #: netbox/templates/dcim/virtualchassis.html:67
 msgid "Master"
@@ -4575,6 +4576,28 @@ msgstr "Type d'alimentation (AC/DC)"
 msgid "Single or three-phase"
 msgstr "Monophasé ou triphasé"
 
+#: netbox/dcim/forms/bulk_import.py:1439 netbox/dcim/forms/model_forms.py:1670
+#: netbox/templates/dcim/device.html:190
+#: netbox/templates/dcim/virtualdevicecontext.html:30
+#: netbox/templates/virtualization/virtualmachine.html:52
+msgid "Primary IPv4"
+msgstr "IPv4 principal"
+
+#: netbox/dcim/forms/bulk_import.py:1443
+msgid "IPv4 address with mask, e.g. 1.2.3.4/24"
+msgstr "Adresse IPv4 avec masque, par exemple 1.2.3.4/24"
+
+#: netbox/dcim/forms/bulk_import.py:1446 netbox/dcim/forms/model_forms.py:1679
+#: netbox/templates/dcim/device.html:206
+#: netbox/templates/dcim/virtualdevicecontext.html:41
+#: netbox/templates/virtualization/virtualmachine.html:68
+msgid "Primary IPv6"
+msgstr "IPv6 principal"
+
+#: netbox/dcim/forms/bulk_import.py:1450
+msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64"
+msgstr "Adresse IPv6 avec longueur de préfixe, par exemple 2001:db8 : :1/64"
+
 #: netbox/dcim/forms/common.py:24 netbox/dcim/models/device_components.py:528
 #: netbox/templates/dcim/interface.html:57
 #: netbox/templates/virtualization/vminterface.html:55
@@ -4739,7 +4762,7 @@ msgstr "Type"
 msgid "Mgmt only"
 msgstr "Gestion uniquement"
 
-#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382
+#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1383
 #: netbox/dcim/models/device_components.py:630
 #: netbox/templates/dcim/interface.html:129
 msgid "WWN"
@@ -4773,7 +4796,7 @@ msgstr "Puissance de transmission (dBm)"
 msgid "Cable"
 msgstr "câble"
 
-#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945
+#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:946
 msgid "Discovered"
 msgstr "Découvert"
 
@@ -4872,8 +4895,8 @@ msgstr "Modèle de port d'alimentation"
 msgid "Rear port template"
 msgstr "Modèle de port arrière"
 
-#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387
-#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582
+#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1388
+#: netbox/dcim/forms/model_forms.py:1551 netbox/dcim/forms/model_forms.py:1583
 #: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318
 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289
 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372
@@ -4897,7 +4920,7 @@ msgstr "Modèle de port arrière"
 msgid "Interface"
 msgstr "Interface"
 
-#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583
+#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1584
 #: netbox/dcim/tables/connections.py:27
 #: netbox/templates/dcim/consoleport.html:17
 #: netbox/templates/dcim/consoleserverport.html:74
@@ -4905,14 +4928,14 @@ msgstr "Interface"
 msgid "Console Port"
 msgstr "Port de console"
 
-#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584
+#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1585
 #: netbox/templates/dcim/consoleport.html:73
 #: netbox/templates/dcim/consoleserverport.html:17
 #: netbox/templates/dcim/frontport.html:109
 msgid "Console Server Port"
 msgstr "Port du serveur de consoles"
 
-#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585
+#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1586
 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52
 #: netbox/templates/dcim/consoleport.html:76
 #: netbox/templates/dcim/consoleserverport.html:77
@@ -4923,8 +4946,8 @@ msgstr "Port du serveur de consoles"
 msgid "Front Port"
 msgstr "Port avant"
 
-#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586
-#: netbox/dcim/tables/devices.py:706
+#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1587
+#: netbox/dcim/tables/devices.py:707
 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53
 #: netbox/templates/dcim/consoleport.html:79
 #: netbox/templates/dcim/consoleserverport.html:80
@@ -4936,24 +4959,24 @@ msgstr "Port avant"
 msgid "Rear Port"
 msgstr "Port arrière"
 
-#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587
+#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1588
 #: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512
 #: netbox/templates/dcim/poweroutlet.html:44
 #: netbox/templates/dcim/powerport.html:17
 msgid "Power Port"
 msgstr "Port d'alimentation"
 
-#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588
+#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1589
 #: netbox/templates/dcim/poweroutlet.html:17
 #: netbox/templates/dcim/powerport.html:77
 msgid "Power Outlet"
 msgstr "Prise de courant"
 
-#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590
+#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1591
 msgid "Component Assignment"
 msgstr "Affectation des composants"
 
-#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637
+#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1638
 msgid "An InventoryItem can only be assigned to a single component."
 msgstr "Un item d'inventaire ne peut être attribué qu'à un seul composant."
 
@@ -4961,11 +4984,15 @@ msgstr "Un item d'inventaire ne peut être attribué qu'à un seul composant."
 msgid "LAG interface"
 msgstr "Interface LAG"
 
-#: netbox/dcim/forms/model_forms.py:1483
+#: netbox/dcim/forms/model_forms.py:1355
+msgid "Filter VLANs available for assignment by group."
+msgstr "Filtrez les VLAN disponibles pour une attribution par groupe."
+
+#: netbox/dcim/forms/model_forms.py:1484
 msgid "Child Device"
 msgstr "Appareil pour enfants"
 
-#: netbox/dcim/forms/model_forms.py:1484
+#: netbox/dcim/forms/model_forms.py:1485
 msgid ""
 "Child devices must first be created and assigned to the site and rack of the"
 " parent device."
@@ -4973,44 +5000,32 @@ msgstr ""
 "Les appareils enfants doivent d'abord être créés et affectés au site et à la"
 " baie de l'appareil parent."
 
-#: netbox/dcim/forms/model_forms.py:1526
+#: netbox/dcim/forms/model_forms.py:1527
 msgid "Console port"
 msgstr "Port de console"
 
-#: netbox/dcim/forms/model_forms.py:1534
+#: netbox/dcim/forms/model_forms.py:1535
 msgid "Console server port"
 msgstr "Port du serveur de console"
 
-#: netbox/dcim/forms/model_forms.py:1542
+#: netbox/dcim/forms/model_forms.py:1543
 msgid "Front port"
 msgstr "Port avant"
 
-#: netbox/dcim/forms/model_forms.py:1558
+#: netbox/dcim/forms/model_forms.py:1559
 msgid "Power outlet"
 msgstr "prise de courant"
 
-#: netbox/dcim/forms/model_forms.py:1578
+#: netbox/dcim/forms/model_forms.py:1579
 #: netbox/templates/dcim/inventoryitem.html:17
 msgid "Inventory Item"
 msgstr "Article d'inventaire"
 
-#: netbox/dcim/forms/model_forms.py:1651
+#: netbox/dcim/forms/model_forms.py:1652
 #: netbox/templates/dcim/inventoryitemrole.html:15
 msgid "Inventory Item Role"
 msgstr "Rôle de l'article d'inventaire"
 
-#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190
-#: netbox/templates/dcim/virtualdevicecontext.html:30
-#: netbox/templates/virtualization/virtualmachine.html:52
-msgid "Primary IPv4"
-msgstr "IPv4 principal"
-
-#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206
-#: netbox/templates/dcim/virtualdevicecontext.html:41
-#: netbox/templates/virtualization/virtualmachine.html:68
-msgid "Primary IPv6"
-msgstr "IPv6 principal"
-
 #: netbox/dcim/forms/object_create.py:48
 #: netbox/dcim/forms/object_create.py:199
 #: netbox/dcim/forms/object_create.py:355
@@ -5068,7 +5083,7 @@ msgstr ""
 "Le nombre de ports frontaux à créer ({frontport_count}) doit correspondre au"
 " nombre sélectionné de positions des ports arrière ({rearport_count})."
 
-#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029
+#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1030
 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53
 #: netbox/templates/dcim/virtualchassis_edit.html:47
 #: netbox/templates/ipam/fhrpgroup.html:38
@@ -6700,7 +6715,7 @@ msgstr "Modèle de configuration"
 msgid "Site Group"
 msgstr "Groupe de sites"
 
-#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064
+#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1065
 #: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306
 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356
 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446
@@ -6709,12 +6724,12 @@ msgstr "Groupe de sites"
 msgid "IP Address"
 msgstr "Adresse IP"
 
-#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068
+#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1069
 #: netbox/virtualization/tables/virtualmachines.py:86
 msgid "IPv4 Address"
 msgstr "Adresse IPv4"
 
-#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072
+#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1073
 #: netbox/virtualization/tables/virtualmachines.py:90
 msgid "IPv6 Address"
 msgstr "Adresse IPv6"
@@ -6752,7 +6767,7 @@ msgstr "Ports d'alimentation"
 msgid "Power outlets"
 msgstr "Prises de courant"
 
-#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077
+#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1078
 #: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042
 #: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977
 #: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250
@@ -6859,28 +6874,28 @@ msgstr "Gestion uniquement"
 msgid "VDCs"
 msgstr "VDC"
 
-#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53
+#: netbox/dcim/tables/devices.py:870 netbox/templates/dcim/modulebay.html:53
 msgid "Installed Module"
 msgstr "Module installé"
 
-#: netbox/dcim/tables/devices.py:872
+#: netbox/dcim/tables/devices.py:873
 msgid "Module Serial"
 msgstr "Série du module"
 
-#: netbox/dcim/tables/devices.py:876
+#: netbox/dcim/tables/devices.py:877
 msgid "Module Asset Tag"
 msgstr "Étiquette d'actif du module"
 
-#: netbox/dcim/tables/devices.py:885
+#: netbox/dcim/tables/devices.py:886
 msgid "Module Status"
 msgstr "État du module"
 
-#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313
+#: netbox/dcim/tables/devices.py:941 netbox/dcim/tables/devicetypes.py:313
 #: netbox/templates/dcim/inventoryitem.html:40
 msgid "Component"
 msgstr "Composant"
 
-#: netbox/dcim/tables/devices.py:996
+#: netbox/dcim/tables/devices.py:997
 msgid "Items"
 msgstr "Objets"
 
@@ -10539,7 +10554,7 @@ msgid "Range boundaries must be defined as integers."
 msgstr ""
 "Les limites des plages doivent être définies sous forme de nombres entiers."
 
-#: 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 "{class_name} doit implémenter get_view_name ()"
@@ -10897,35 +10912,35 @@ msgstr "Champ personnalisé '{name}'doit avoir une valeur unique."
 msgid "Missing required custom field '{name}'."
 msgstr "Champ personnalisé obligatoire manquant '{name}'."
 
-#: netbox/netbox/models/features.py:467
+#: netbox/netbox/models/features.py:462
 msgid "Remote data source"
 msgstr "Source de données distante"
 
-#: netbox/netbox/models/features.py:477
+#: netbox/netbox/models/features.py:472
 msgid "data path"
 msgstr "chemin de données"
 
-#: netbox/netbox/models/features.py:481
+#: netbox/netbox/models/features.py:476
 msgid "Path to remote file (relative to data source root)"
 msgstr ""
 "Chemin vers le fichier distant (par rapport à la racine de la source de "
 "données)"
 
-#: netbox/netbox/models/features.py:484
+#: netbox/netbox/models/features.py:479
 msgid "auto sync enabled"
 msgstr "synchronisation automatique activée"
 
-#: netbox/netbox/models/features.py:486
+#: netbox/netbox/models/features.py:481
 msgid "Enable automatic synchronization of data when the data file is updated"
 msgstr ""
 "Activer la synchronisation automatique des données lors de la mise à jour du"
 " fichier de données"
 
-#: netbox/netbox/models/features.py:489
+#: netbox/netbox/models/features.py:484
 msgid "date synced"
 msgstr "date de synchronisation"
 
-#: netbox/netbox/models/features.py:583
+#: netbox/netbox/models/features.py:578
 #, python-brace-format
 msgid "{class_name} must implement a sync_data() method."
 msgstr "{class_name} doit implémenter une méthode sync_data ()."
@@ -12676,7 +12691,7 @@ msgid "Parent Bay"
 msgstr "Baie Parent"
 
 #: netbox/templates/dcim/device_edit.html:48
-#: netbox/utilities/templates/form_helpers/render_field.html:20
+#: netbox/utilities/templates/form_helpers/render_field.html:22
 msgid "Regenerate Slug"
 msgstr "Régénérez le slug"
 
@@ -13021,17 +13036,17 @@ msgstr "Poids maximum"
 msgid "Total Weight"
 msgstr "Poids total"
 
-#: netbox/templates/dcim/rack.html:121
+#: netbox/templates/dcim/rack.html:125
 #: netbox/templates/dcim/rack_elevation_list.html:15
 msgid "Images and Labels"
 msgstr "Images et étiquettes"
 
-#: netbox/templates/dcim/rack.html:122
+#: netbox/templates/dcim/rack.html:126
 #: netbox/templates/dcim/rack_elevation_list.html:16
 msgid "Images only"
 msgstr "Images uniquement"
 
-#: netbox/templates/dcim/rack.html:123
+#: netbox/templates/dcim/rack.html:127
 #: netbox/templates/dcim/rack_elevation_list.html:17
 msgid "Labels only"
 msgstr "Étiquettes uniquement"
@@ -15329,15 +15344,15 @@ msgstr "Désabonnement"
 msgid "Subscribe"
 msgstr "Souscrire"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:39
+#: netbox/utilities/templates/form_helpers/render_field.html:41
 msgid "Copy to clipboard"
 msgstr "Copier dans le presse-papiers"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:55
+#: netbox/utilities/templates/form_helpers/render_field.html:57
 msgid "This field is required"
 msgstr "Ce champ est obligatoire"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:68
+#: netbox/utilities/templates/form_helpers/render_field.html:70
 msgid "Set Null"
 msgstr "Définir à Null"
 

BIN
netbox/translations/it/LC_MESSAGES/django.mo


+ 179 - 164
netbox/translations/it/LC_MESSAGES/django.po

@@ -14,7 +14,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-25 05:02+0000\n"
 "PO-Revision-Date: 2023-10-30 17:48+0000\n"
 "Last-Translator: Jeremy Stretch, 2024\n"
 "Language-Team: Italian (https://app.transifex.com/netbox-community/teams/178115/it/)\n"
@@ -91,8 +91,8 @@ msgstr "La tua password è stata cambiata con successo."
 
 #: 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:1522
+#: netbox/dcim/choices.py:1598 netbox/dcim/choices.py:1648
 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45
 #: netbox/vpn/choices.py:18
 msgid "Planned"
@@ -105,7 +105,7 @@ msgstr "Approvvigionamento"
 #: 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:1597 netbox/dcim/choices.py:1647
 #: 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
@@ -116,8 +116,8 @@ msgid "Active"
 msgstr "Attivo"
 
 #: 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:1596
+#: netbox/dcim/choices.py:1649 netbox/virtualization/choices.py:24
 #: netbox/virtualization/choices.py:43
 msgid "Offline"
 msgstr "Offline"
@@ -130,7 +130,7 @@ msgstr "Deprovisioning"
 msgid "Decommissioned"
 msgstr "Dismesso"
 
-#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605
+#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1609
 #: netbox/tenancy/choices.py:17
 msgid "Primary"
 msgstr "Primaria"
@@ -336,7 +336,7 @@ msgstr "Terminazione A (ID)"
 #: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391
 #: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498
 #: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703
-#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277
+#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:280
 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167
 #: netbox/templates/htmx/object_selector.html:28
 #: netbox/templates/inc/filter_list.html:45
@@ -574,8 +574,8 @@ msgstr "ID del servizio"
 #: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200
 #: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064
 #: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479
-#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757
-#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250
+#: netbox/dcim/tables/devices.py:701 netbox/dcim/tables/devices.py:758
+#: netbox/dcim/tables/devices.py:1000 netbox/dcim/tables/devicetypes.py:250
 #: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33
 #: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443
 #: netbox/templates/circuits/circuittype.html:30
@@ -612,7 +612,7 @@ msgstr "Colore"
 #: 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
-#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77
+#: netbox/dcim/tables/devices.py:811 netbox/dcim/tables/power.py:77
 #: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42
 #: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465
 #: netbox/netbox/tables/tables.py:240
@@ -669,8 +669,8 @@ msgstr "Provider account "
 #: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799
 #: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958
 #: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170
-#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813
-#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69
+#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:814
+#: netbox/dcim/tables/devices.py:1060 netbox/dcim/tables/modules.py:69
 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126
 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138
 #: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305
@@ -819,7 +819,7 @@ msgstr "Parametri del servizio"
 #: netbox/circuits/forms/model_forms.py:183
 #: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181
 #: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323
-#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691
+#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1692
 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81
 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136
 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232
@@ -1402,11 +1402,11 @@ msgstr "reti di fornitori"
 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289
 #: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433
 #: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531
-#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727
-#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837
-#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970
-#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019
-#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32
+#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:728
+#: netbox/dcim/tables/devices.py:775 netbox/dcim/tables/devices.py:838
+#: netbox/dcim/tables/devices.py:908 netbox/dcim/tables/devices.py:971
+#: netbox/dcim/tables/devices.py:991 netbox/dcim/tables/devices.py:1020
+#: netbox/dcim/tables/devices.py:1050 netbox/dcim/tables/devicetypes.py:32
 #: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62
 #: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113
 #: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51
@@ -1544,7 +1544,7 @@ msgstr "Tasso di impegno"
 #: netbox/circuits/tables/circuits.py:80
 #: netbox/circuits/tables/providers.py:48
 #: netbox/circuits/tables/providers.py:82
-#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032
+#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1033
 #: 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:84
@@ -1625,7 +1625,7 @@ msgstr "Completato"
 #: 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:1599 netbox/virtualization/choices.py:47
 msgid "Failed"
 msgstr "Fallito"
 
@@ -1950,7 +1950,7 @@ msgstr ""
 msgid "Rack Elevations"
 msgstr "Elevazioni dei rack"
 
-#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506
+#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1510
 #: 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
@@ -2532,7 +2532,7 @@ msgid "Staging"
 msgstr "Messa in scena"
 
 #: 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:1523
 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48
 msgid "Decommissioning"
 msgstr "Smantellamento"
@@ -2596,7 +2596,7 @@ msgstr "Obsoleto"
 msgid "Millimeters"
 msgstr "Millimetri"
 
-#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541
+#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1545
 msgid "Inches"
 msgstr "Pollici"
 
@@ -2618,9 +2618,9 @@ msgstr "Posteriore/anteriore"
 #: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234
 #: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93
 #: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062
-#: netbox/dcim/forms/model_forms.py:1501
+#: netbox/dcim/forms/model_forms.py:1502
 #: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653
-#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950
+#: netbox/dcim/tables/devices.py:866 netbox/dcim/tables/devices.py:951
 #: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59
 #: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44
 #: netbox/templates/dcim/interface.html:102
@@ -2650,15 +2650,15 @@ msgstr "Genitore"
 msgid "Child"
 msgstr "Bambino"
 
-#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339
-#: netbox/templates/dcim/rack.html:129
+#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:340
+#: netbox/templates/dcim/rack.html:133
 #: netbox/templates/dcim/rack_elevation_list.html:20
 #: netbox/templates/dcim/rackreservation.html:76
 msgid "Front"
 msgstr "Anteriore"
 
-#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345
-#: netbox/templates/dcim/rack.html:135
+#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:346
+#: netbox/templates/dcim/rack.html:139
 #: netbox/templates/dcim/rack_elevation_list.html:21
 #: netbox/templates/dcim/rackreservation.html:82
 msgid "Rear"
@@ -2686,7 +2686,7 @@ msgid "Side to rear"
 msgstr "Da lato a retro"
 
 #: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253
-#: netbox/dcim/choices.py:1291
+#: netbox/dcim/choices.py:1295
 msgid "Passive"
 msgstr "Passivo"
 
@@ -2694,15 +2694,15 @@ msgstr "Passivo"
 msgid "Mixed"
 msgstr "Misto"
 
-#: 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 "NEMA (non bloccante)"
 
-#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748
+#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:749
 msgid "NEMA (Locking)"
 msgstr "NEMA (bloccaggio)"
 
-#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772
+#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:773
 msgid "California Style"
 msgstr "Stile californiano"
 
@@ -2710,42 +2710,42 @@ msgstr "Stile californiano"
 msgid "International/ITA"
 msgstr "Internazionale/ITA"
 
-#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807
+#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:808
 msgid "Proprietary"
 msgstr "Proprietario"
 
-#: 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:1211 netbox/dcim/choices.py:1213
+#: netbox/dcim/choices.py:1439 netbox/dcim/choices.py:1441
 #: netbox/netbox/navigation/menu.py:200
 msgid "Other"
 msgstr "Altro"
 
-#: netbox/dcim/choices.py:780
+#: netbox/dcim/choices.py:781
 msgid "ITA/International"
 msgstr "ITA/Internazionale"
 
-#: netbox/dcim/choices.py:846
+#: netbox/dcim/choices.py:848
 msgid "Physical"
 msgstr "Fisico"
 
-#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013
+#: netbox/dcim/choices.py:849 netbox/dcim/choices.py:1016
 msgid "Virtual"
 msgstr "Virtuale"
 
-#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086
+#: netbox/dcim/choices.py:850 netbox/dcim/choices.py:1089
 #: 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/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1397
 #: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144
 #: netbox/templates/dcim/interface.html:210
 msgid "Wireless"
 msgstr "Wireless"
 
-#: netbox/dcim/choices.py:1011
+#: netbox/dcim/choices.py:1014
 msgid "Virtual interfaces"
 msgstr "Interfacce virtuali"
 
-#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410
+#: netbox/dcim/choices.py:1017 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
@@ -2755,27 +2755,27 @@ msgstr "Interfacce virtuali"
 msgid "Bridge"
 msgstr "ponte"
 
-#: netbox/dcim/choices.py:1015
+#: netbox/dcim/choices.py:1018
 msgid "Link Aggregation Group (LAG)"
 msgstr "Link Aggregation Group (GAL)"
 
-#: netbox/dcim/choices.py:1019
+#: netbox/dcim/choices.py:1022
 msgid "Ethernet (fixed)"
 msgstr "Ethernet (fisso)"
 
-#: netbox/dcim/choices.py:1034
+#: netbox/dcim/choices.py:1037
 msgid "Ethernet (modular)"
 msgstr "Ethernet (modulare)"
 
-#: netbox/dcim/choices.py:1070
+#: netbox/dcim/choices.py:1073
 msgid "Ethernet (backplane)"
 msgstr "Ethernet (backplane)"
 
-#: netbox/dcim/choices.py:1101
+#: netbox/dcim/choices.py:1105
 msgid "Cellular"
 msgstr "Cellulare"
 
-#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383
+#: netbox/dcim/choices.py:1157 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
@@ -2783,129 +2783,130 @@ msgstr "Cellulare"
 msgid "Serial"
 msgstr "Seriale"
 
-#: netbox/dcim/choices.py:1168
+#: netbox/dcim/choices.py:1172
 msgid "Coaxial"
 msgstr "Coassiale"
 
-#: netbox/dcim/choices.py:1188
+#: netbox/dcim/choices.py:1192
 msgid "Stacking"
 msgstr "impilamento"
 
-#: netbox/dcim/choices.py:1238
+#: netbox/dcim/choices.py:1242
 msgid "Half"
 msgstr "Metà"
 
-#: netbox/dcim/choices.py:1239
+#: netbox/dcim/choices.py:1243
 msgid "Full"
 msgstr "Completo"
 
-#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31
+#: netbox/dcim/choices.py:1244 netbox/netbox/preferences.py:31
 #: netbox/wireless/choices.py:480
 msgid "Auto"
 msgstr "Auto"
 
-#: netbox/dcim/choices.py:1251
+#: netbox/dcim/choices.py:1255
 msgid "Access"
 msgstr "Accesso"
 
-#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172
+#: netbox/dcim/choices.py:1256 netbox/ipam/tables/vlans.py:172
 #: netbox/ipam/tables/vlans.py:217
 #: netbox/templates/dcim/inc/interface_vlans_table.html:7
 msgid "Tagged"
 msgstr "Taggato"
 
-#: netbox/dcim/choices.py:1253
+#: netbox/dcim/choices.py:1257
 msgid "Tagged (All)"
 msgstr "Contrassegnati (tutti)"
 
-#: netbox/dcim/choices.py:1282
+#: netbox/dcim/choices.py:1286
 msgid "IEEE Standard"
 msgstr "Norma IEEE"
 
-#: netbox/dcim/choices.py:1293
+#: netbox/dcim/choices.py:1297
 msgid "Passive 24V (2-pair)"
 msgstr "24V passivo (2 coppie)"
 
-#: netbox/dcim/choices.py:1294
+#: netbox/dcim/choices.py:1298
 msgid "Passive 24V (4-pair)"
 msgstr "24V passivo (4 coppie)"
 
-#: netbox/dcim/choices.py:1295
+#: netbox/dcim/choices.py:1299
 msgid "Passive 48V (2-pair)"
 msgstr "48V passivo (2 coppie)"
 
-#: netbox/dcim/choices.py:1296
+#: netbox/dcim/choices.py:1300
 msgid "Passive 48V (4-pair)"
 msgstr "48V passivo (4 coppie)"
 
-#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476
+#: netbox/dcim/choices.py:1370 netbox/dcim/choices.py:1480
 msgid "Copper"
 msgstr "Rame"
 
-#: netbox/dcim/choices.py:1389
+#: netbox/dcim/choices.py:1393
 msgid "Fiber Optic"
 msgstr "Fibra ottica"
 
-#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505
+#: netbox/dcim/choices.py:1426 netbox/dcim/choices.py:1509
 msgid "USB"
 msgstr "USB"
 
-#: netbox/dcim/choices.py:1492
+#: netbox/dcim/choices.py:1496
 msgid "Fiber"
 msgstr "Fibra"
 
-#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227
+#: netbox/dcim/choices.py:1521 netbox/dcim/forms/filtersets.py:1227
 msgid "Connected"
 msgstr "Connesso"
 
-#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497
+#: netbox/dcim/choices.py:1540 netbox/wireless/choices.py:497
 msgid "Kilometers"
 msgstr "Chilometri"
 
-#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65
+#: netbox/dcim/choices.py:1541 netbox/templates/dcim/cable_trace.html:65
 #: netbox/wireless/choices.py:498
 msgid "Meters"
 msgstr "Metri"
 
-#: netbox/dcim/choices.py:1538
+#: netbox/dcim/choices.py:1542
 msgid "Centimeters"
 msgstr "Centimetri"
 
-#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499
+#: netbox/dcim/choices.py:1543 netbox/wireless/choices.py:499
 msgid "Miles"
 msgstr "Miglia"
 
-#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66
+#: netbox/dcim/choices.py:1544 netbox/templates/dcim/cable_trace.html:66
 #: netbox/wireless/choices.py:500
 msgid "Feet"
 msgstr "Piedi"
 
-#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327
-#: netbox/templates/dcim/rack.html:106
+#: netbox/dcim/choices.py:1560 netbox/templates/dcim/device.html:327
+#: netbox/templates/dcim/rack.html:107
 msgid "Kilograms"
 msgstr "Chilogrammi"
 
-#: netbox/dcim/choices.py:1557
+#: netbox/dcim/choices.py:1561
 msgid "Grams"
 msgstr "Grammi"
 
-#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107
+#: netbox/dcim/choices.py:1562 netbox/templates/dcim/device.html:328
+#: netbox/templates/dcim/rack.html:108
 msgid "Pounds"
 msgstr "Sterline"
 
-#: netbox/dcim/choices.py:1559
+#: netbox/dcim/choices.py:1563
 msgid "Ounces"
 msgstr "Once"
 
-#: netbox/dcim/choices.py:1606
+#: netbox/dcim/choices.py:1610
 msgid "Redundant"
 msgstr "Ridondante"
 
-#: netbox/dcim/choices.py:1627
+#: netbox/dcim/choices.py:1631
 msgid "Single phase"
 msgstr "Monofase"
 
-#: netbox/dcim/choices.py:1628
+#: netbox/dcim/choices.py:1632
 msgid "Three-phase"
 msgstr "Trifase"
 
@@ -3275,7 +3276,7 @@ msgstr "VID assegnato"
 
 #: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489
 #: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428
-#: netbox/dcim/forms/model_forms.py:1377
+#: netbox/dcim/forms/model_forms.py:1378
 #: netbox/dcim/models/device_components.py:712
 #: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316
 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483
@@ -3354,7 +3355,7 @@ msgid "LAG interface (ID)"
 msgstr "Interfaccia LAG (ID)"
 
 #: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725
-#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689
+#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1690
 #: netbox/templates/dcim/virtualdevicecontext.html:15
 msgid "Virtual Device Context"
 msgstr "Contesto del dispositivo virtuale"
@@ -3429,7 +3430,7 @@ msgstr "Etichette"
 #: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546
 #: netbox/dcim/forms/object_create.py:197
 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165
-#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247
+#: netbox/dcim/tables/devices.py:704 netbox/dcim/tables/devicetypes.py:247
 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131
 #: netbox/templates/dcim/modulebay.html:38
 #: netbox/templates/dcim/virtualchassis.html:66
@@ -3476,9 +3477,9 @@ msgstr "Fuso orario"
 #: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337
 #: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395
 #: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075
-#: netbox/dcim/forms/model_forms.py:1514
+#: netbox/dcim/forms/model_forms.py:1515
 #: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96
-#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936
+#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:937
 #: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309
 #: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60
 #: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132
@@ -3602,9 +3603,9 @@ msgstr "Numerazione"
 #: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367
 #: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534
 #: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070
-#: netbox/dcim/forms/model_forms.py:1509
+#: netbox/dcim/forms/model_forms.py:1510
 #: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169
-#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933
+#: netbox/dcim/tables/devices.py:806 netbox/dcim/tables/devices.py:934
 #: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129
 #: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260
 #: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358
@@ -3694,7 +3695,7 @@ msgstr "cremagliera"
 #: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398
 #: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608
 #: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942
-#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579
+#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1580
 #: netbox/templates/dcim/device_edit.html:20
 msgid "Hardware"
 msgstr "Hardware"
@@ -3802,15 +3803,15 @@ msgstr "piattaforma"
 #: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616
 #: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633
 #: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208
-#: netbox/dcim/forms/model_forms.py:1663
+#: netbox/dcim/forms/model_forms.py:1664
 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22
 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60
 #: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371
 #: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454
 #: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594
-#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750
-#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857
-#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053
+#: netbox/dcim/tables/devices.py:694 netbox/dcim/tables/devices.py:751
+#: netbox/dcim/tables/devices.py:798 netbox/dcim/tables/devices.py:858
+#: netbox/dcim/tables/devices.py:927 netbox/dcim/tables/devices.py:1054
 #: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321
 #: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481
 #: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319
@@ -3954,7 +3955,7 @@ msgstr "Potenza assorbita allocata (watt)"
 
 #: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786
 #: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278
-#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55
+#: netbox/dcim/forms/model_forms.py:1567 netbox/dcim/forms/object_import.py:55
 msgid "Power port"
 msgstr "Porta di alimentazione"
 
@@ -4042,14 +4043,14 @@ msgstr "modalità"
 msgid "VLAN group"
 msgstr "Gruppo VLAN"
 
-#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359
+#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1360
 #: netbox/dcim/tables/devices.py:579
 #: netbox/virtualization/forms/bulk_edit.py:248
 #: netbox/virtualization/forms/model_forms.py:326
 msgid "Untagged VLAN"
 msgstr "VLAN senza tag"
 
-#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368
+#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1369
 #: netbox/dcim/tables/devices.py:585
 #: netbox/virtualization/forms/bulk_edit.py:256
 #: netbox/virtualization/forms/model_forms.py:335
@@ -4068,7 +4069,7 @@ msgid "Wireless LANs"
 msgstr "LAN wireless"
 
 #: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328
-#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285
+#: netbox/dcim/forms/model_forms.py:1390 netbox/ipam/forms/bulk_edit.py:285
 #: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169
 #: netbox/templates/dcim/interface.html:122
 #: netbox/templates/ipam/prefix.html:95
@@ -4077,24 +4078,24 @@ msgid "Addressing"
 msgstr "Indirizzamento"
 
 #: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720
-#: netbox/dcim/forms/model_forms.py:1390
+#: netbox/dcim/forms/model_forms.py:1391
 #: netbox/virtualization/forms/model_forms.py:350
 msgid "Operation"
 msgstr "Operazione"
 
 #: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329
-#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392
+#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1393
 msgid "PoE"
 msgstr "PoE"
 
-#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391
+#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1392
 #: netbox/templates/dcim/interface.html:99
 #: netbox/virtualization/forms/bulk_edit.py:267
 #: netbox/virtualization/forms/model_forms.py:351
 msgid "Related Interfaces"
 msgstr "Interfacce correlate"
 
-#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393
+#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1394
 #: netbox/virtualization/forms/bulk_edit.py:268
 #: netbox/virtualization/forms/model_forms.py:352
 msgid "802.1Q Switching"
@@ -4436,7 +4437,7 @@ msgid "VDC {vdc} is not assigned to device {device}"
 msgstr "VDC {vdc} non è assegnato al dispositivo {device}"
 
 #: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000
-#: netbox/dcim/forms/model_forms.py:1574
+#: netbox/dcim/forms/model_forms.py:1575
 #: netbox/dcim/forms/object_import.py:117
 msgid "Rear port"
 msgstr "Porta posteriore"
@@ -4450,7 +4451,7 @@ msgstr "Porta posteriore corrispondente"
 msgid "Physical medium classification"
 msgstr "Classificazione del mezzo fisico"
 
-#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818
+#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:819
 msgid "Installed device"
 msgstr "Dispositivo installato"
 
@@ -4540,7 +4541,7 @@ msgid "{side_upper} side termination not found: {device} {name}"
 msgstr "{side_upper} terminazione laterale non trovata: {device} {name}"
 
 #: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785
-#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132
+#: netbox/dcim/tables/devices.py:1024 netbox/templates/dcim/device.html:132
 #: netbox/templates/dcim/virtualchassis.html:27
 #: netbox/templates/dcim/virtualchassis.html:67
 msgid "Master"
@@ -4570,6 +4571,28 @@ msgstr "Tipo di alimentazione (AC/DC)"
 msgid "Single or three-phase"
 msgstr "Monofase o trifase"
 
+#: netbox/dcim/forms/bulk_import.py:1439 netbox/dcim/forms/model_forms.py:1670
+#: netbox/templates/dcim/device.html:190
+#: netbox/templates/dcim/virtualdevicecontext.html:30
+#: netbox/templates/virtualization/virtualmachine.html:52
+msgid "Primary IPv4"
+msgstr "IPv4 primario"
+
+#: netbox/dcim/forms/bulk_import.py:1443
+msgid "IPv4 address with mask, e.g. 1.2.3.4/24"
+msgstr "Indirizzo IPv4 con maschera, ad esempio 1.2.3.4/24"
+
+#: netbox/dcim/forms/bulk_import.py:1446 netbox/dcim/forms/model_forms.py:1679
+#: netbox/templates/dcim/device.html:206
+#: netbox/templates/dcim/virtualdevicecontext.html:41
+#: netbox/templates/virtualization/virtualmachine.html:68
+msgid "Primary IPv6"
+msgstr "IPv6 primario"
+
+#: netbox/dcim/forms/bulk_import.py:1450
+msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64"
+msgstr "Indirizzo IPv6 con lunghezza del prefisso, ad esempio 2001:db8: :1/64"
+
 #: netbox/dcim/forms/common.py:24 netbox/dcim/models/device_components.py:528
 #: netbox/templates/dcim/interface.html:57
 #: netbox/templates/virtualization/vminterface.html:55
@@ -4733,7 +4756,7 @@ msgstr "Gentile"
 msgid "Mgmt only"
 msgstr "Solo gestione"
 
-#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382
+#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1383
 #: netbox/dcim/models/device_components.py:630
 #: netbox/templates/dcim/interface.html:129
 msgid "WWN"
@@ -4767,7 +4790,7 @@ msgstr "Potenza di trasmissione (dBm)"
 msgid "Cable"
 msgstr "Cavo"
 
-#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945
+#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:946
 msgid "Discovered"
 msgstr "Scoperto"
 
@@ -4869,8 +4892,8 @@ msgstr "Modello di porta di alimentazione"
 msgid "Rear port template"
 msgstr "Modello di porta posteriore"
 
-#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387
-#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582
+#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1388
+#: netbox/dcim/forms/model_forms.py:1551 netbox/dcim/forms/model_forms.py:1583
 #: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318
 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289
 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372
@@ -4894,7 +4917,7 @@ msgstr "Modello di porta posteriore"
 msgid "Interface"
 msgstr "Interfaccia"
 
-#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583
+#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1584
 #: netbox/dcim/tables/connections.py:27
 #: netbox/templates/dcim/consoleport.html:17
 #: netbox/templates/dcim/consoleserverport.html:74
@@ -4902,14 +4925,14 @@ msgstr "Interfaccia"
 msgid "Console Port"
 msgstr "Porta console"
 
-#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584
+#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1585
 #: netbox/templates/dcim/consoleport.html:73
 #: netbox/templates/dcim/consoleserverport.html:17
 #: netbox/templates/dcim/frontport.html:109
 msgid "Console Server Port"
 msgstr "Porta Console Server"
 
-#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585
+#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1586
 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52
 #: netbox/templates/dcim/consoleport.html:76
 #: netbox/templates/dcim/consoleserverport.html:77
@@ -4920,8 +4943,8 @@ msgstr "Porta Console Server"
 msgid "Front Port"
 msgstr "Porta anteriore"
 
-#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586
-#: netbox/dcim/tables/devices.py:706
+#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1587
+#: netbox/dcim/tables/devices.py:707
 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53
 #: netbox/templates/dcim/consoleport.html:79
 #: netbox/templates/dcim/consoleserverport.html:80
@@ -4933,24 +4956,24 @@ msgstr "Porta anteriore"
 msgid "Rear Port"
 msgstr "Porta posteriore"
 
-#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587
+#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1588
 #: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512
 #: netbox/templates/dcim/poweroutlet.html:44
 #: netbox/templates/dcim/powerport.html:17
 msgid "Power Port"
 msgstr "Porta di alimentazione"
 
-#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588
+#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1589
 #: netbox/templates/dcim/poweroutlet.html:17
 #: netbox/templates/dcim/powerport.html:77
 msgid "Power Outlet"
 msgstr "Presa di corrente"
 
-#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590
+#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1591
 msgid "Component Assignment"
 msgstr "Assegnazione dei componenti"
 
-#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637
+#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1638
 msgid "An InventoryItem can only be assigned to a single component."
 msgstr "Un InventoryItem può essere assegnato solo a un singolo componente."
 
@@ -4958,11 +4981,15 @@ msgstr "Un InventoryItem può essere assegnato solo a un singolo componente."
 msgid "LAG interface"
 msgstr "Interfaccia LAG"
 
-#: netbox/dcim/forms/model_forms.py:1483
+#: netbox/dcim/forms/model_forms.py:1355
+msgid "Filter VLANs available for assignment by group."
+msgstr "Filtra le VLAN disponibili per l'assegnazione per gruppo."
+
+#: netbox/dcim/forms/model_forms.py:1484
 msgid "Child Device"
 msgstr "Dispositivo per bambini"
 
-#: netbox/dcim/forms/model_forms.py:1484
+#: netbox/dcim/forms/model_forms.py:1485
 msgid ""
 "Child devices must first be created and assigned to the site and rack of the"
 " parent device."
@@ -4970,44 +4997,32 @@ msgstr ""
 "I dispositivi secondari devono prima essere creati e assegnati al sito e al "
 "rack del dispositivo principale."
 
-#: netbox/dcim/forms/model_forms.py:1526
+#: netbox/dcim/forms/model_forms.py:1527
 msgid "Console port"
 msgstr "Porta console"
 
-#: netbox/dcim/forms/model_forms.py:1534
+#: netbox/dcim/forms/model_forms.py:1535
 msgid "Console server port"
 msgstr "Porta console server"
 
-#: netbox/dcim/forms/model_forms.py:1542
+#: netbox/dcim/forms/model_forms.py:1543
 msgid "Front port"
 msgstr "Porta anteriore"
 
-#: netbox/dcim/forms/model_forms.py:1558
+#: netbox/dcim/forms/model_forms.py:1559
 msgid "Power outlet"
 msgstr "Presa di corrente"
 
-#: netbox/dcim/forms/model_forms.py:1578
+#: netbox/dcim/forms/model_forms.py:1579
 #: netbox/templates/dcim/inventoryitem.html:17
 msgid "Inventory Item"
 msgstr "Articolo di inventario"
 
-#: netbox/dcim/forms/model_forms.py:1651
+#: netbox/dcim/forms/model_forms.py:1652
 #: netbox/templates/dcim/inventoryitemrole.html:15
 msgid "Inventory Item Role"
 msgstr "Ruolo dell'articolo di inventario"
 
-#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190
-#: netbox/templates/dcim/virtualdevicecontext.html:30
-#: netbox/templates/virtualization/virtualmachine.html:52
-msgid "Primary IPv4"
-msgstr "IPv4 primario"
-
-#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206
-#: netbox/templates/dcim/virtualdevicecontext.html:41
-#: netbox/templates/virtualization/virtualmachine.html:68
-msgid "Primary IPv6"
-msgstr "IPv6 primario"
-
 #: netbox/dcim/forms/object_create.py:48
 #: netbox/dcim/forms/object_create.py:199
 #: netbox/dcim/forms/object_create.py:355
@@ -5068,7 +5083,7 @@ msgstr ""
 " al numero selezionato di posizioni delle porte posteriori "
 "({rearport_count})."
 
-#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029
+#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1030
 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53
 #: netbox/templates/dcim/virtualchassis_edit.html:47
 #: netbox/templates/ipam/fhrpgroup.html:38
@@ -6717,7 +6732,7 @@ msgstr "Modello di configurazione"
 msgid "Site Group"
 msgstr "Gruppo del sito"
 
-#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064
+#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1065
 #: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306
 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356
 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446
@@ -6726,12 +6741,12 @@ msgstr "Gruppo del sito"
 msgid "IP Address"
 msgstr "Indirizzo IP"
 
-#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068
+#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1069
 #: netbox/virtualization/tables/virtualmachines.py:86
 msgid "IPv4 Address"
 msgstr "Indirizzo IPv4"
 
-#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072
+#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1073
 #: netbox/virtualization/tables/virtualmachines.py:90
 msgid "IPv6 Address"
 msgstr "Indirizzo IPv6"
@@ -6769,7 +6784,7 @@ msgstr "Porte di alimentazione"
 msgid "Power outlets"
 msgstr "Prese di corrente"
 
-#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077
+#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1078
 #: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042
 #: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977
 #: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250
@@ -6876,28 +6891,28 @@ msgstr "Solo gestione"
 msgid "VDCs"
 msgstr "VDC"
 
-#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53
+#: netbox/dcim/tables/devices.py:870 netbox/templates/dcim/modulebay.html:53
 msgid "Installed Module"
 msgstr "Modulo installato"
 
-#: netbox/dcim/tables/devices.py:872
+#: netbox/dcim/tables/devices.py:873
 msgid "Module Serial"
 msgstr "Modulo seriale"
 
-#: netbox/dcim/tables/devices.py:876
+#: netbox/dcim/tables/devices.py:877
 msgid "Module Asset Tag"
 msgstr "Tag delle risorse del modulo"
 
-#: netbox/dcim/tables/devices.py:885
+#: netbox/dcim/tables/devices.py:886
 msgid "Module Status"
 msgstr "Stato del modulo"
 
-#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313
+#: netbox/dcim/tables/devices.py:941 netbox/dcim/tables/devicetypes.py:313
 #: netbox/templates/dcim/inventoryitem.html:40
 msgid "Component"
 msgstr "Componente"
 
-#: netbox/dcim/tables/devices.py:996
+#: netbox/dcim/tables/devices.py:997
 msgid "Items"
 msgstr "Oggetti"
 
@@ -10532,7 +10547,7 @@ msgstr ""
 msgid "Range boundaries must be defined as integers."
 msgstr "I limiti dell'intervallo devono essere definiti come numeri interi."
 
-#: 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 "{class_name} deve implementare get_view_name ()"
@@ -10889,33 +10904,33 @@ msgstr "Campo personalizzato '{name}'deve avere un valore univoco."
 msgid "Missing required custom field '{name}'."
 msgstr "Campo personalizzato obbligatorio mancante '{name}»."
 
-#: netbox/netbox/models/features.py:467
+#: netbox/netbox/models/features.py:462
 msgid "Remote data source"
 msgstr "Fonte dati remota"
 
-#: netbox/netbox/models/features.py:477
+#: netbox/netbox/models/features.py:472
 msgid "data path"
 msgstr "percorso dati"
 
-#: netbox/netbox/models/features.py:481
+#: netbox/netbox/models/features.py:476
 msgid "Path to remote file (relative to data source root)"
 msgstr "Percorso del file remoto (relativo alla radice dell'origine dati)"
 
-#: netbox/netbox/models/features.py:484
+#: netbox/netbox/models/features.py:479
 msgid "auto sync enabled"
 msgstr "sincronizzazione automatica abilitata"
 
-#: netbox/netbox/models/features.py:486
+#: netbox/netbox/models/features.py:481
 msgid "Enable automatic synchronization of data when the data file is updated"
 msgstr ""
 "Abilita la sincronizzazione automatica dei dati quando il file di dati viene"
 " aggiornato"
 
-#: netbox/netbox/models/features.py:489
+#: netbox/netbox/models/features.py:484
 msgid "date synced"
 msgstr "data sincronizzata"
 
-#: netbox/netbox/models/features.py:583
+#: netbox/netbox/models/features.py:578
 #, python-brace-format
 msgid "{class_name} must implement a sync_data() method."
 msgstr "{class_name} deve implementare un metodo sync_data ()."
@@ -12662,7 +12677,7 @@ msgid "Parent Bay"
 msgstr "Baia dei genitori"
 
 #: netbox/templates/dcim/device_edit.html:48
-#: netbox/utilities/templates/form_helpers/render_field.html:20
+#: netbox/utilities/templates/form_helpers/render_field.html:22
 msgid "Regenerate Slug"
 msgstr "Rigenera la lumaca"
 
@@ -13007,17 +13022,17 @@ msgstr "Peso massimo"
 msgid "Total Weight"
 msgstr "Peso totale"
 
-#: netbox/templates/dcim/rack.html:121
+#: netbox/templates/dcim/rack.html:125
 #: netbox/templates/dcim/rack_elevation_list.html:15
 msgid "Images and Labels"
 msgstr "Immagini ed etichette"
 
-#: netbox/templates/dcim/rack.html:122
+#: netbox/templates/dcim/rack.html:126
 #: netbox/templates/dcim/rack_elevation_list.html:16
 msgid "Images only"
 msgstr "Solo immagini"
 
-#: netbox/templates/dcim/rack.html:123
+#: netbox/templates/dcim/rack.html:127
 #: netbox/templates/dcim/rack_elevation_list.html:17
 msgid "Labels only"
 msgstr "Solo etichette"
@@ -15312,15 +15327,15 @@ msgstr "Annulla l'iscrizione"
 msgid "Subscribe"
 msgstr "Abbonati"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:39
+#: netbox/utilities/templates/form_helpers/render_field.html:41
 msgid "Copy to clipboard"
 msgstr "Copia negli appunti"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:55
+#: netbox/utilities/templates/form_helpers/render_field.html:57
 msgid "This field is required"
 msgstr "Questo campo è obbligatorio"
 
-#: netbox/utilities/templates/form_helpers/render_field.html:68
+#: netbox/utilities/templates/form_helpers/render_field.html:70
 msgid "Set Null"
 msgstr "Imposta Null"
 

BIN
netbox/translations/ja/LC_MESSAGES/django.mo


Некоторые файлы не были показаны из-за большого количества измененных файлов