From 4ca2b21a706f86fdb4ff5bf1940960f73ed74530 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 05:02:35 +0000 Subject: [PATCH 01/32] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 10825 +++++++++-------- 1 file changed, 5765 insertions(+), 5060 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index 7692853f4..4afa28869 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-29 21:00+0000\n" +"POT-Creation-Date: 2024-10-31 05:02+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,7536 +18,8056 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: account/tables.py:27 templates/account/token.html:22 -#: templates/users/token.html:17 users/forms/bulk_import.py:39 -#: users/forms/model_forms.py:112 +#: netbox/account/tables.py:27 netbox/templates/account/token.html:22 +#: netbox/templates/users/token.html:17 netbox/users/forms/bulk_import.py:39 +#: netbox/users/forms/model_forms.py:112 msgid "Key" msgstr "" -#: account/tables.py:31 users/forms/filtersets.py:132 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "" -#: account/tables.py:35 core/choices.py:86 core/tables/jobs.py:29 -#: core/tables/tasks.py:79 extras/tables/tables.py:335 -#: extras/tables/tables.py:566 templates/account/token.html:43 -#: templates/core/configrevision.html:26 -#: templates/core/configrevision_restore.html:12 templates/core/job.html:69 -#: templates/core/rq_task.html:16 templates/core/rq_task.html:73 -#: templates/core/rq_worker.html:14 templates/extras/htmx/script_result.html:12 -#: templates/extras/journalentry.html:22 templates/generic/object.html:58 -#: templates/users/token.html:35 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 +#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision_restore.html:12 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_worker.html:14 +#: netbox/templates/extras/htmx/script_result.html:12 +#: netbox/templates/extras/journalentry.html:22 +#: netbox/templates/generic/object.html:58 netbox/templates/users/token.html:35 msgid "Created" msgstr "" -#: account/tables.py:39 templates/account/token.html:47 -#: templates/users/token.html:39 users/forms/bulk_edit.py:117 -#: users/forms/filtersets.py:136 +#: netbox/account/tables.py:39 netbox/templates/account/token.html:47 +#: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "" -#: account/tables.py:42 users/forms/filtersets.py:141 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "" -#: account/tables.py:45 templates/account/token.html:55 -#: templates/users/token.html:47 users/forms/bulk_edit.py:122 -#: users/forms/model_forms.py:124 +#: netbox/account/tables.py:45 netbox/templates/account/token.html:55 +#: netbox/templates/users/token.html:47 netbox/users/forms/bulk_edit.py:122 +#: netbox/users/forms/model_forms.py:124 msgid "Allowed IPs" msgstr "" -#: account/views.py:114 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "" -#: account/views.py:164 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "" -#: account/views.py:216 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "" -#: account/views.py:239 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" -#: account/views.py:254 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "" -#: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:185 dcim/choices.py:237 dcim/choices.py:1530 -#: dcim/choices.py:1606 dcim/choices.py:1656 virtualization/choices.py:20 -#: virtualization/choices.py:45 vpn/choices.py:18 +#: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:237 netbox/dcim/choices.py:1530 +#: netbox/dcim/choices.py:1606 netbox/dcim/choices.py:1656 +#: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 +#: netbox/vpn/choices.py:18 msgid "Planned" msgstr "" -#: circuits/choices.py:22 netbox/navigation/menu.py:305 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "" -#: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 -#: dcim/choices.py:103 dcim/choices.py:184 dcim/choices.py:236 -#: dcim/choices.py:1605 dcim/choices.py:1655 extras/tables/tables.py:495 -#: ipam/choices.py:31 ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 -#: templates/extras/configcontext.html:25 templates/users/user.html:37 -#: users/forms/bulk_edit.py:38 virtualization/choices.py:22 -#: virtualization/choices.py:44 vpn/choices.py:19 wireless/choices.py:25 +#: 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:236 +#: netbox/dcim/choices.py:1605 netbox/dcim/choices.py:1655 +#: 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 +#: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 +#: netbox/virtualization/choices.py:22 netbox/virtualization/choices.py:44 +#: netbox/vpn/choices.py:19 netbox/wireless/choices.py:25 msgid "Active" msgstr "" -#: circuits/choices.py:24 dcim/choices.py:183 dcim/choices.py:235 -#: dcim/choices.py:1604 dcim/choices.py:1657 virtualization/choices.py:24 -#: virtualization/choices.py:43 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:235 netbox/dcim/choices.py:1604 +#: netbox/dcim/choices.py:1657 netbox/virtualization/choices.py:24 +#: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "" -#: circuits/choices.py:25 +#: netbox/circuits/choices.py:25 msgid "Deprovisioning" msgstr "" -#: circuits/choices.py:26 +#: netbox/circuits/choices.py:26 msgid "Decommissioned" msgstr "" -#: circuits/choices.py:90 dcim/choices.py:1617 tenancy/choices.py:17 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1617 +#: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "" -#: circuits/choices.py:91 ipam/choices.py:90 tenancy/choices.py:18 +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 msgid "Secondary" msgstr "" -#: circuits/choices.py:92 tenancy/choices.py:19 +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 msgid "Tertiary" msgstr "" -#: circuits/choices.py:93 tenancy/choices.py:20 +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 msgid "Inactive" msgstr "" -#: circuits/filtersets.py:31 circuits/filtersets.py:198 dcim/filtersets.py:98 -#: dcim/filtersets.py:152 dcim/filtersets.py:212 dcim/filtersets.py:333 -#: dcim/filtersets.py:464 dcim/filtersets.py:1021 dcim/filtersets.py:1368 -#: dcim/filtersets.py:1903 dcim/filtersets.py:2146 dcim/filtersets.py:2204 -#: ipam/filtersets.py:339 ipam/filtersets.py:959 -#: virtualization/filtersets.py:45 virtualization/filtersets.py:173 -#: vpn/filtersets.py:358 +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 +#: netbox/virtualization/filtersets.py:45 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:358 msgid "Region (ID)" msgstr "" -#: circuits/filtersets.py:38 circuits/filtersets.py:205 dcim/filtersets.py:105 -#: dcim/filtersets.py:158 dcim/filtersets.py:219 dcim/filtersets.py:340 -#: dcim/filtersets.py:471 dcim/filtersets.py:1028 dcim/filtersets.py:1375 -#: dcim/filtersets.py:1910 dcim/filtersets.py:2153 dcim/filtersets.py:2211 -#: extras/filtersets.py:509 ipam/filtersets.py:346 ipam/filtersets.py:966 -#: virtualization/filtersets.py:52 virtualization/filtersets.py:180 -#: vpn/filtersets.py:353 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:353 msgid "Region (slug)" msgstr "" -#: circuits/filtersets.py:44 circuits/filtersets.py:211 dcim/filtersets.py:128 -#: dcim/filtersets.py:225 dcim/filtersets.py:346 dcim/filtersets.py:477 -#: dcim/filtersets.py:1034 dcim/filtersets.py:1381 dcim/filtersets.py:1916 -#: dcim/filtersets.py:2159 dcim/filtersets.py:2217 ipam/filtersets.py:352 -#: ipam/filtersets.py:972 virtualization/filtersets.py:58 -#: virtualization/filtersets.py:186 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 +#: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "" -#: circuits/filtersets.py:51 circuits/filtersets.py:218 dcim/filtersets.py:135 -#: dcim/filtersets.py:232 dcim/filtersets.py:353 dcim/filtersets.py:484 -#: dcim/filtersets.py:1041 dcim/filtersets.py:1388 dcim/filtersets.py:1923 -#: dcim/filtersets.py:2166 dcim/filtersets.py:2224 extras/filtersets.py:515 -#: ipam/filtersets.py:359 ipam/filtersets.py:979 -#: virtualization/filtersets.py:65 virtualization/filtersets.py:193 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 +#: netbox/virtualization/filtersets.py:65 +#: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "" -#: circuits/filtersets.py:56 circuits/forms/bulk_edit.py:188 -#: circuits/forms/bulk_edit.py:216 circuits/forms/bulk_import.py:124 -#: circuits/forms/filtersets.py:51 circuits/forms/filtersets.py:171 -#: circuits/forms/filtersets.py:209 circuits/forms/model_forms.py:138 -#: circuits/forms/model_forms.py:154 circuits/tables/circuits.py:113 -#: dcim/forms/bulk_edit.py:168 dcim/forms/bulk_edit.py:329 -#: dcim/forms/bulk_edit.py:677 dcim/forms/bulk_edit.py:873 -#: dcim/forms/bulk_import.py:131 dcim/forms/bulk_import.py:230 -#: dcim/forms/bulk_import.py:309 dcim/forms/bulk_import.py:540 -#: dcim/forms/bulk_import.py:1311 dcim/forms/bulk_import.py:1339 -#: dcim/forms/filtersets.py:87 dcim/forms/filtersets.py:225 -#: dcim/forms/filtersets.py:342 dcim/forms/filtersets.py:439 -#: dcim/forms/filtersets.py:753 dcim/forms/filtersets.py:997 -#: dcim/forms/filtersets.py:1021 dcim/forms/filtersets.py:1111 -#: dcim/forms/filtersets.py:1149 dcim/forms/filtersets.py:1584 -#: dcim/forms/filtersets.py:1608 dcim/forms/filtersets.py:1632 -#: dcim/forms/model_forms.py:137 dcim/forms/model_forms.py:165 -#: dcim/forms/model_forms.py:238 dcim/forms/model_forms.py:463 -#: dcim/forms/model_forms.py:723 dcim/forms/object_create.py:391 -#: dcim/tables/devices.py:153 dcim/tables/power.py:26 dcim/tables/power.py:93 -#: dcim/tables/racks.py:122 dcim/tables/racks.py:207 dcim/tables/sites.py:134 -#: extras/filtersets.py:525 ipam/forms/bulk_edit.py:218 -#: ipam/forms/bulk_edit.py:285 ipam/forms/bulk_edit.py:484 -#: ipam/forms/bulk_import.py:171 ipam/forms/bulk_import.py:429 -#: ipam/forms/filtersets.py:153 ipam/forms/filtersets.py:231 -#: ipam/forms/filtersets.py:432 ipam/forms/filtersets.py:489 -#: ipam/forms/model_forms.py:205 ipam/forms/model_forms.py:636 -#: ipam/tables/ip.py:245 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 -#: templates/circuits/inc/circuit_termination_fields.html:6 -#: templates/dcim/device.html:22 templates/dcim/inc/cable_termination.html:8 -#: templates/dcim/inc/cable_termination.html:33 templates/dcim/location.html:37 -#: templates/dcim/powerpanel.html:22 templates/dcim/rack.html:20 -#: templates/dcim/rackreservation.html:28 templates/dcim/site.html:28 -#: templates/ipam/prefix.html:56 templates/ipam/vlan.html:23 -#: templates/ipam/vlan_edit.html:40 templates/virtualization/cluster.html:42 -#: templates/virtualization/virtualmachine.html:95 -#: virtualization/forms/bulk_edit.py:91 virtualization/forms/bulk_edit.py:109 -#: virtualization/forms/bulk_edit.py:124 virtualization/forms/bulk_import.py:59 -#: virtualization/forms/bulk_import.py:85 virtualization/forms/filtersets.py:79 -#: virtualization/forms/filtersets.py:148 -#: virtualization/forms/model_forms.py:71 -#: virtualization/forms/model_forms.py:104 -#: virtualization/forms/model_forms.py:171 virtualization/tables/clusters.py:77 -#: virtualization/tables/virtualmachines.py:63 vpn/forms/filtersets.py:266 -#: wireless/forms/model_forms.py:76 wireless/forms/model_forms.py:118 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:124 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 +#: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 +#: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:218 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:484 netbox/ipam/forms/bulk_import.py:171 +#: netbox/ipam/forms/bulk_import.py:429 netbox/ipam/forms/filtersets.py:153 +#: netbox/ipam/forms/filtersets.py:231 netbox/ipam/forms/filtersets.py:432 +#: netbox/ipam/forms/filtersets.py:489 netbox/ipam/forms/model_forms.py:205 +#: netbox/ipam/forms/model_forms.py:636 netbox/ipam/tables/ip.py:245 +#: netbox/ipam/tables/vlans.py:118 netbox/ipam/tables/vlans.py:221 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:6 +#: netbox/templates/dcim/device.html:22 +#: netbox/templates/dcim/inc/cable_termination.html:8 +#: netbox/templates/dcim/inc/cable_termination.html:33 +#: netbox/templates/dcim/location.html:37 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 +#: netbox/templates/dcim/rackreservation.html:28 +#: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 +#: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 +#: netbox/templates/virtualization/cluster.html:42 +#: netbox/templates/virtualization/virtualmachine.html:95 +#: netbox/virtualization/forms/bulk_edit.py:91 +#: netbox/virtualization/forms/bulk_edit.py:109 +#: netbox/virtualization/forms/bulk_edit.py:124 +#: netbox/virtualization/forms/bulk_import.py:59 +#: netbox/virtualization/forms/bulk_import.py:85 +#: netbox/virtualization/forms/filtersets.py:79 +#: netbox/virtualization/forms/filtersets.py:148 +#: netbox/virtualization/forms/model_forms.py:71 +#: netbox/virtualization/forms/model_forms.py:104 +#: netbox/virtualization/forms/model_forms.py:171 +#: netbox/virtualization/tables/clusters.py:77 +#: netbox/virtualization/tables/virtualmachines.py:63 +#: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 +#: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "" -#: circuits/filtersets.py:62 circuits/filtersets.py:229 -#: circuits/filtersets.py:274 dcim/filtersets.py:242 dcim/filtersets.py:363 -#: dcim/filtersets.py:458 extras/filtersets.py:531 ipam/filtersets.py:238 -#: ipam/filtersets.py:369 ipam/filtersets.py:989 -#: virtualization/filtersets.py:75 virtualization/filtersets.py:203 -#: vpn/filtersets.py:363 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 +#: netbox/virtualization/filtersets.py:75 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:363 msgid "Site (slug)" msgstr "" -#: circuits/filtersets.py:67 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "" -#: circuits/filtersets.py:73 circuits/forms/filtersets.py:31 -#: ipam/forms/model_forms.py:159 ipam/models/asns.py:108 -#: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 +#: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 +#: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 +#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "" -#: circuits/filtersets.py:95 circuits/filtersets.py:122 -#: circuits/filtersets.py:156 circuits/filtersets.py:283 -#: circuits/filtersets.py:325 ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "" -#: circuits/filtersets.py:101 circuits/filtersets.py:128 -#: circuits/filtersets.py:162 circuits/filtersets.py:289 -#: circuits/filtersets.py:331 ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "" -#: circuits/filtersets.py:167 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "" -#: circuits/filtersets.py:173 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "" -#: circuits/filtersets.py:178 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "" -#: circuits/filtersets.py:182 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "" -#: circuits/filtersets.py:188 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "" -#: circuits/filtersets.py:223 circuits/filtersets.py:268 dcim/filtersets.py:236 -#: dcim/filtersets.py:357 dcim/filtersets.py:452 dcim/filtersets.py:1045 -#: dcim/filtersets.py:1393 dcim/filtersets.py:1928 dcim/filtersets.py:2170 -#: dcim/filtersets.py:2229 ipam/filtersets.py:232 ipam/filtersets.py:363 -#: ipam/filtersets.py:983 virtualization/filtersets.py:69 -#: virtualization/filtersets.py:197 vpn/filtersets.py:368 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 +#: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:368 msgid "Site (ID)" msgstr "" -#: circuits/filtersets.py:233 circuits/filtersets.py:237 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "" -#: circuits/filtersets.py:260 circuits/filtersets.py:320 core/filtersets.py:77 -#: core/filtersets.py:136 core/filtersets.py:173 dcim/filtersets.py:751 -#: dcim/filtersets.py:1362 dcim/filtersets.py:2277 extras/filtersets.py:41 -#: extras/filtersets.py:63 extras/filtersets.py:92 extras/filtersets.py:132 -#: extras/filtersets.py:181 extras/filtersets.py:209 extras/filtersets.py:239 -#: extras/filtersets.py:276 extras/filtersets.py:348 extras/filtersets.py:391 -#: extras/filtersets.py:438 extras/filtersets.py:498 extras/filtersets.py:657 -#: extras/filtersets.py:703 ipam/forms/model_forms.py:449 -#: netbox/filtersets.py:282 netbox/forms/__init__.py:22 -#: netbox/forms/base.py:167 templates/htmx/object_selector.html:28 -#: templates/inc/filter_list.html:46 templates/ipam/ipaddress_assign.html:29 -#: templates/search.html:7 templates/search.html:26 tenancy/filtersets.py:99 -#: users/filtersets.py:23 users/filtersets.py:57 users/filtersets.py:102 -#: users/filtersets.py:150 utilities/forms/forms.py:104 -#: utilities/templates/navigation/menu.html:16 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 +#: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: 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:282 +#: 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:46 +#: netbox/templates/ipam/ipaddress_assign.html:29 +#: netbox/templates/search.html:7 netbox/templates/search.html:26 +#: netbox/tenancy/filtersets.py:99 netbox/users/filtersets.py:23 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 +#: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "" -#: circuits/filtersets.py:264 circuits/forms/bulk_edit.py:172 -#: circuits/forms/bulk_edit.py:246 circuits/forms/bulk_import.py:115 -#: circuits/forms/filtersets.py:198 circuits/forms/filtersets.py:214 -#: circuits/forms/filtersets.py:260 circuits/forms/model_forms.py:111 -#: circuits/forms/model_forms.py:133 circuits/forms/model_forms.py:199 -#: circuits/tables/circuits.py:104 circuits/tables/circuits.py:164 -#: dcim/forms/connections.py:73 templates/circuits/circuit.html:15 -#: templates/circuits/circuitgroupassignment.html:26 -#: templates/circuits/circuittermination.html:19 -#: templates/dcim/inc/cable_termination.html:55 -#: templates/dcim/trace/circuit.html:4 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:115 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 +#: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 +#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/dcim/inc/cable_termination.html:55 +#: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "" -#: circuits/filtersets.py:278 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "" -#: circuits/filtersets.py:335 +#: netbox/circuits/filtersets.py:335 msgid "Circuit (ID)" msgstr "" -#: circuits/filtersets.py:341 +#: netbox/circuits/filtersets.py:341 msgid "Circuit (CID)" msgstr "" -#: circuits/filtersets.py:345 +#: netbox/circuits/filtersets.py:345 msgid "Circuit group (ID)" msgstr "" -#: circuits/filtersets.py:351 +#: netbox/circuits/filtersets.py:351 msgid "Circuit group (slug)" msgstr "" -#: circuits/forms/bulk_edit.py:30 circuits/forms/filtersets.py:56 -#: circuits/forms/model_forms.py:29 circuits/tables/providers.py:33 -#: dcim/forms/bulk_edit.py:128 dcim/forms/filtersets.py:195 -#: dcim/forms/model_forms.py:123 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:213 -#: netbox/navigation/menu.py:172 netbox/navigation/menu.py:175 -#: templates/circuits/provider.html:23 +#: netbox/circuits/forms/bulk_edit.py:30 netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 +#: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 +#: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 +#: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "" -#: circuits/forms/bulk_edit.py:34 circuits/forms/bulk_edit.py:56 -#: circuits/forms/bulk_edit.py:83 circuits/forms/bulk_edit.py:104 -#: circuits/forms/bulk_edit.py:164 circuits/forms/bulk_edit.py:183 -#: circuits/forms/bulk_edit.py:228 core/forms/bulk_edit.py:28 -#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:73 -#: dcim/forms/bulk_edit.py:92 dcim/forms/bulk_edit.py:151 -#: dcim/forms/bulk_edit.py:192 dcim/forms/bulk_edit.py:210 -#: dcim/forms/bulk_edit.py:288 dcim/forms/bulk_edit.py:432 -#: dcim/forms/bulk_edit.py:466 dcim/forms/bulk_edit.py:481 -#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:584 -#: dcim/forms/bulk_edit.py:618 dcim/forms/bulk_edit.py:642 -#: dcim/forms/bulk_edit.py:715 dcim/forms/bulk_edit.py:767 -#: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:842 -#: dcim/forms/bulk_edit.py:890 dcim/forms/bulk_edit.py:960 -#: dcim/forms/bulk_edit.py:1013 dcim/forms/bulk_edit.py:1048 -#: dcim/forms/bulk_edit.py:1088 dcim/forms/bulk_edit.py:1132 -#: dcim/forms/bulk_edit.py:1177 dcim/forms/bulk_edit.py:1204 -#: dcim/forms/bulk_edit.py:1222 dcim/forms/bulk_edit.py:1240 -#: dcim/forms/bulk_edit.py:1258 dcim/forms/bulk_edit.py:1682 -#: extras/forms/bulk_edit.py:39 extras/forms/bulk_edit.py:149 -#: extras/forms/bulk_edit.py:178 extras/forms/bulk_edit.py:208 -#: extras/forms/bulk_edit.py:256 extras/forms/bulk_edit.py:274 -#: extras/forms/bulk_edit.py:298 extras/forms/bulk_edit.py:312 -#: extras/forms/bulk_edit.py:339 extras/tables/tables.py:79 -#: ipam/forms/bulk_edit.py:53 ipam/forms/bulk_edit.py:73 -#: ipam/forms/bulk_edit.py:93 ipam/forms/bulk_edit.py:117 -#: ipam/forms/bulk_edit.py:146 ipam/forms/bulk_edit.py:175 -#: ipam/forms/bulk_edit.py:194 ipam/forms/bulk_edit.py:276 -#: ipam/forms/bulk_edit.py:321 ipam/forms/bulk_edit.py:369 -#: ipam/forms/bulk_edit.py:412 ipam/forms/bulk_edit.py:428 -#: ipam/forms/bulk_edit.py:516 ipam/forms/bulk_edit.py:547 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuitgroup.html:32 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination_fields.html:88 -#: templates/circuits/provider.html:33 -#: templates/circuits/providernetwork.html:32 templates/core/datasource.html:54 -#: templates/core/plugin.html:80 templates/dcim/cable.html:36 -#: templates/dcim/consoleport.html:44 templates/dcim/consoleserverport.html:44 -#: templates/dcim/device.html:94 templates/dcim/devicebay.html:32 -#: templates/dcim/devicerole.html:30 templates/dcim/devicetype.html:33 -#: templates/dcim/frontport.html:58 templates/dcim/interface.html:69 -#: templates/dcim/inventoryitem.html:60 -#: templates/dcim/inventoryitemrole.html:22 templates/dcim/location.html:33 -#: templates/dcim/manufacturer.html:40 templates/dcim/module.html:73 -#: templates/dcim/modulebay.html:42 templates/dcim/moduletype.html:37 -#: templates/dcim/platform.html:33 templates/dcim/powerfeed.html:40 -#: templates/dcim/poweroutlet.html:40 templates/dcim/powerpanel.html:30 -#: templates/dcim/powerport.html:40 templates/dcim/rack.html:53 -#: templates/dcim/rackreservation.html:62 templates/dcim/rackrole.html:26 -#: templates/dcim/racktype.html:24 templates/dcim/rearport.html:54 -#: templates/dcim/region.html:33 templates/dcim/site.html:60 -#: templates/dcim/sitegroup.html:33 templates/dcim/virtualchassis.html:31 -#: templates/extras/configcontext.html:21 -#: templates/extras/configtemplate.html:17 templates/extras/customfield.html:34 -#: templates/extras/dashboard/widget_add.html:14 -#: templates/extras/eventrule.html:21 templates/extras/exporttemplate.html:19 -#: templates/extras/notificationgroup.html:20 -#: templates/extras/savedfilter.html:17 templates/extras/script_list.html:45 -#: templates/extras/tag.html:20 templates/extras/webhook.html:17 -#: templates/generic/bulk_import.html:120 templates/ipam/aggregate.html:43 -#: templates/ipam/asn.html:42 templates/ipam/asnrange.html:38 -#: templates/ipam/fhrpgroup.html:34 templates/ipam/ipaddress.html:55 -#: templates/ipam/iprange.html:67 templates/ipam/prefix.html:81 -#: templates/ipam/rir.html:26 templates/ipam/role.html:26 -#: templates/ipam/routetarget.html:21 templates/ipam/service.html:50 -#: templates/ipam/servicetemplate.html:27 templates/ipam/vlan.html:62 -#: templates/ipam/vlangroup.html:34 templates/ipam/vrf.html:33 -#: templates/tenancy/contact.html:67 templates/tenancy/contactgroup.html:25 -#: templates/tenancy/contactrole.html:22 templates/tenancy/tenant.html:24 -#: templates/tenancy/tenantgroup.html:33 templates/users/group.html:21 -#: templates/users/objectpermission.html:21 templates/users/token.html:27 -#: templates/virtualization/cluster.html:25 -#: templates/virtualization/clustergroup.html:26 -#: templates/virtualization/clustertype.html:26 -#: templates/virtualization/virtualdisk.html:39 -#: templates/virtualization/virtualmachine.html:31 -#: templates/virtualization/vminterface.html:51 templates/vpn/ikepolicy.html:17 -#: templates/vpn/ikeproposal.html:17 templates/vpn/ipsecpolicy.html:17 -#: templates/vpn/ipsecprofile.html:17 templates/vpn/ipsecprofile.html:40 -#: templates/vpn/ipsecprofile.html:73 templates/vpn/ipsecproposal.html:17 -#: templates/vpn/l2vpn.html:26 templates/vpn/tunnel.html:33 -#: templates/vpn/tunnelgroup.html:30 templates/wireless/wirelesslan.html:26 -#: templates/wireless/wirelesslangroup.html:33 -#: templates/wireless/wirelesslink.html:34 tenancy/forms/bulk_edit.py:32 -#: tenancy/forms/bulk_edit.py:80 tenancy/forms/bulk_edit.py:122 -#: users/forms/bulk_edit.py:64 users/forms/bulk_edit.py:82 -#: users/forms/bulk_edit.py:112 virtualization/forms/bulk_edit.py:32 -#: virtualization/forms/bulk_edit.py:46 virtualization/forms/bulk_edit.py:100 -#: virtualization/forms/bulk_edit.py:177 virtualization/forms/bulk_edit.py:228 -#: virtualization/forms/bulk_edit.py:337 vpn/forms/bulk_edit.py:28 -#: vpn/forms/bulk_edit.py:64 vpn/forms/bulk_edit.py:121 -#: vpn/forms/bulk_edit.py:155 vpn/forms/bulk_edit.py:190 -#: vpn/forms/bulk_edit.py:215 vpn/forms/bulk_edit.py:247 -#: vpn/forms/bulk_edit.py:274 wireless/forms/bulk_edit.py:29 -#: wireless/forms/bulk_edit.py:82 wireless/forms/bulk_edit.py:140 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:53 netbox/ipam/forms/bulk_edit.py:73 +#: netbox/ipam/forms/bulk_edit.py:93 netbox/ipam/forms/bulk_edit.py:117 +#: netbox/ipam/forms/bulk_edit.py:146 netbox/ipam/forms/bulk_edit.py:175 +#: netbox/ipam/forms/bulk_edit.py:194 netbox/ipam/forms/bulk_edit.py:276 +#: netbox/ipam/forms/bulk_edit.py:321 netbox/ipam/forms/bulk_edit.py:369 +#: netbox/ipam/forms/bulk_edit.py:412 netbox/ipam/forms/bulk_edit.py:428 +#: netbox/ipam/forms/bulk_edit.py:516 netbox/ipam/forms/bulk_edit.py:547 +#: netbox/templates/account/token.html:35 +#: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 +#: netbox/templates/circuits/circuittype.html:26 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:88 +#: netbox/templates/circuits/provider.html:33 +#: netbox/templates/circuits/providernetwork.html:32 +#: netbox/templates/core/datasource.html:54 +#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:36 +#: netbox/templates/dcim/consoleport.html:44 +#: netbox/templates/dcim/consoleserverport.html:44 +#: netbox/templates/dcim/device.html:94 netbox/templates/dcim/devicebay.html:32 +#: netbox/templates/dcim/devicerole.html:30 +#: netbox/templates/dcim/devicetype.html:33 +#: netbox/templates/dcim/frontport.html:58 +#: netbox/templates/dcim/interface.html:69 +#: netbox/templates/dcim/inventoryitem.html:60 +#: netbox/templates/dcim/inventoryitemrole.html:22 +#: netbox/templates/dcim/location.html:33 +#: netbox/templates/dcim/manufacturer.html:40 +#: netbox/templates/dcim/module.html:73 netbox/templates/dcim/modulebay.html:42 +#: netbox/templates/dcim/moduletype.html:37 +#: netbox/templates/dcim/platform.html:33 +#: netbox/templates/dcim/powerfeed.html:40 +#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/templates/dcim/powerpanel.html:30 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 +#: netbox/templates/dcim/rackreservation.html:62 +#: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 +#: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 +#: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 +#: netbox/templates/dcim/virtualchassis.html:31 +#: netbox/templates/extras/configcontext.html:21 +#: netbox/templates/extras/configtemplate.html:17 +#: netbox/templates/extras/customfield.html:34 +#: netbox/templates/extras/dashboard/widget_add.html:14 +#: netbox/templates/extras/eventrule.html:21 +#: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 +#: netbox/templates/extras/savedfilter.html:17 +#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 +#: netbox/templates/generic/bulk_import.html:120 +#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 +#: netbox/templates/ipam/asnrange.html:38 +#: netbox/templates/ipam/fhrpgroup.html:34 +#: netbox/templates/ipam/ipaddress.html:55 +#: netbox/templates/ipam/iprange.html:67 netbox/templates/ipam/prefix.html:81 +#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 +#: netbox/templates/ipam/routetarget.html:21 +#: netbox/templates/ipam/service.html:50 +#: netbox/templates/ipam/servicetemplate.html:27 +#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 +#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:67 +#: netbox/templates/tenancy/contactgroup.html:25 +#: netbox/templates/tenancy/contactrole.html:22 +#: netbox/templates/tenancy/tenant.html:24 +#: netbox/templates/tenancy/tenantgroup.html:33 +#: netbox/templates/users/group.html:21 +#: netbox/templates/users/objectpermission.html:21 +#: netbox/templates/users/token.html:27 +#: netbox/templates/virtualization/cluster.html:25 +#: netbox/templates/virtualization/clustergroup.html:26 +#: netbox/templates/virtualization/clustertype.html:26 +#: netbox/templates/virtualization/virtualdisk.html:39 +#: netbox/templates/virtualization/virtualmachine.html:31 +#: netbox/templates/virtualization/vminterface.html:51 +#: netbox/templates/vpn/ikepolicy.html:17 +#: netbox/templates/vpn/ikeproposal.html:17 +#: netbox/templates/vpn/ipsecpolicy.html:17 +#: netbox/templates/vpn/ipsecprofile.html:17 +#: netbox/templates/vpn/ipsecprofile.html:40 +#: netbox/templates/vpn/ipsecprofile.html:73 +#: netbox/templates/vpn/ipsecproposal.html:17 +#: netbox/templates/vpn/l2vpn.html:26 netbox/templates/vpn/tunnel.html:33 +#: netbox/templates/vpn/tunnelgroup.html:30 +#: netbox/templates/wireless/wirelesslan.html:26 +#: netbox/templates/wireless/wirelesslangroup.html:33 +#: netbox/templates/wireless/wirelesslink.html:34 +#: netbox/tenancy/forms/bulk_edit.py:32 netbox/tenancy/forms/bulk_edit.py:80 +#: netbox/tenancy/forms/bulk_edit.py:122 netbox/users/forms/bulk_edit.py:64 +#: netbox/users/forms/bulk_edit.py:82 netbox/users/forms/bulk_edit.py:112 +#: netbox/virtualization/forms/bulk_edit.py:32 +#: netbox/virtualization/forms/bulk_edit.py:46 +#: netbox/virtualization/forms/bulk_edit.py:100 +#: netbox/virtualization/forms/bulk_edit.py:177 +#: netbox/virtualization/forms/bulk_edit.py:228 +#: netbox/virtualization/forms/bulk_edit.py:337 +#: netbox/vpn/forms/bulk_edit.py:28 netbox/vpn/forms/bulk_edit.py:64 +#: netbox/vpn/forms/bulk_edit.py:121 netbox/vpn/forms/bulk_edit.py:155 +#: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 +#: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 +#: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "" -#: circuits/forms/bulk_edit.py:51 circuits/forms/bulk_edit.py:73 -#: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:36 -#: circuits/forms/bulk_import.py:51 circuits/forms/bulk_import.py:74 -#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 -#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 -#: circuits/forms/filtersets.py:199 circuits/forms/filtersets.py:232 -#: circuits/forms/filtersets.py:255 circuits/forms/model_forms.py:47 -#: circuits/forms/model_forms.py:61 circuits/forms/model_forms.py:93 -#: circuits/tables/circuits.py:58 circuits/tables/circuits.py:108 -#: circuits/tables/circuits.py:160 circuits/tables/providers.py:72 -#: circuits/tables/providers.py:103 templates/circuits/circuit.html:18 -#: templates/circuits/circuittermination.html:25 -#: templates/circuits/provider.html:20 -#: templates/circuits/provideraccount.html:20 -#: templates/circuits/providernetwork.html:20 -#: templates/dcim/inc/cable_termination.html:51 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:36 +#: netbox/circuits/forms/bulk_import.py:51 +#: netbox/circuits/forms/bulk_import.py:74 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 +#: netbox/circuits/tables/providers.py:72 +#: netbox/circuits/tables/providers.py:103 +#: netbox/templates/circuits/circuit.html:18 +#: netbox/templates/circuits/circuittermination.html:25 +#: netbox/templates/circuits/provider.html:20 +#: netbox/templates/circuits/provideraccount.html:20 +#: netbox/templates/circuits/providernetwork.html:20 +#: netbox/templates/dcim/inc/cable_termination.html:51 msgid "Provider" msgstr "" -#: circuits/forms/bulk_edit.py:80 circuits/forms/filtersets.py:91 -#: templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/bulk_edit.py:80 netbox/circuits/forms/filtersets.py:91 +#: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "" -#: circuits/forms/bulk_edit.py:100 circuits/forms/filtersets.py:107 -#: dcim/forms/bulk_edit.py:206 dcim/forms/bulk_edit.py:604 -#: dcim/forms/bulk_edit.py:804 dcim/forms/bulk_edit.py:1173 -#: dcim/forms/bulk_edit.py:1200 dcim/forms/bulk_edit.py:1678 -#: dcim/forms/filtersets.py:1064 dcim/forms/filtersets.py:1455 -#: dcim/forms/filtersets.py:1479 dcim/tables/devices.py:704 -#: dcim/tables/devices.py:761 dcim/tables/devices.py:1003 -#: dcim/tables/devicetypes.py:249 dcim/tables/devicetypes.py:264 -#: dcim/tables/racks.py:33 extras/forms/bulk_edit.py:270 -#: extras/tables/tables.py:443 templates/circuits/circuittype.html:30 -#: templates/dcim/cable.html:40 templates/dcim/devicerole.html:34 -#: templates/dcim/frontport.html:40 templates/dcim/inventoryitemrole.html:26 -#: templates/dcim/rackrole.html:30 templates/dcim/rearport.html:40 -#: templates/extras/tag.html:26 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: 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:704 netbox/dcim/tables/devices.py:761 +#: netbox/dcim/tables/devices.py:1003 netbox/dcim/tables/devicetypes.py:249 +#: netbox/dcim/tables/devicetypes.py:264 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 +#: netbox/templates/dcim/cable.html:40 netbox/templates/dcim/devicerole.html:34 +#: netbox/templates/dcim/frontport.html:40 +#: netbox/templates/dcim/inventoryitemrole.html:26 +#: netbox/templates/dcim/rackrole.html:30 +#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "" -#: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:87 -#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:18 -#: core/forms/filtersets.py:33 core/tables/change_logging.py:32 -#: core/tables/data.py:20 core/tables/jobs.py:18 dcim/forms/bulk_edit.py:782 -#: dcim/forms/bulk_edit.py:921 dcim/forms/bulk_edit.py:989 -#: dcim/forms/bulk_edit.py:1008 dcim/forms/bulk_edit.py:1031 -#: dcim/forms/bulk_edit.py:1073 dcim/forms/bulk_edit.py:1117 -#: dcim/forms/bulk_edit.py:1168 dcim/forms/bulk_edit.py:1195 -#: dcim/forms/bulk_import.py:188 dcim/forms/bulk_import.py:260 -#: dcim/forms/bulk_import.py:708 dcim/forms/bulk_import.py:734 -#: dcim/forms/bulk_import.py:760 dcim/forms/bulk_import.py:780 -#: dcim/forms/bulk_import.py:863 dcim/forms/bulk_import.py:957 -#: dcim/forms/bulk_import.py:999 dcim/forms/bulk_import.py:1213 -#: dcim/forms/bulk_import.py:1376 dcim/forms/filtersets.py:955 -#: dcim/forms/filtersets.py:1054 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1247 dcim/forms/filtersets.py:1272 -#: dcim/forms/filtersets.py:1296 dcim/forms/filtersets.py:1316 -#: dcim/forms/filtersets.py:1353 dcim/forms/filtersets.py:1450 -#: dcim/forms/filtersets.py:1474 dcim/forms/model_forms.py:703 -#: dcim/forms/model_forms.py:709 dcim/forms/object_import.py:84 -#: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 -#: dcim/tables/devices.py:178 dcim/tables/devices.py:814 -#: dcim/tables/power.py:77 dcim/tables/racks.py:138 -#: extras/forms/bulk_import.py:42 extras/tables/tables.py:405 -#: extras/tables/tables.py:465 netbox/tables/tables.py:240 -#: templates/circuits/circuit.html:30 templates/core/datasource.html:38 -#: templates/dcim/cable.html:15 templates/dcim/consoleport.html:36 -#: templates/dcim/consoleserverport.html:36 templates/dcim/frontport.html:36 -#: templates/dcim/interface.html:46 templates/dcim/interface.html:169 -#: templates/dcim/interface.html:311 templates/dcim/powerfeed.html:32 -#: templates/dcim/poweroutlet.html:36 templates/dcim/powerport.html:36 -#: templates/dcim/rearport.html:36 templates/extras/eventrule.html:74 -#: templates/virtualization/cluster.html:17 templates/vpn/l2vpn.html:22 -#: templates/wireless/inc/authentication_attrs.html:8 -#: templates/wireless/inc/wirelesslink_interface.html:14 -#: virtualization/forms/bulk_edit.py:60 virtualization/forms/bulk_import.py:41 -#: virtualization/forms/filtersets.py:54 virtualization/forms/model_forms.py:62 -#: virtualization/tables/clusters.py:66 vpn/forms/bulk_edit.py:264 -#: vpn/forms/bulk_import.py:264 vpn/forms/filtersets.py:217 -#: vpn/forms/model_forms.py:84 vpn/forms/model_forms.py:119 -#: vpn/forms/model_forms.py:231 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:87 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: 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:814 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 +#: netbox/templates/core/datasource.html:38 netbox/templates/dcim/cable.html:15 +#: netbox/templates/dcim/consoleport.html:36 +#: netbox/templates/dcim/consoleserverport.html:36 +#: netbox/templates/dcim/frontport.html:36 +#: netbox/templates/dcim/interface.html:46 +#: netbox/templates/dcim/interface.html:169 +#: netbox/templates/dcim/interface.html:311 +#: netbox/templates/dcim/powerfeed.html:32 +#: netbox/templates/dcim/poweroutlet.html:36 +#: netbox/templates/dcim/powerport.html:36 +#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/extras/eventrule.html:74 +#: netbox/templates/virtualization/cluster.html:17 +#: netbox/templates/vpn/l2vpn.html:22 +#: netbox/templates/wireless/inc/authentication_attrs.html:8 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:14 +#: netbox/virtualization/forms/bulk_edit.py:60 +#: netbox/virtualization/forms/bulk_import.py:41 +#: netbox/virtualization/forms/filtersets.py:54 +#: netbox/virtualization/forms/model_forms.py:62 +#: netbox/virtualization/tables/clusters.py:66 +#: netbox/vpn/forms/bulk_edit.py:264 netbox/vpn/forms/bulk_import.py:264 +#: netbox/vpn/forms/filtersets.py:217 netbox/vpn/forms/model_forms.py:84 +#: netbox/vpn/forms/model_forms.py:119 netbox/vpn/forms/model_forms.py:231 msgid "Type" msgstr "" -#: circuits/forms/bulk_edit.py:128 circuits/forms/bulk_import.py:80 -#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:98 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:80 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "" -#: circuits/forms/bulk_edit.py:136 circuits/forms/bulk_import.py:93 -#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:38 -#: core/forms/filtersets.py:79 core/tables/data.py:23 core/tables/jobs.py:26 -#: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:106 -#: dcim/forms/bulk_edit.py:181 dcim/forms/bulk_edit.py:351 -#: dcim/forms/bulk_edit.py:700 dcim/forms/bulk_edit.py:756 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:915 -#: dcim/forms/bulk_edit.py:1701 dcim/forms/bulk_import.py:88 -#: dcim/forms/bulk_import.py:147 dcim/forms/bulk_import.py:248 -#: dcim/forms/bulk_import.py:505 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:1207 dcim/forms/bulk_import.py:1371 -#: dcim/forms/bulk_import.py:1435 dcim/forms/filtersets.py:178 -#: dcim/forms/filtersets.py:237 dcim/forms/filtersets.py:359 -#: dcim/forms/filtersets.py:799 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:958 dcim/forms/filtersets.py:1059 -#: dcim/forms/filtersets.py:1170 dcim/tables/devices.py:140 -#: dcim/tables/devices.py:817 dcim/tables/devices.py:1063 -#: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:126 -#: dcim/tables/sites.py:82 dcim/tables/sites.py:138 ipam/forms/bulk_edit.py:256 -#: ipam/forms/bulk_edit.py:306 ipam/forms/bulk_edit.py:354 -#: ipam/forms/bulk_edit.py:506 ipam/forms/bulk_import.py:192 -#: ipam/forms/bulk_import.py:257 ipam/forms/bulk_import.py:293 -#: ipam/forms/bulk_import.py:450 ipam/forms/filtersets.py:210 -#: ipam/forms/filtersets.py:281 ipam/forms/filtersets.py:355 -#: ipam/forms/filtersets.py:501 ipam/forms/model_forms.py:468 -#: ipam/tables/ip.py:237 ipam/tables/ip.py:312 ipam/tables/ip.py:363 -#: ipam/tables/ip.py:426 ipam/tables/ip.py:453 ipam/tables/vlans.py:126 -#: ipam/tables/vlans.py:232 templates/circuits/circuit.html:34 -#: templates/core/datasource.html:46 templates/core/job.html:48 -#: templates/core/rq_task.html:81 templates/core/system.html:18 -#: templates/dcim/cable.html:19 templates/dcim/device.html:178 -#: templates/dcim/location.html:45 templates/dcim/module.html:69 -#: templates/dcim/powerfeed.html:36 templates/dcim/rack.html:41 -#: templates/dcim/site.html:43 templates/extras/script_list.html:47 -#: templates/ipam/ipaddress.html:37 templates/ipam/iprange.html:54 -#: templates/ipam/prefix.html:73 templates/ipam/vlan.html:48 -#: templates/virtualization/cluster.html:21 -#: templates/virtualization/virtualmachine.html:19 templates/vpn/tunnel.html:25 -#: templates/wireless/wirelesslan.html:22 -#: templates/wireless/wirelesslink.html:17 users/forms/filtersets.py:32 -#: users/forms/model_forms.py:194 virtualization/forms/bulk_edit.py:70 -#: virtualization/forms/bulk_edit.py:118 virtualization/forms/bulk_import.py:54 -#: virtualization/forms/bulk_import.py:80 virtualization/forms/filtersets.py:62 -#: virtualization/forms/filtersets.py:160 virtualization/tables/clusters.py:74 -#: virtualization/tables/virtualmachines.py:60 vpn/forms/bulk_edit.py:39 -#: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:47 -#: vpn/tables/tunnels.py:48 wireless/forms/bulk_edit.py:43 -#: wireless/forms/bulk_edit.py:105 wireless/forms/bulk_import.py:43 -#: wireless/forms/bulk_import.py:84 wireless/forms/filtersets.py:49 -#: wireless/forms/filtersets.py:83 wireless/tables/wirelesslan.py:52 -#: wireless/tables/wirelesslink.py:20 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:93 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 +#: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: 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:817 +#: netbox/dcim/tables/devices.py:1063 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:256 netbox/ipam/forms/bulk_edit.py:306 +#: netbox/ipam/forms/bulk_edit.py:354 netbox/ipam/forms/bulk_edit.py:506 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 +#: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 +#: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 +#: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 +#: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 +#: netbox/templates/circuits/circuit.html:34 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 +#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 +#: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 +#: netbox/templates/dcim/site.html:43 +#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/ipam/ipaddress.html:37 +#: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 +#: netbox/templates/ipam/vlan.html:48 +#: netbox/templates/virtualization/cluster.html:21 +#: netbox/templates/virtualization/virtualmachine.html:19 +#: netbox/templates/vpn/tunnel.html:25 +#: netbox/templates/wireless/wirelesslan.html:22 +#: netbox/templates/wireless/wirelesslink.html:17 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:194 +#: netbox/virtualization/forms/bulk_edit.py:70 +#: netbox/virtualization/forms/bulk_edit.py:118 +#: netbox/virtualization/forms/bulk_import.py:54 +#: netbox/virtualization/forms/bulk_import.py:80 +#: netbox/virtualization/forms/filtersets.py:62 +#: netbox/virtualization/forms/filtersets.py:160 +#: netbox/virtualization/tables/clusters.py:74 +#: netbox/virtualization/tables/virtualmachines.py:60 +#: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 +#: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 +#: netbox/wireless/forms/bulk_edit.py:43 netbox/wireless/forms/bulk_edit.py:105 +#: netbox/wireless/forms/bulk_import.py:43 +#: netbox/wireless/forms/bulk_import.py:84 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:83 +#: netbox/wireless/tables/wirelesslan.py:52 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "" -#: circuits/forms/bulk_edit.py:142 circuits/forms/bulk_edit.py:233 -#: circuits/forms/bulk_import.py:98 circuits/forms/bulk_import.py:158 -#: circuits/forms/filtersets.py:119 circuits/forms/filtersets.py:241 -#: dcim/forms/bulk_edit.py:122 dcim/forms/bulk_edit.py:187 -#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:461 -#: dcim/forms/bulk_edit.py:690 dcim/forms/bulk_edit.py:794 -#: dcim/forms/bulk_edit.py:1706 dcim/forms/bulk_import.py:107 -#: dcim/forms/bulk_import.py:152 dcim/forms/bulk_import.py:241 -#: dcim/forms/bulk_import.py:334 dcim/forms/bulk_import.py:479 -#: dcim/forms/bulk_import.py:1219 dcim/forms/bulk_import.py:1428 -#: dcim/forms/filtersets.py:173 dcim/forms/filtersets.py:205 -#: dcim/forms/filtersets.py:323 dcim/forms/filtersets.py:399 -#: dcim/forms/filtersets.py:420 dcim/forms/filtersets.py:722 -#: dcim/forms/filtersets.py:916 dcim/forms/filtersets.py:978 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1130 -#: dcim/tables/power.py:88 extras/filtersets.py:612 -#: extras/forms/filtersets.py:323 extras/forms/filtersets.py:396 -#: ipam/forms/bulk_edit.py:43 ipam/forms/bulk_edit.py:68 -#: ipam/forms/bulk_edit.py:112 ipam/forms/bulk_edit.py:141 -#: ipam/forms/bulk_edit.py:166 ipam/forms/bulk_edit.py:251 -#: ipam/forms/bulk_edit.py:301 ipam/forms/bulk_edit.py:349 -#: ipam/forms/bulk_edit.py:501 ipam/forms/bulk_import.py:38 -#: ipam/forms/bulk_import.py:67 ipam/forms/bulk_import.py:95 -#: ipam/forms/bulk_import.py:115 ipam/forms/bulk_import.py:135 -#: ipam/forms/bulk_import.py:164 ipam/forms/bulk_import.py:250 -#: ipam/forms/bulk_import.py:286 ipam/forms/bulk_import.py:443 -#: ipam/forms/filtersets.py:48 ipam/forms/filtersets.py:68 -#: ipam/forms/filtersets.py:100 ipam/forms/filtersets.py:120 -#: ipam/forms/filtersets.py:143 ipam/forms/filtersets.py:174 -#: ipam/forms/filtersets.py:267 ipam/forms/filtersets.py:310 -#: ipam/forms/filtersets.py:469 ipam/tables/ip.py:456 ipam/tables/vlans.py:229 -#: templates/circuits/circuit.html:38 templates/circuits/circuitgroup.html:36 -#: templates/dcim/cable.html:23 templates/dcim/device.html:79 -#: templates/dcim/location.html:49 templates/dcim/powerfeed.html:44 -#: templates/dcim/rack.html:32 templates/dcim/rackreservation.html:49 -#: templates/dcim/site.html:47 templates/dcim/virtualdevicecontext.html:52 -#: templates/ipam/aggregate.html:30 templates/ipam/asn.html:33 -#: templates/ipam/asnrange.html:29 templates/ipam/ipaddress.html:28 -#: templates/ipam/iprange.html:58 templates/ipam/prefix.html:29 -#: templates/ipam/routetarget.html:17 templates/ipam/vlan.html:39 -#: templates/ipam/vrf.html:20 templates/tenancy/tenant.html:17 -#: templates/virtualization/cluster.html:33 -#: templates/virtualization/virtualmachine.html:39 templates/vpn/l2vpn.html:30 -#: templates/vpn/tunnel.html:49 templates/wireless/wirelesslan.html:34 -#: templates/wireless/wirelesslink.html:25 tenancy/forms/forms.py:25 -#: tenancy/forms/forms.py:48 tenancy/forms/model_forms.py:52 -#: tenancy/tables/columns.py:64 virtualization/forms/bulk_edit.py:76 -#: virtualization/forms/bulk_edit.py:155 virtualization/forms/bulk_import.py:66 -#: virtualization/forms/bulk_import.py:115 -#: virtualization/forms/filtersets.py:47 virtualization/forms/filtersets.py:105 -#: vpn/forms/bulk_edit.py:59 vpn/forms/bulk_edit.py:269 -#: vpn/forms/bulk_import.py:59 vpn/forms/bulk_import.py:258 -#: vpn/forms/filtersets.py:214 wireless/forms/bulk_edit.py:63 -#: wireless/forms/bulk_edit.py:110 wireless/forms/bulk_import.py:55 -#: wireless/forms/bulk_import.py:97 wireless/forms/filtersets.py:35 -#: wireless/forms/filtersets.py:75 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:98 +#: netbox/circuits/forms/bulk_import.py:158 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:43 +#: netbox/ipam/forms/bulk_edit.py:68 netbox/ipam/forms/bulk_edit.py:112 +#: netbox/ipam/forms/bulk_edit.py:141 netbox/ipam/forms/bulk_edit.py:166 +#: netbox/ipam/forms/bulk_edit.py:251 netbox/ipam/forms/bulk_edit.py:301 +#: netbox/ipam/forms/bulk_edit.py:349 netbox/ipam/forms/bulk_edit.py:501 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 +#: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 +#: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 +#: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 +#: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 +#: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 +#: netbox/templates/dcim/location.html:49 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 +#: netbox/templates/dcim/rackreservation.html:49 +#: netbox/templates/dcim/site.html:47 +#: netbox/templates/dcim/virtualdevicecontext.html:52 +#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 +#: netbox/templates/ipam/asnrange.html:29 +#: netbox/templates/ipam/ipaddress.html:28 +#: netbox/templates/ipam/iprange.html:58 netbox/templates/ipam/prefix.html:29 +#: netbox/templates/ipam/routetarget.html:17 netbox/templates/ipam/vlan.html:39 +#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 +#: netbox/templates/virtualization/cluster.html:33 +#: netbox/templates/virtualization/virtualmachine.html:39 +#: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 +#: netbox/templates/wireless/wirelesslan.html:34 +#: netbox/templates/wireless/wirelesslink.html:25 +#: netbox/tenancy/forms/forms.py:25 netbox/tenancy/forms/forms.py:48 +#: netbox/tenancy/forms/model_forms.py:52 netbox/tenancy/tables/columns.py:64 +#: netbox/virtualization/forms/bulk_edit.py:76 +#: netbox/virtualization/forms/bulk_edit.py:155 +#: netbox/virtualization/forms/bulk_import.py:66 +#: netbox/virtualization/forms/bulk_import.py:115 +#: netbox/virtualization/forms/filtersets.py:47 +#: netbox/virtualization/forms/filtersets.py:105 +#: netbox/vpn/forms/bulk_edit.py:59 netbox/vpn/forms/bulk_edit.py:269 +#: netbox/vpn/forms/bulk_import.py:59 netbox/vpn/forms/bulk_import.py:258 +#: netbox/vpn/forms/filtersets.py:214 netbox/wireless/forms/bulk_edit.py:63 +#: netbox/wireless/forms/bulk_edit.py:110 +#: netbox/wireless/forms/bulk_import.py:55 +#: netbox/wireless/forms/bulk_import.py:97 +#: netbox/wireless/forms/filtersets.py:35 +#: netbox/wireless/forms/filtersets.py:75 msgid "Tenant" msgstr "" -#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:174 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "" -#: circuits/forms/bulk_edit.py:152 circuits/forms/filtersets.py:179 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "" -#: circuits/forms/bulk_edit.py:158 circuits/forms/filtersets.py:186 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "" -#: circuits/forms/bulk_edit.py:173 circuits/forms/model_forms.py:112 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "" -#: circuits/forms/bulk_edit.py:174 circuits/forms/model_forms.py:113 -#: circuits/forms/model_forms.py:183 dcim/forms/model_forms.py:139 -#: dcim/forms/model_forms.py:181 dcim/forms/model_forms.py:266 -#: dcim/forms/model_forms.py:323 dcim/forms/model_forms.py:768 -#: dcim/forms/model_forms.py:1692 ipam/forms/model_forms.py:64 -#: ipam/forms/model_forms.py:81 ipam/forms/model_forms.py:115 -#: ipam/forms/model_forms.py:136 ipam/forms/model_forms.py:160 -#: ipam/forms/model_forms.py:232 ipam/forms/model_forms.py:261 -#: ipam/forms/model_forms.py:316 netbox/navigation/menu.py:24 -#: templates/dcim/device_edit.html:85 templates/dcim/htmx/cable_edit.html:72 -#: templates/ipam/ipaddress_bulk_add.html:27 templates/ipam/vlan_edit.html:22 -#: virtualization/forms/model_forms.py:80 -#: virtualization/forms/model_forms.py:222 vpn/forms/bulk_edit.py:78 -#: vpn/forms/filtersets.py:44 vpn/forms/model_forms.py:62 -#: vpn/forms/model_forms.py:147 vpn/forms/model_forms.py:411 -#: wireless/forms/model_forms.py:54 wireless/forms/model_forms.py:170 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: 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: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 +#: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 +#: netbox/netbox/navigation/menu.py:24 +#: netbox/templates/dcim/device_edit.html:85 +#: netbox/templates/dcim/htmx/cable_edit.html:72 +#: netbox/templates/ipam/ipaddress_bulk_add.html:27 +#: netbox/templates/ipam/vlan_edit.html:22 +#: netbox/virtualization/forms/model_forms.py:80 +#: netbox/virtualization/forms/model_forms.py:222 +#: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 +#: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 +#: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "" -#: circuits/forms/bulk_edit.py:193 circuits/forms/bulk_edit.py:217 -#: circuits/forms/model_forms.py:155 circuits/tables/circuits.py:117 -#: templates/circuits/inc/circuit_termination_fields.html:62 -#: templates/circuits/providernetwork.html:17 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 +#: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "" -#: circuits/forms/bulk_edit.py:199 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "" -#: circuits/forms/bulk_edit.py:203 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "" -#: circuits/forms/bulk_edit.py:206 dcim/forms/bulk_edit.py:951 -#: dcim/forms/bulk_edit.py:1315 dcim/forms/bulk_edit.py:1332 -#: dcim/forms/bulk_edit.py:1349 dcim/forms/bulk_edit.py:1367 -#: dcim/forms/bulk_edit.py:1455 dcim/forms/bulk_edit.py:1594 -#: dcim/forms/bulk_edit.py:1611 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "" -#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 -#: templates/circuits/inc/circuit_termination_fields.html:54 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:54 +#: netbox/templates/dcim/frontport.html:121 +#: netbox/templates/dcim/interface.html:193 +#: netbox/templates/dcim/rearport.html:111 msgid "Circuit Termination" msgstr "" -#: circuits/forms/bulk_edit.py:221 circuits/forms/model_forms.py:159 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "" -#: circuits/forms/bulk_edit.py:251 circuits/forms/filtersets.py:268 -#: circuits/tables/circuits.py:168 dcim/forms/model_forms.py:551 -#: templates/circuits/circuitgroupassignment.html:30 -#: templates/dcim/device.html:133 templates/dcim/virtualchassis.html:68 -#: templates/dcim/virtualchassis_edit.html:56 -#: templates/ipam/inc/panels/fhrp_groups.html:26 tenancy/forms/bulk_edit.py:147 -#: tenancy/forms/filtersets.py:110 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 netbox/tenancy/forms/filtersets.py:110 msgid "Priority" msgstr "" -#: circuits/forms/bulk_import.py:39 circuits/forms/bulk_import.py:54 -#: circuits/forms/bulk_import.py:77 +#: netbox/circuits/forms/bulk_import.py:39 +#: netbox/circuits/forms/bulk_import.py:54 +#: netbox/circuits/forms/bulk_import.py:77 msgid "Assigned provider" msgstr "" -#: circuits/forms/bulk_import.py:83 +#: netbox/circuits/forms/bulk_import.py:83 msgid "Assigned provider account" msgstr "" -#: circuits/forms/bulk_import.py:90 +#: netbox/circuits/forms/bulk_import.py:90 msgid "Type of circuit" msgstr "" -#: circuits/forms/bulk_import.py:95 dcim/forms/bulk_import.py:90 -#: dcim/forms/bulk_import.py:149 dcim/forms/bulk_import.py:250 -#: dcim/forms/bulk_import.py:507 dcim/forms/bulk_import.py:661 -#: dcim/forms/bulk_import.py:1373 ipam/forms/bulk_import.py:194 -#: ipam/forms/bulk_import.py:259 ipam/forms/bulk_import.py:295 -#: ipam/forms/bulk_import.py:452 virtualization/forms/bulk_import.py:56 -#: virtualization/forms/bulk_import.py:82 vpn/forms/bulk_import.py:39 -#: wireless/forms/bulk_import.py:45 +#: netbox/circuits/forms/bulk_import.py:95 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 +#: netbox/virtualization/forms/bulk_import.py:56 +#: netbox/virtualization/forms/bulk_import.py:82 +#: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "" -#: circuits/forms/bulk_import.py:102 circuits/forms/bulk_import.py:162 -#: dcim/forms/bulk_import.py:111 dcim/forms/bulk_import.py:156 -#: dcim/forms/bulk_import.py:338 dcim/forms/bulk_import.py:483 -#: dcim/forms/bulk_import.py:1223 dcim/forms/bulk_import.py:1368 -#: dcim/forms/bulk_import.py:1432 ipam/forms/bulk_import.py:42 -#: ipam/forms/bulk_import.py:71 ipam/forms/bulk_import.py:99 -#: ipam/forms/bulk_import.py:119 ipam/forms/bulk_import.py:139 -#: ipam/forms/bulk_import.py:168 ipam/forms/bulk_import.py:254 -#: ipam/forms/bulk_import.py:290 ipam/forms/bulk_import.py:447 -#: virtualization/forms/bulk_import.py:70 -#: virtualization/forms/bulk_import.py:119 vpn/forms/bulk_import.py:63 -#: wireless/forms/bulk_import.py:59 wireless/forms/bulk_import.py:101 +#: netbox/circuits/forms/bulk_import.py:102 +#: netbox/circuits/forms/bulk_import.py:162 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 +#: netbox/virtualization/forms/bulk_import.py:70 +#: netbox/virtualization/forms/bulk_import.py:119 +#: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 +#: netbox/wireless/forms/bulk_import.py:101 msgid "Assigned tenant" msgstr "" -#: circuits/forms/bulk_import.py:120 -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination_fields.html:15 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 +#: netbox/circuits/forms/bulk_import.py:120 +#: netbox/templates/circuits/inc/circuit_termination.html:6 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:15 +#: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 +#: netbox/vpn/forms/bulk_import.py:100 netbox/vpn/forms/filtersets.py:77 msgid "Termination" msgstr "" -#: circuits/forms/bulk_import.py:130 circuits/forms/filtersets.py:147 -#: circuits/forms/filtersets.py:227 circuits/forms/model_forms.py:144 +#: netbox/circuits/forms/bulk_import.py:130 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "" -#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 -#: circuits/forms/filtersets.py:200 dcim/forms/bulk_edit.py:338 -#: dcim/forms/bulk_edit.py:441 dcim/forms/bulk_edit.py:682 -#: dcim/forms/bulk_edit.py:729 dcim/forms/bulk_edit.py:882 -#: dcim/forms/bulk_import.py:235 dcim/forms/bulk_import.py:315 -#: dcim/forms/bulk_import.py:546 dcim/forms/bulk_import.py:1317 -#: dcim/forms/bulk_import.py:1351 dcim/forms/filtersets.py:95 -#: dcim/forms/filtersets.py:322 dcim/forms/filtersets.py:356 -#: dcim/forms/filtersets.py:396 dcim/forms/filtersets.py:447 -#: dcim/forms/filtersets.py:719 dcim/forms/filtersets.py:762 -#: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1006 -#: dcim/forms/filtersets.py:1026 dcim/forms/filtersets.py:1090 -#: dcim/forms/filtersets.py:1120 dcim/forms/filtersets.py:1129 -#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1264 -#: dcim/forms/filtersets.py:1289 dcim/forms/filtersets.py:1308 -#: dcim/forms/filtersets.py:1331 dcim/forms/filtersets.py:1442 -#: dcim/forms/filtersets.py:1466 dcim/forms/filtersets.py:1490 -#: dcim/forms/filtersets.py:1508 dcim/forms/filtersets.py:1525 -#: dcim/forms/model_forms.py:180 dcim/forms/model_forms.py:243 -#: dcim/forms/model_forms.py:468 dcim/forms/model_forms.py:728 -#: dcim/tables/devices.py:157 dcim/tables/power.py:30 dcim/tables/racks.py:118 -#: dcim/tables/racks.py:212 extras/filtersets.py:536 -#: extras/forms/filtersets.py:320 ipam/forms/filtersets.py:173 -#: ipam/forms/filtersets.py:414 ipam/forms/filtersets.py:437 -#: ipam/forms/filtersets.py:467 templates/dcim/device.html:26 -#: templates/dcim/device_edit.html:30 -#: templates/dcim/inc/cable_termination.html:12 templates/dcim/location.html:26 -#: templates/dcim/powerpanel.html:26 templates/dcim/rack.html:24 -#: templates/dcim/rackreservation.html:32 virtualization/forms/filtersets.py:46 -#: virtualization/forms/filtersets.py:100 wireless/forms/model_forms.py:87 -#: wireless/forms/model_forms.py:129 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 +#: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/filtersets.py:173 netbox/ipam/forms/filtersets.py:414 +#: netbox/ipam/forms/filtersets.py:437 netbox/ipam/forms/filtersets.py:467 +#: netbox/templates/dcim/device.html:26 +#: netbox/templates/dcim/device_edit.html:30 +#: netbox/templates/dcim/inc/cable_termination.html:12 +#: netbox/templates/dcim/location.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 +#: netbox/templates/dcim/rackreservation.html:32 +#: netbox/virtualization/forms/filtersets.py:46 +#: netbox/virtualization/forms/filtersets.py:100 +#: netbox/wireless/forms/model_forms.py:87 +#: netbox/wireless/forms/model_forms.py:129 msgid "Location" msgstr "" -#: circuits/forms/filtersets.py:32 circuits/forms/filtersets.py:120 -#: dcim/forms/filtersets.py:144 dcim/forms/filtersets.py:158 -#: dcim/forms/filtersets.py:174 dcim/forms/filtersets.py:206 -#: dcim/forms/filtersets.py:328 dcim/forms/filtersets.py:400 -#: dcim/forms/filtersets.py:471 dcim/forms/filtersets.py:723 -#: dcim/forms/filtersets.py:1091 netbox/navigation/menu.py:31 -#: netbox/navigation/menu.py:33 tenancy/forms/filtersets.py:42 -#: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 -#: tenancy/views.py:19 virtualization/forms/filtersets.py:37 -#: virtualization/forms/filtersets.py:48 virtualization/forms/filtersets.py:106 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 +#: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 +#: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 +#: netbox/virtualization/forms/filtersets.py:37 +#: netbox/virtualization/forms/filtersets.py:48 +#: netbox/virtualization/forms/filtersets.py:106 msgid "Contacts" msgstr "" -#: circuits/forms/filtersets.py:37 circuits/forms/filtersets.py:157 -#: dcim/forms/bulk_edit.py:112 dcim/forms/bulk_edit.py:313 -#: dcim/forms/bulk_edit.py:857 dcim/forms/bulk_import.py:93 -#: dcim/forms/filtersets.py:73 dcim/forms/filtersets.py:185 -#: dcim/forms/filtersets.py:211 dcim/forms/filtersets.py:334 -#: dcim/forms/filtersets.py:425 dcim/forms/filtersets.py:739 -#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1097 dcim/forms/filtersets.py:1136 -#: dcim/forms/filtersets.py:1576 dcim/forms/filtersets.py:1600 -#: dcim/forms/filtersets.py:1624 dcim/forms/model_forms.py:112 -#: dcim/forms/object_create.py:375 dcim/tables/devices.py:143 -#: dcim/tables/sites.py:85 extras/filtersets.py:503 ipam/forms/bulk_edit.py:208 -#: ipam/forms/bulk_edit.py:474 ipam/forms/filtersets.py:217 -#: ipam/forms/filtersets.py:422 ipam/forms/filtersets.py:475 -#: templates/dcim/device.html:18 templates/dcim/rack.html:16 -#: templates/dcim/rackreservation.html:22 templates/dcim/region.html:26 -#: templates/dcim/site.html:31 templates/ipam/prefix.html:49 -#: templates/ipam/vlan.html:16 virtualization/forms/bulk_edit.py:81 -#: virtualization/forms/filtersets.py:59 virtualization/forms/filtersets.py:133 -#: virtualization/forms/model_forms.py:92 vpn/forms/filtersets.py:257 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 +#: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:208 +#: netbox/ipam/forms/bulk_edit.py:474 netbox/ipam/forms/filtersets.py:217 +#: netbox/ipam/forms/filtersets.py:422 netbox/ipam/forms/filtersets.py:475 +#: netbox/templates/dcim/device.html:18 netbox/templates/dcim/rack.html:16 +#: netbox/templates/dcim/rackreservation.html:22 +#: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 +#: netbox/templates/ipam/prefix.html:49 netbox/templates/ipam/vlan.html:16 +#: netbox/virtualization/forms/bulk_edit.py:81 +#: netbox/virtualization/forms/filtersets.py:59 +#: netbox/virtualization/forms/filtersets.py:133 +#: netbox/virtualization/forms/model_forms.py:92 +#: netbox/vpn/forms/filtersets.py:257 msgid "Region" msgstr "" -#: circuits/forms/filtersets.py:42 circuits/forms/filtersets.py:162 -#: dcim/forms/bulk_edit.py:321 dcim/forms/bulk_edit.py:865 -#: dcim/forms/filtersets.py:78 dcim/forms/filtersets.py:190 -#: dcim/forms/filtersets.py:216 dcim/forms/filtersets.py:347 -#: dcim/forms/filtersets.py:430 dcim/forms/filtersets.py:744 -#: dcim/forms/filtersets.py:988 dcim/forms/filtersets.py:1102 -#: dcim/forms/filtersets.py:1141 dcim/forms/object_create.py:383 -#: extras/filtersets.py:520 ipam/forms/bulk_edit.py:213 -#: ipam/forms/bulk_edit.py:479 ipam/forms/filtersets.py:222 -#: ipam/forms/filtersets.py:427 ipam/forms/filtersets.py:480 -#: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 -#: virtualization/forms/filtersets.py:138 -#: virtualization/forms/model_forms.py:98 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:213 netbox/ipam/forms/bulk_edit.py:479 +#: netbox/ipam/forms/filtersets.py:222 netbox/ipam/forms/filtersets.py:427 +#: netbox/ipam/forms/filtersets.py:480 +#: netbox/virtualization/forms/bulk_edit.py:86 +#: netbox/virtualization/forms/filtersets.py:69 +#: netbox/virtualization/forms/filtersets.py:138 +#: netbox/virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "" -#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 -#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 -#: core/forms/filtersets.py:67 core/forms/filtersets.py:135 -#: dcim/forms/bulk_edit.py:828 dcim/forms/filtersets.py:172 -#: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:915 -#: dcim/forms/filtersets.py:1007 dcim/forms/filtersets.py:1131 -#: dcim/forms/filtersets.py:1239 dcim/forms/filtersets.py:1263 -#: dcim/forms/filtersets.py:1288 dcim/forms/filtersets.py:1307 -#: dcim/forms/filtersets.py:1327 dcim/forms/filtersets.py:1441 -#: dcim/forms/filtersets.py:1465 dcim/forms/filtersets.py:1489 -#: dcim/forms/filtersets.py:1507 dcim/forms/filtersets.py:1523 -#: extras/forms/bulk_edit.py:90 extras/forms/filtersets.py:44 -#: extras/forms/filtersets.py:134 extras/forms/filtersets.py:165 -#: extras/forms/filtersets.py:205 extras/forms/filtersets.py:221 -#: extras/forms/filtersets.py:252 extras/forms/filtersets.py:276 -#: extras/forms/filtersets.py:441 ipam/forms/filtersets.py:99 -#: ipam/forms/filtersets.py:266 ipam/forms/filtersets.py:307 -#: ipam/forms/filtersets.py:382 ipam/forms/filtersets.py:468 -#: ipam/forms/filtersets.py:527 ipam/forms/filtersets.py:545 -#: netbox/tables/tables.py:256 virtualization/forms/filtersets.py:45 -#: virtualization/forms/filtersets.py:103 -#: virtualization/forms/filtersets.py:198 -#: virtualization/forms/filtersets.py:243 vpn/forms/filtersets.py:213 -#: wireless/forms/bulk_edit.py:150 wireless/forms/filtersets.py:34 -#: wireless/forms/filtersets.py:74 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 +#: netbox/virtualization/forms/filtersets.py:45 +#: netbox/virtualization/forms/filtersets.py:103 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 +#: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "" -#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:63 -#: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 -#: templates/circuits/provideraccount.html:24 +#: netbox/circuits/forms/filtersets.py:73 netbox/circuits/tables/circuits.py:63 +#: netbox/circuits/tables/providers.py:66 +#: netbox/templates/circuits/circuit.html:22 +#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "" -#: circuits/forms/filtersets.py:217 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "" -#: circuits/forms/filtersets.py:250 extras/forms/model_forms.py:582 -#: ipam/forms/filtersets.py:142 ipam/forms/filtersets.py:546 -#: ipam/forms/model_forms.py:323 templates/extras/configcontext.html:60 -#: templates/ipam/ipaddress.html:59 templates/ipam/vlan_edit.html:30 -#: tenancy/forms/filtersets.py:87 users/forms/model_forms.py:314 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:314 msgid "Assignment" msgstr "" -#: circuits/forms/filtersets.py:265 circuits/forms/model_forms.py:195 -#: circuits/tables/circuits.py:155 dcim/forms/bulk_edit.py:117 -#: dcim/forms/bulk_import.py:100 dcim/forms/model_forms.py:117 -#: dcim/tables/sites.py:89 extras/forms/filtersets.py:480 -#: ipam/filtersets.py:999 ipam/forms/bulk_edit.py:493 -#: ipam/forms/bulk_import.py:436 ipam/forms/model_forms.py:528 -#: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:122 ipam/tables/vlans.py:226 -#: templates/circuits/circuitgroupassignment.html:22 -#: templates/dcim/interface.html:284 templates/dcim/site.html:37 -#: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 -#: templates/tenancy/contact.html:21 templates/tenancy/tenant.html:20 -#: templates/users/group.html:6 templates/users/group.html:14 -#: templates/virtualization/cluster.html:29 templates/vpn/tunnel.html:29 -#: templates/wireless/wirelesslan.html:18 tenancy/forms/bulk_edit.py:43 -#: tenancy/forms/bulk_edit.py:94 tenancy/forms/bulk_import.py:40 -#: tenancy/forms/bulk_import.py:81 tenancy/forms/filtersets.py:48 -#: tenancy/forms/filtersets.py:78 tenancy/forms/filtersets.py:97 -#: tenancy/forms/model_forms.py:45 tenancy/forms/model_forms.py:97 -#: tenancy/forms/model_forms.py:122 tenancy/tables/contacts.py:60 -#: tenancy/tables/contacts.py:107 tenancy/tables/tenants.py:42 -#: users/filtersets.py:62 users/filtersets.py:185 users/forms/filtersets.py:31 -#: users/forms/filtersets.py:37 users/forms/filtersets.py:79 -#: virtualization/forms/bulk_edit.py:65 virtualization/forms/bulk_import.py:47 -#: virtualization/forms/filtersets.py:85 virtualization/forms/model_forms.py:66 -#: virtualization/tables/clusters.py:70 vpn/forms/bulk_edit.py:112 -#: vpn/forms/bulk_import.py:158 vpn/forms/filtersets.py:116 -#: vpn/tables/crypto.py:31 vpn/tables/tunnels.py:44 -#: wireless/forms/bulk_edit.py:48 wireless/forms/bulk_import.py:36 -#: wireless/forms/filtersets.py:46 wireless/forms/model_forms.py:40 -#: wireless/tables/wirelesslan.py:48 +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:493 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 netbox/tenancy/forms/filtersets.py:48 +#: netbox/tenancy/forms/filtersets.py:78 netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 netbox/tenancy/tables/contacts.py:60 +#: netbox/tenancy/tables/contacts.py:107 netbox/tenancy/tables/tenants.py:42 +#: netbox/users/filtersets.py:62 netbox/users/filtersets.py:185 +#: netbox/users/forms/filtersets.py:31 netbox/users/forms/filtersets.py:37 +#: netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 msgid "Group" msgstr "" -#: circuits/forms/model_forms.py:182 templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 msgid "Circuit Group" msgstr "" -#: circuits/models/circuits.py:27 dcim/models/cables.py:67 -#: dcim/models/device_component_templates.py:517 -#: dcim/models/device_component_templates.py:617 -#: dcim/models/device_components.py:975 dcim/models/device_components.py:1049 -#: dcim/models/device_components.py:1204 dcim/models/devices.py:479 -#: dcim/models/racks.py:224 extras/models/tags.py:28 +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:517 +#: netbox/dcim/models/device_component_templates.py:617 +#: netbox/dcim/models/device_components.py:975 +#: netbox/dcim/models/device_components.py:1049 +#: netbox/dcim/models/device_components.py:1204 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 +#: netbox/extras/models/tags.py:28 msgid "color" msgstr "" -#: circuits/models/circuits.py:36 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "" -#: circuits/models/circuits.py:37 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "" -#: circuits/models/circuits.py:48 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "" -#: circuits/models/circuits.py:49 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "" -#: circuits/models/circuits.py:69 core/models/data.py:52 core/models/jobs.py:84 -#: dcim/models/cables.py:49 dcim/models/devices.py:653 -#: dcim/models/devices.py:1173 dcim/models/devices.py:1399 -#: dcim/models/power.py:96 dcim/models/racks.py:297 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 -#: ipam/models/ip.py:730 ipam/models/vlans.py:195 -#: virtualization/models/clusters.py:74 -#: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 -#: wireless/models.py:95 wireless/models.py:159 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:84 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1173 +#: netbox/dcim/models/devices.py:1399 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 +#: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 +#: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 +#: netbox/virtualization/models/virtualmachines.py:84 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "" -#: circuits/models/circuits.py:84 templates/core/plugin.html:20 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:20 msgid "installed" msgstr "" -#: circuits/models/circuits.py:89 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "" -#: circuits/models/circuits.py:94 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "" -#: circuits/models/circuits.py:95 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "" -#: circuits/models/circuits.py:137 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "" -#: circuits/models/circuits.py:138 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "" -#: circuits/models/circuits.py:170 +#: netbox/circuits/models/circuits.py:170 msgid "circuit group" msgstr "" -#: circuits/models/circuits.py:171 +#: netbox/circuits/models/circuits.py:171 msgid "circuit groups" msgstr "" -#: circuits/models/circuits.py:195 ipam/models/fhrp.py:93 -#: tenancy/models/contacts.py:134 +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 msgid "priority" msgstr "" -#: circuits/models/circuits.py:213 +#: netbox/circuits/models/circuits.py:213 msgid "Circuit group assignment" msgstr "" -#: circuits/models/circuits.py:214 +#: netbox/circuits/models/circuits.py:214 msgid "Circuit group assignments" msgstr "" -#: circuits/models/circuits.py:240 +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "" -#: circuits/models/circuits.py:257 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "" -#: circuits/models/circuits.py:260 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "" -#: circuits/models/circuits.py:265 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "" -#: circuits/models/circuits.py:266 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "" -#: circuits/models/circuits.py:271 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "" -#: circuits/models/circuits.py:272 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "" -#: circuits/models/circuits.py:277 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "" -#: circuits/models/circuits.py:278 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "" -#: circuits/models/circuits.py:281 dcim/models/device_component_templates.py:61 -#: dcim/models/device_components.py:68 dcim/models/racks.py:685 -#: extras/models/configs.py:45 extras/models/configs.py:219 -#: extras/models/customfields.py:125 extras/models/models.py:61 -#: extras/models/models.py:158 extras/models/models.py:396 -#: extras/models/models.py:511 extras/models/notifications.py:131 -#: extras/models/staging.py:31 extras/models/tags.py:32 -#: netbox/models/__init__.py:110 netbox/models/__init__.py:145 -#: netbox/models/__init__.py:191 users/models/permissions.py:24 -#: users/models/tokens.py:57 users/models/users.py:33 -#: virtualization/models/virtualmachines.py:289 +#: netbox/circuits/models/circuits.py:281 +#: netbox/dcim/models/device_component_templates.py:61 +#: netbox/dcim/models/device_components.py:68 netbox/dcim/models/racks.py:685 +#: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "" -#: circuits/models/circuits.py:294 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "" -#: circuits/models/circuits.py:295 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "" -#: circuits/models/circuits.py:308 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" -#: circuits/models/circuits.py:310 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" -#: circuits/models/providers.py:22 circuits/models/providers.py:66 -#: circuits/models/providers.py:104 core/models/data.py:39 -#: core/models/jobs.py:45 dcim/models/device_component_templates.py:43 -#: dcim/models/device_components.py:53 dcim/models/devices.py:593 -#: dcim/models/devices.py:1330 dcim/models/devices.py:1395 -#: dcim/models/power.py:39 dcim/models/power.py:92 dcim/models/racks.py:262 -#: dcim/models/sites.py:138 extras/models/configs.py:36 -#: extras/models/configs.py:215 extras/models/customfields.py:92 -#: extras/models/models.py:56 extras/models/models.py:153 -#: extras/models/models.py:296 extras/models/models.py:392 -#: extras/models/models.py:501 extras/models/models.py:596 -#: extras/models/notifications.py:126 extras/models/scripts.py:30 -#: extras/models/staging.py:26 ipam/models/asns.py:18 ipam/models/fhrp.py:25 -#: ipam/models/services.py:52 ipam/models/services.py:88 -#: ipam/models/vlans.py:36 ipam/models/vlans.py:184 ipam/models/vrfs.py:22 -#: ipam/models/vrfs.py:79 netbox/models/__init__.py:137 -#: netbox/models/__init__.py:181 tenancy/models/contacts.py:64 -#: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 -#: users/models/permissions.py:20 users/models/users.py:28 -#: virtualization/models/clusters.py:57 -#: virtualization/models/virtualmachines.py:72 -#: virtualization/models/virtualmachines.py:279 vpn/models/crypto.py:24 -#: vpn/models/crypto.py:71 vpn/models/crypto.py:131 vpn/models/crypto.py:183 -#: vpn/models/crypto.py:221 vpn/models/l2vpn.py:22 vpn/models/tunnels.py:35 -#: wireless/models.py:51 +#: netbox/circuits/models/providers.py:22 +#: netbox/circuits/models/providers.py:66 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:45 +#: netbox/dcim/models/device_component_templates.py:43 +#: netbox/dcim/models/device_components.py:53 netbox/dcim/models/devices.py:593 +#: netbox/dcim/models/devices.py:1330 netbox/dcim/models/devices.py:1395 +#: netbox/dcim/models/power.py:39 netbox/dcim/models/power.py:92 +#: netbox/dcim/models/racks.py:262 netbox/dcim/models/sites.py:138 +#: netbox/extras/models/configs.py:36 netbox/extras/models/configs.py:215 +#: netbox/extras/models/customfields.py:92 netbox/extras/models/models.py:56 +#: netbox/extras/models/models.py:153 netbox/extras/models/models.py:296 +#: netbox/extras/models/models.py:392 netbox/extras/models/models.py:501 +#: netbox/extras/models/models.py:596 netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 +#: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 +#: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 +#: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 +#: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 +#: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 +#: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 +#: netbox/virtualization/models/virtualmachines.py:72 +#: netbox/virtualization/models/virtualmachines.py:279 +#: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 +#: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 +#: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "" -#: circuits/models/providers.py:25 +#: netbox/circuits/models/providers.py:25 msgid "Full name of the provider" msgstr "" -#: circuits/models/providers.py:28 dcim/models/devices.py:86 -#: dcim/models/racks.py:137 dcim/models/sites.py:149 -#: extras/models/models.py:506 ipam/models/asns.py:23 ipam/models/vlans.py:40 -#: netbox/models/__init__.py:141 netbox/models/__init__.py:186 -#: tenancy/models/tenants.py:25 tenancy/models/tenants.py:49 -#: vpn/models/l2vpn.py:27 wireless/models.py:56 +#: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "" -#: circuits/models/providers.py:42 +#: netbox/circuits/models/providers.py:42 msgid "provider" msgstr "" -#: circuits/models/providers.py:43 +#: netbox/circuits/models/providers.py:43 msgid "providers" msgstr "" -#: circuits/models/providers.py:63 +#: netbox/circuits/models/providers.py:63 msgid "account ID" msgstr "" -#: circuits/models/providers.py:86 +#: netbox/circuits/models/providers.py:86 msgid "provider account" msgstr "" -#: circuits/models/providers.py:87 +#: netbox/circuits/models/providers.py:87 msgid "provider accounts" msgstr "" -#: circuits/models/providers.py:115 +#: netbox/circuits/models/providers.py:115 msgid "service ID" msgstr "" -#: circuits/models/providers.py:126 +#: netbox/circuits/models/providers.py:126 msgid "provider network" msgstr "" -#: circuits/models/providers.py:127 +#: netbox/circuits/models/providers.py:127 msgid "provider networks" msgstr "" -#: circuits/tables/circuits.py:32 circuits/tables/circuits.py:132 -#: circuits/tables/providers.py:18 circuits/tables/providers.py:69 -#: circuits/tables/providers.py:99 core/tables/data.py:16 -#: core/tables/jobs.py:14 core/tables/plugins.py:44 core/tables/tasks.py:11 -#: core/tables/tasks.py:115 dcim/forms/filtersets.py:63 -#: dcim/forms/object_create.py:43 dcim/tables/devices.py:52 -#: dcim/tables/devices.py:92 dcim/tables/devices.py:134 -#: dcim/tables/devices.py:289 dcim/tables/devices.py:392 -#: dcim/tables/devices.py:433 dcim/tables/devices.py:482 -#: dcim/tables/devices.py:531 dcim/tables/devices.py:648 -#: dcim/tables/devices.py:731 dcim/tables/devices.py:778 -#: dcim/tables/devices.py:841 dcim/tables/devices.py:911 -#: dcim/tables/devices.py:974 dcim/tables/devices.py:994 -#: dcim/tables/devices.py:1023 dcim/tables/devices.py:1053 -#: dcim/tables/devicetypes.py:31 dcim/tables/power.py:22 -#: dcim/tables/power.py:62 dcim/tables/racks.py:24 dcim/tables/racks.py:113 -#: dcim/tables/sites.py:24 dcim/tables/sites.py:51 dcim/tables/sites.py:78 -#: dcim/tables/sites.py:130 extras/forms/filtersets.py:213 -#: extras/tables/tables.py:58 extras/tables/tables.py:122 -#: extras/tables/tables.py:155 extras/tables/tables.py:180 -#: extras/tables/tables.py:246 extras/tables/tables.py:361 -#: extras/tables/tables.py:378 extras/tables/tables.py:401 -#: extras/tables/tables.py:439 extras/tables/tables.py:491 -#: extras/tables/tables.py:514 ipam/forms/bulk_edit.py:407 -#: ipam/forms/filtersets.py:386 ipam/tables/asn.py:16 ipam/tables/ip.py:85 -#: ipam/tables/ip.py:160 ipam/tables/services.py:15 ipam/tables/services.py:40 -#: ipam/tables/vlans.py:64 ipam/tables/vlans.py:114 ipam/tables/vrfs.py:26 -#: ipam/tables/vrfs.py:68 templates/circuits/circuitgroup.html:28 -#: templates/circuits/circuittype.html:22 -#: templates/circuits/provideraccount.html:28 -#: templates/circuits/providernetwork.html:24 templates/core/datasource.html:34 -#: templates/core/job.html:44 templates/core/plugin.html:54 -#: templates/core/rq_worker.html:43 templates/dcim/consoleport.html:28 -#: templates/dcim/consoleserverport.html:28 templates/dcim/devicebay.html:24 -#: templates/dcim/devicerole.html:26 templates/dcim/frontport.html:28 -#: templates/dcim/inc/interface_vlans_table.html:5 -#: templates/dcim/inc/panels/inventory_items.html:18 -#: templates/dcim/interface.html:38 templates/dcim/interface.html:165 -#: templates/dcim/inventoryitem.html:28 -#: templates/dcim/inventoryitemrole.html:18 templates/dcim/location.html:29 -#: templates/dcim/manufacturer.html:36 templates/dcim/modulebay.html:30 -#: templates/dcim/platform.html:29 templates/dcim/poweroutlet.html:28 -#: templates/dcim/powerport.html:28 templates/dcim/rackrole.html:22 -#: templates/dcim/rearport.html:28 templates/dcim/region.html:29 -#: templates/dcim/sitegroup.html:29 templates/dcim/virtualdevicecontext.html:18 -#: templates/extras/configcontext.html:13 -#: templates/extras/configtemplate.html:13 templates/extras/customfield.html:13 -#: templates/extras/customlink.html:13 templates/extras/eventrule.html:13 -#: templates/extras/exporttemplate.html:15 -#: templates/extras/notificationgroup.html:14 -#: templates/extras/savedfilter.html:13 templates/extras/script_list.html:44 -#: templates/extras/tag.html:14 templates/extras/webhook.html:13 -#: templates/ipam/asnrange.html:15 templates/ipam/fhrpgroup.html:30 -#: templates/ipam/rir.html:22 templates/ipam/role.html:22 -#: templates/ipam/routetarget.html:13 templates/ipam/service.html:24 -#: templates/ipam/servicetemplate.html:15 templates/ipam/vlan.html:35 -#: templates/ipam/vlangroup.html:30 templates/tenancy/contact.html:25 -#: templates/tenancy/contactgroup.html:21 templates/tenancy/contactrole.html:18 -#: templates/tenancy/tenantgroup.html:29 templates/users/group.html:17 -#: templates/users/objectpermission.html:17 -#: templates/virtualization/cluster.html:13 -#: templates/virtualization/clustergroup.html:22 -#: templates/virtualization/clustertype.html:22 -#: templates/virtualization/virtualdisk.html:25 -#: templates/virtualization/virtualmachine.html:15 -#: templates/virtualization/vminterface.html:25 templates/vpn/ikepolicy.html:13 -#: templates/vpn/ikeproposal.html:13 templates/vpn/ipsecpolicy.html:13 -#: templates/vpn/ipsecprofile.html:13 templates/vpn/ipsecprofile.html:36 -#: templates/vpn/ipsecprofile.html:69 templates/vpn/ipsecproposal.html:13 -#: templates/vpn/l2vpn.html:14 templates/vpn/tunnel.html:21 -#: templates/vpn/tunnelgroup.html:26 -#: templates/wireless/wirelesslangroup.html:29 tenancy/tables/contacts.py:19 -#: tenancy/tables/contacts.py:41 tenancy/tables/contacts.py:56 -#: tenancy/tables/tenants.py:16 tenancy/tables/tenants.py:38 users/tables.py:62 -#: users/tables.py:76 virtualization/forms/bulk_create.py:20 -#: virtualization/forms/object_create.py:13 -#: virtualization/forms/object_create.py:23 -#: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 -#: virtualization/tables/clusters.py:62 -#: virtualization/tables/virtualmachines.py:55 -#: virtualization/tables/virtualmachines.py:139 -#: virtualization/tables/virtualmachines.py:194 vpn/tables/crypto.py:18 -#: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 -#: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 -#: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 -#: wireless/tables/wirelesslan.py:79 +#: netbox/circuits/tables/circuits.py:32 netbox/circuits/tables/circuits.py:132 +#: netbox/circuits/tables/providers.py:18 +#: netbox/circuits/tables/providers.py:69 +#: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 +#: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 +#: 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:648 netbox/dcim/tables/devices.py:731 +#: netbox/dcim/tables/devices.py:778 netbox/dcim/tables/devices.py:841 +#: netbox/dcim/tables/devices.py:911 netbox/dcim/tables/devices.py:974 +#: netbox/dcim/tables/devices.py:994 netbox/dcim/tables/devices.py:1023 +#: netbox/dcim/tables/devices.py:1053 netbox/dcim/tables/devicetypes.py:31 +#: 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 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:407 netbox/ipam/forms/filtersets.py:386 +#: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 +#: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 +#: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 +#: netbox/templates/circuits/provideraccount.html:28 +#: netbox/templates/circuits/providernetwork.html:24 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:54 netbox/templates/core/rq_worker.html:43 +#: netbox/templates/dcim/consoleport.html:28 +#: netbox/templates/dcim/consoleserverport.html:28 +#: netbox/templates/dcim/devicebay.html:24 +#: netbox/templates/dcim/devicerole.html:26 +#: netbox/templates/dcim/frontport.html:28 +#: netbox/templates/dcim/inc/interface_vlans_table.html:5 +#: netbox/templates/dcim/inc/panels/inventory_items.html:18 +#: netbox/templates/dcim/interface.html:38 +#: netbox/templates/dcim/interface.html:165 +#: netbox/templates/dcim/inventoryitem.html:28 +#: netbox/templates/dcim/inventoryitemrole.html:18 +#: netbox/templates/dcim/location.html:29 +#: netbox/templates/dcim/manufacturer.html:36 +#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/platform.html:29 +#: netbox/templates/dcim/poweroutlet.html:28 +#: netbox/templates/dcim/powerport.html:28 +#: netbox/templates/dcim/rackrole.html:22 +#: netbox/templates/dcim/rearport.html:28 netbox/templates/dcim/region.html:29 +#: netbox/templates/dcim/sitegroup.html:29 +#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/extras/configcontext.html:13 +#: netbox/templates/extras/configtemplate.html:13 +#: netbox/templates/extras/customfield.html:13 +#: netbox/templates/extras/customlink.html:13 +#: netbox/templates/extras/eventrule.html:13 +#: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 +#: netbox/templates/extras/savedfilter.html:13 +#: netbox/templates/extras/script_list.html:45 +#: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 +#: netbox/templates/ipam/asnrange.html:15 +#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 +#: netbox/templates/ipam/role.html:22 netbox/templates/ipam/routetarget.html:13 +#: netbox/templates/ipam/service.html:24 +#: netbox/templates/ipam/servicetemplate.html:15 +#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 +#: netbox/templates/tenancy/contact.html:25 +#: netbox/templates/tenancy/contactgroup.html:21 +#: netbox/templates/tenancy/contactrole.html:18 +#: netbox/templates/tenancy/tenantgroup.html:29 +#: netbox/templates/users/group.html:17 +#: netbox/templates/users/objectpermission.html:17 +#: netbox/templates/virtualization/cluster.html:13 +#: netbox/templates/virtualization/clustergroup.html:22 +#: netbox/templates/virtualization/clustertype.html:22 +#: netbox/templates/virtualization/virtualdisk.html:25 +#: netbox/templates/virtualization/virtualmachine.html:15 +#: netbox/templates/virtualization/vminterface.html:25 +#: netbox/templates/vpn/ikepolicy.html:13 +#: netbox/templates/vpn/ikeproposal.html:13 +#: netbox/templates/vpn/ipsecpolicy.html:13 +#: netbox/templates/vpn/ipsecprofile.html:13 +#: netbox/templates/vpn/ipsecprofile.html:36 +#: netbox/templates/vpn/ipsecprofile.html:69 +#: netbox/templates/vpn/ipsecproposal.html:13 +#: netbox/templates/vpn/l2vpn.html:14 netbox/templates/vpn/tunnel.html:21 +#: netbox/templates/vpn/tunnelgroup.html:26 +#: netbox/templates/wireless/wirelesslangroup.html:29 +#: netbox/tenancy/tables/contacts.py:19 netbox/tenancy/tables/contacts.py:41 +#: netbox/tenancy/tables/contacts.py:56 netbox/tenancy/tables/tenants.py:16 +#: netbox/tenancy/tables/tenants.py:38 netbox/users/tables.py:62 +#: netbox/users/tables.py:76 netbox/virtualization/forms/bulk_create.py:20 +#: netbox/virtualization/forms/object_create.py:13 +#: netbox/virtualization/forms/object_create.py:23 +#: netbox/virtualization/tables/clusters.py:17 +#: netbox/virtualization/tables/clusters.py:39 +#: netbox/virtualization/tables/clusters.py:62 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 +#: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 +#: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 +#: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 +#: netbox/vpn/tables/tunnels.py:18 netbox/vpn/tables/tunnels.py:40 +#: netbox/wireless/tables/wirelesslan.py:18 +#: netbox/wireless/tables/wirelesslan.py:79 msgid "Name" msgstr "" -#: circuits/tables/circuits.py:41 circuits/tables/circuits.py:138 -#: circuits/tables/providers.py:45 circuits/tables/providers.py:79 -#: netbox/navigation/menu.py:266 netbox/navigation/menu.py:270 -#: netbox/navigation/menu.py:272 templates/circuits/provider.html:57 -#: templates/circuits/provideraccount.html:44 -#: templates/circuits/providernetwork.html:50 +#: netbox/circuits/tables/circuits.py:41 netbox/circuits/tables/circuits.py:138 +#: netbox/circuits/tables/providers.py:45 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 +#: netbox/templates/circuits/provider.html:57 +#: netbox/templates/circuits/provideraccount.html:44 +#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "" -#: circuits/tables/circuits.py:55 templates/circuits/circuit.html:26 +#: netbox/circuits/tables/circuits.py:55 +#: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "" -#: circuits/tables/circuits.py:69 wireless/forms/model_forms.py:160 +#: netbox/circuits/tables/circuits.py:69 +#: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "" -#: circuits/tables/circuits.py:74 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "" -#: circuits/tables/circuits.py:77 templates/circuits/circuit.html:55 +#: netbox/circuits/tables/circuits.py:77 +#: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "" -#: circuits/tables/circuits.py:80 circuits/tables/providers.py:48 -#: circuits/tables/providers.py:82 circuits/tables/providers.py:107 -#: dcim/tables/devices.py:1036 dcim/tables/devicetypes.py:92 -#: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 -#: dcim/tables/power.py:96 dcim/tables/racks.py:84 dcim/tables/racks.py:145 -#: dcim/tables/racks.py:225 dcim/tables/sites.py:108 -#: extras/tables/tables.py:582 ipam/tables/asn.py:69 ipam/tables/fhrp.py:34 -#: ipam/tables/ip.py:136 ipam/tables/ip.py:275 ipam/tables/ip.py:329 -#: ipam/tables/ip.py:397 ipam/tables/services.py:24 ipam/tables/services.py:54 -#: ipam/tables/vlans.py:145 ipam/tables/vrfs.py:47 ipam/tables/vrfs.py:72 -#: templates/dcim/htmx/cable_edit.html:89 templates/generic/bulk_edit.html:86 -#: templates/inc/panels/comments.html:5 tenancy/tables/contacts.py:68 -#: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 -#: virtualization/tables/clusters.py:91 -#: virtualization/tables/virtualmachines.py:82 vpn/tables/crypto.py:37 -#: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 -#: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:61 -#: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 +#: 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:1036 +#: netbox/dcim/tables/devicetypes.py:92 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 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/templates/generic/bulk_edit.html:86 +#: netbox/templates/inc/panels/comments.html:5 +#: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 +#: netbox/utilities/forms/fields/fields.py:29 +#: netbox/virtualization/tables/clusters.py:91 +#: netbox/virtualization/tables/virtualmachines.py:82 +#: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 +#: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 +#: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 +#: netbox/vpn/tables/tunnels.py:61 netbox/wireless/tables/wirelesslan.py:27 +#: netbox/wireless/tables/wirelesslan.py:58 msgid "Comments" msgstr "" -#: circuits/tables/circuits.py:86 templates/tenancy/contact.html:84 -#: tenancy/tables/contacts.py:73 +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 msgid "Assignments" msgstr "" -#: circuits/tables/providers.py:23 +#: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "" -#: circuits/tables/providers.py:29 +#: netbox/circuits/tables/providers.py:29 msgid "Account Count" msgstr "" -#: circuits/tables/providers.py:39 dcim/tables/sites.py:100 +#: netbox/circuits/tables/providers.py:39 netbox/dcim/tables/sites.py:100 msgid "ASN Count" msgstr "" -#: circuits/views.py:331 +#: netbox/circuits/views.py:331 #, python-brace-format msgid "No terminations have been defined for circuit {circuit}." msgstr "" -#: circuits/views.py:380 +#: netbox/circuits/views.py:380 #, python-brace-format msgid "Swapped terminations for circuit {circuit}." msgstr "" -#: core/api/views.py:39 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "" -#: core/choices.py:18 +#: netbox/core/choices.py:18 msgid "New" msgstr "" -#: core/choices.py:19 core/constants.py:18 core/tables/tasks.py:15 -#: templates/core/rq_task.html:77 +#: netbox/core/choices.py:19 netbox/core/constants.py:18 +#: netbox/core/tables/tasks.py:15 netbox/templates/core/rq_task.html:77 msgid "Queued" msgstr "" -#: core/choices.py:20 +#: netbox/core/choices.py:20 msgid "Syncing" msgstr "" -#: core/choices.py:21 core/choices.py:57 core/tables/jobs.py:41 -#: templates/core/job.html:86 +#: netbox/core/choices.py:21 netbox/core/choices.py:57 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "" -#: core/choices.py:22 core/choices.py:59 core/constants.py:20 -#: core/tables/tasks.py:34 dcim/choices.py:187 dcim/choices.py:239 -#: dcim/choices.py:1607 virtualization/choices.py:47 +#: 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:239 +#: netbox/dcim/choices.py:1607 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "" -#: core/choices.py:35 netbox/navigation/menu.py:335 -#: netbox/navigation/menu.py:339 templates/extras/script/base.html:14 -#: templates/extras/script_list.html:7 templates/extras/script_list.html:12 -#: templates/extras/script_result.html:17 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 +#: netbox/templates/extras/script/base.html:14 +#: netbox/templates/extras/script_list.html:7 +#: netbox/templates/extras/script_list.html:12 +#: netbox/templates/extras/script_result.html:17 msgid "Scripts" msgstr "" -#: core/choices.py:36 templates/extras/report/base.html:13 +#: netbox/core/choices.py:36 netbox/templates/extras/report/base.html:13 msgid "Reports" msgstr "" -#: core/choices.py:54 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "" -#: core/choices.py:55 core/constants.py:23 core/tables/jobs.py:32 -#: core/tables/tasks.py:38 templates/core/job.html:73 +#: netbox/core/choices.py:55 netbox/core/constants.py:23 +#: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "" -#: core/choices.py:56 +#: netbox/core/choices.py:56 msgid "Running" msgstr "" -#: core/choices.py:58 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "" -#: core/choices.py:87 core/tables/plugins.py:63 -#: templates/generic/object.html:61 +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 msgid "Updated" msgstr "" -#: core/choices.py:88 +#: netbox/core/choices.py:88 msgid "Deleted" msgstr "" -#: core/constants.py:19 core/tables/tasks.py:30 +#: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "" -#: core/constants.py:21 core/tables/jobs.py:38 templates/core/job.html:82 -#: templates/extras/htmx/script_result.html:8 +#: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 +#: netbox/templates/core/job.html:82 +#: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "" -#: core/constants.py:22 core/tables/tasks.py:26 +#: netbox/core/constants.py:22 netbox/core/tables/tasks.py:26 msgid "Deferred" msgstr "" -#: core/constants.py:24 +#: netbox/core/constants.py:24 msgid "Stopped" msgstr "" -#: core/constants.py:25 +#: netbox/core/constants.py:25 msgid "Cancelled" msgstr "" -#: core/data_backends.py:32 core/tables/plugins.py:51 -#: templates/core/plugin.html:88 templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:32 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:88 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "" -#: core/data_backends.py:50 core/tables/change_logging.py:20 -#: templates/account/profile.html:15 templates/users/user.html:17 -#: users/tables.py:31 +#: netbox/core/data_backends.py:50 netbox/core/tables/change_logging.py:20 +#: netbox/templates/account/profile.html:15 netbox/templates/users/user.html:17 +#: netbox/users/tables.py:31 msgid "Username" msgstr "" -#: core/data_backends.py:52 core/data_backends.py:58 +#: netbox/core/data_backends.py:52 netbox/core/data_backends.py:58 msgid "Only used for cloning with HTTP(S)" msgstr "" -#: core/data_backends.py:56 templates/account/base.html:23 -#: templates/account/password.html:12 users/forms/model_forms.py:170 +#: netbox/core/data_backends.py:56 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 +#: netbox/users/forms/model_forms.py:170 msgid "Password" msgstr "" -#: core/data_backends.py:62 +#: netbox/core/data_backends.py:62 msgid "Branch" msgstr "" -#: core/data_backends.py:120 +#: netbox/core/data_backends.py:120 #, python-brace-format msgid "Fetching remote data failed ({name}): {error}" msgstr "" -#: core/data_backends.py:133 +#: netbox/core/data_backends.py:133 msgid "AWS access key ID" msgstr "" -#: core/data_backends.py:137 +#: netbox/core/data_backends.py:137 msgid "AWS secret access key" msgstr "" -#: core/events.py:27 +#: netbox/core/events.py:27 msgid "Object created" msgstr "" -#: core/events.py:28 +#: netbox/core/events.py:28 msgid "Object updated" msgstr "" -#: core/events.py:29 +#: netbox/core/events.py:29 msgid "Object deleted" msgstr "" -#: core/events.py:30 +#: netbox/core/events.py:30 msgid "Job started" msgstr "" -#: core/events.py:31 +#: netbox/core/events.py:31 msgid "Job completed" msgstr "" -#: core/events.py:32 +#: netbox/core/events.py:32 msgid "Job failed" msgstr "" -#: core/events.py:33 +#: netbox/core/events.py:33 msgid "Job errored" msgstr "" -#: core/filtersets.py:53 extras/filtersets.py:250 extras/filtersets.py:633 -#: extras/filtersets.py:661 +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "" -#: core/filtersets.py:59 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "" -#: core/filtersets.py:145 dcim/filtersets.py:501 extras/filtersets.py:287 -#: extras/filtersets.py:331 extras/filtersets.py:353 extras/filtersets.py:413 -#: users/filtersets.py:28 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 msgid "User (ID)" msgstr "" -#: core/filtersets.py:151 +#: netbox/core/filtersets.py:151 msgid "User name" msgstr "" -#: core/forms/bulk_edit.py:25 core/forms/filtersets.py:43 -#: core/tables/data.py:26 dcim/forms/bulk_edit.py:1122 -#: dcim/forms/bulk_edit.py:1400 dcim/forms/filtersets.py:1370 -#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:224 -#: extras/forms/bulk_edit.py:123 extras/forms/bulk_edit.py:187 -#: extras/forms/bulk_edit.py:246 extras/forms/filtersets.py:142 -#: extras/forms/filtersets.py:229 extras/forms/filtersets.py:294 -#: extras/tables/tables.py:162 extras/tables/tables.py:253 -#: extras/tables/tables.py:415 netbox/preferences.py:22 -#: templates/core/datasource.html:42 templates/dcim/interface.html:61 -#: templates/extras/customlink.html:17 templates/extras/eventrule.html:17 -#: templates/extras/savedfilter.html:25 -#: templates/users/objectpermission.html:25 -#: templates/virtualization/vminterface.html:29 users/forms/bulk_edit.py:89 -#: users/forms/filtersets.py:70 users/tables.py:83 -#: virtualization/forms/bulk_edit.py:217 virtualization/forms/filtersets.py:215 +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:224 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 +#: netbox/templates/core/datasource.html:42 +#: netbox/templates/dcim/interface.html:61 +#: netbox/templates/extras/customlink.html:17 +#: netbox/templates/extras/eventrule.html:17 +#: netbox/templates/extras/savedfilter.html:25 +#: netbox/templates/users/objectpermission.html:25 +#: netbox/templates/virtualization/vminterface.html:29 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 +#: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "" -#: core/forms/bulk_edit.py:34 extras/forms/model_forms.py:285 -#: templates/extras/savedfilter.html:52 vpn/forms/filtersets.py:97 -#: vpn/forms/filtersets.py:127 vpn/forms/filtersets.py:151 -#: vpn/forms/filtersets.py:170 vpn/forms/model_forms.py:301 -#: vpn/forms/model_forms.py:321 vpn/forms/model_forms.py:337 -#: vpn/forms/model_forms.py:357 vpn/forms/model_forms.py:380 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 +#: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 +#: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 +#: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 +#: netbox/vpn/forms/model_forms.py:337 netbox/vpn/forms/model_forms.py:357 +#: netbox/vpn/forms/model_forms.py:380 msgid "Parameters" msgstr "" -#: core/forms/bulk_edit.py:38 templates/core/datasource.html:68 +#: netbox/core/forms/bulk_edit.py:38 netbox/templates/core/datasource.html:68 msgid "Ignore rules" msgstr "" -#: core/forms/filtersets.py:30 core/forms/model_forms.py:97 -#: extras/forms/model_forms.py:248 extras/forms/model_forms.py:578 -#: extras/forms/model_forms.py:632 extras/tables/tables.py:191 -#: extras/tables/tables.py:483 extras/tables/tables.py:518 -#: templates/core/datasource.html:31 -#: templates/dcim/device/render_config.html:18 -#: templates/extras/configcontext.html:29 -#: templates/extras/configtemplate.html:21 -#: templates/extras/exporttemplate.html:35 -#: templates/virtualization/virtualmachine/render_config.html:18 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 +#: netbox/templates/core/datasource.html:31 +#: netbox/templates/dcim/device/render_config.html:18 +#: netbox/templates/extras/configcontext.html:29 +#: netbox/templates/extras/configtemplate.html:21 +#: netbox/templates/extras/exporttemplate.html:35 +#: netbox/templates/virtualization/virtualmachine/render_config.html:18 msgid "Data Source" msgstr "" -#: core/forms/filtersets.py:55 core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "" -#: core/forms/filtersets.py:60 core/forms/mixins.py:16 -#: extras/forms/filtersets.py:170 extras/forms/filtersets.py:328 -#: extras/forms/filtersets.py:413 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "" -#: core/forms/filtersets.py:70 extras/forms/filtersets.py:440 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "" -#: core/forms/filtersets.py:74 core/forms/filtersets.py:160 -#: extras/forms/filtersets.py:461 extras/tables/tables.py:220 -#: extras/tables/tables.py:294 extras/tables/tables.py:326 -#: extras/tables/tables.py:571 templates/core/job.html:38 -#: templates/core/objectchange.html:52 tenancy/tables/contacts.py:90 -#: vpn/tables/l2vpn.py:59 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 +#: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "" -#: core/forms/filtersets.py:84 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "" -#: core/forms/filtersets.py:89 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "" -#: core/forms/filtersets.py:94 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "" -#: core/forms/filtersets.py:99 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "" -#: core/forms/filtersets.py:104 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "" -#: core/forms/filtersets.py:109 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "" -#: core/forms/filtersets.py:114 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "" -#: core/forms/filtersets.py:119 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "" -#: core/forms/filtersets.py:126 core/forms/filtersets.py:155 -#: dcim/forms/bulk_edit.py:456 dcim/forms/filtersets.py:418 -#: dcim/forms/filtersets.py:462 dcim/forms/model_forms.py:316 -#: extras/forms/filtersets.py:456 extras/forms/filtersets.py:475 -#: extras/tables/tables.py:302 extras/tables/tables.py:342 -#: templates/core/objectchange.html:36 templates/dcim/rackreservation.html:58 -#: templates/extras/savedfilter.html:21 templates/inc/user_menu.html:33 -#: templates/users/token.html:21 templates/users/user.html:6 -#: templates/users/user.html:14 users/filtersets.py:107 users/filtersets.py:174 -#: users/forms/filtersets.py:84 users/forms/filtersets.py:125 -#: users/forms/model_forms.py:155 users/forms/model_forms.py:192 -#: users/tables.py:19 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 +#: netbox/templates/dcim/rackreservation.html:58 +#: netbox/templates/extras/savedfilter.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 +#: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 +#: netbox/users/forms/model_forms.py:155 netbox/users/forms/model_forms.py:192 +#: netbox/users/tables.py:19 msgid "User" msgstr "" -#: core/forms/filtersets.py:134 core/tables/change_logging.py:15 -#: extras/tables/tables.py:609 extras/tables/tables.py:646 -#: templates/core/objectchange.html:32 +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "" -#: core/forms/filtersets.py:139 extras/forms/filtersets.py:445 +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 msgid "After" msgstr "" -#: core/forms/filtersets.py:144 extras/forms/filtersets.py:450 +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 msgid "Before" msgstr "" -#: core/forms/filtersets.py:148 core/tables/change_logging.py:29 -#: extras/forms/model_forms.py:396 templates/core/objectchange.html:46 -#: templates/extras/eventrule.html:71 +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "" -#: core/forms/model_forms.py:54 core/tables/data.py:46 -#: templates/core/datafile.html:27 templates/extras/report/base.html:33 -#: templates/extras/script/base.html:32 +#: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 +#: netbox/templates/core/datafile.html:27 +#: netbox/templates/extras/report/base.html:33 +#: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "" -#: core/forms/model_forms.py:58 +#: netbox/core/forms/model_forms.py:58 msgid "Backend Parameters" msgstr "" -#: core/forms/model_forms.py:96 +#: netbox/core/forms/model_forms.py:96 msgid "File Upload" msgstr "" -#: core/forms/model_forms.py:108 +#: netbox/core/forms/model_forms.py:108 msgid "Cannot upload a file and sync from an existing file" msgstr "" -#: core/forms/model_forms.py:110 +#: netbox/core/forms/model_forms.py:110 msgid "Must upload a file or select a data file to sync" msgstr "" -#: core/forms/model_forms.py:153 templates/dcim/rack_elevation_list.html:6 +#: netbox/core/forms/model_forms.py:153 +#: netbox/templates/dcim/rack_elevation_list.html:6 msgid "Rack Elevations" msgstr "" -#: core/forms/model_forms.py:157 dcim/choices.py:1518 -#: dcim/forms/bulk_edit.py:969 dcim/forms/bulk_edit.py:1357 -#: dcim/forms/bulk_edit.py:1375 dcim/tables/racks.py:158 -#: netbox/navigation/menu.py:291 netbox/navigation/menu.py:295 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1518 +#: 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 msgid "Power" msgstr "" -#: core/forms/model_forms.py:159 netbox/navigation/menu.py:154 -#: templates/core/inc/config_data.html:37 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 +#: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "" -#: core/forms/model_forms.py:160 netbox/navigation/menu.py:230 -#: templates/core/inc/config_data.html:50 vpn/forms/bulk_edit.py:77 -#: vpn/forms/filtersets.py:43 vpn/forms/model_forms.py:61 -#: vpn/forms/model_forms.py:146 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 +#: netbox/templates/core/inc/config_data.html:50 +#: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 +#: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 msgid "Security" msgstr "" -#: core/forms/model_forms.py:161 templates/core/inc/config_data.html:59 +#: netbox/core/forms/model_forms.py:161 +#: netbox/templates/core/inc/config_data.html:59 msgid "Banners" msgstr "" -#: core/forms/model_forms.py:162 templates/core/inc/config_data.html:80 +#: netbox/core/forms/model_forms.py:162 +#: netbox/templates/core/inc/config_data.html:80 msgid "Pagination" msgstr "" -#: core/forms/model_forms.py:163 extras/forms/bulk_edit.py:92 -#: extras/forms/filtersets.py:47 extras/forms/model_forms.py:116 -#: extras/forms/model_forms.py:129 templates/core/inc/config_data.html:93 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 +#: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "" -#: core/forms/model_forms.py:164 templates/account/preferences.html:6 +#: netbox/core/forms/model_forms.py:164 +#: netbox/templates/account/preferences.html:6 msgid "User Preferences" msgstr "" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:732 -#: templates/core/inc/config_data.html:127 users/forms/model_forms.py:64 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 +#: netbox/templates/core/inc/config_data.html:127 +#: netbox/users/forms/model_forms.py:64 msgid "Miscellaneous" msgstr "" -#: core/forms/model_forms.py:169 +#: netbox/core/forms/model_forms.py:169 msgid "Config Revision" msgstr "" -#: core/forms/model_forms.py:208 +#: netbox/core/forms/model_forms.py:208 msgid "This parameter has been defined statically and cannot be modified." msgstr "" -#: core/forms/model_forms.py:216 +#: netbox/core/forms/model_forms.py:216 #, python-brace-format msgid "Current value: {value}" msgstr "" -#: core/forms/model_forms.py:218 +#: netbox/core/forms/model_forms.py:218 msgid " (default)" msgstr "" -#: core/models/change_logging.py:29 +#: netbox/core/models/change_logging.py:29 msgid "time" msgstr "" -#: core/models/change_logging.py:42 +#: netbox/core/models/change_logging.py:42 msgid "user name" msgstr "" -#: core/models/change_logging.py:47 +#: netbox/core/models/change_logging.py:47 msgid "request ID" msgstr "" -#: core/models/change_logging.py:52 extras/models/staging.py:69 +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 msgid "action" msgstr "" -#: core/models/change_logging.py:86 +#: netbox/core/models/change_logging.py:86 msgid "pre-change data" msgstr "" -#: core/models/change_logging.py:92 +#: netbox/core/models/change_logging.py:92 msgid "post-change data" msgstr "" -#: core/models/change_logging.py:106 +#: netbox/core/models/change_logging.py:106 msgid "object change" msgstr "" -#: core/models/change_logging.py:107 +#: netbox/core/models/change_logging.py:107 msgid "object changes" msgstr "" -#: core/models/change_logging.py:123 +#: netbox/core/models/change_logging.py:123 #, python-brace-format msgid "Change logging is not supported for this object type ({type})." msgstr "" -#: core/models/config.py:18 core/models/data.py:266 core/models/files.py:27 -#: core/models/jobs.py:49 extras/models/models.py:730 -#: extras/models/notifications.py:39 extras/models/notifications.py:186 -#: netbox/models/features.py:53 users/models/tokens.py:32 +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:49 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "" -#: core/models/config.py:22 +#: netbox/core/models/config.py:22 msgid "comment" msgstr "" -#: core/models/config.py:29 +#: netbox/core/models/config.py:29 msgid "configuration data" msgstr "" -#: core/models/config.py:36 +#: netbox/core/models/config.py:36 msgid "config revision" msgstr "" -#: core/models/config.py:37 +#: netbox/core/models/config.py:37 msgid "config revisions" msgstr "" -#: core/models/config.py:41 +#: netbox/core/models/config.py:41 msgid "Default configuration" msgstr "" -#: core/models/config.py:43 +#: netbox/core/models/config.py:43 msgid "Current configuration" msgstr "" -#: core/models/config.py:44 +#: netbox/core/models/config.py:44 #, python-brace-format msgid "Config revision #{id}" msgstr "" -#: core/models/data.py:44 dcim/models/cables.py:43 -#: dcim/models/device_component_templates.py:203 -#: dcim/models/device_component_templates.py:237 -#: dcim/models/device_component_templates.py:272 -#: dcim/models/device_component_templates.py:334 -#: dcim/models/device_component_templates.py:413 -#: dcim/models/device_component_templates.py:512 -#: dcim/models/device_component_templates.py:612 -#: dcim/models/device_components.py:283 dcim/models/device_components.py:312 -#: dcim/models/device_components.py:345 dcim/models/device_components.py:463 -#: dcim/models/device_components.py:605 dcim/models/device_components.py:970 -#: dcim/models/device_components.py:1044 dcim/models/power.py:102 -#: extras/models/customfields.py:78 extras/models/search.py:41 -#: virtualization/models/clusters.py:61 vpn/models/l2vpn.py:32 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:203 +#: netbox/dcim/models/device_component_templates.py:237 +#: netbox/dcim/models/device_component_templates.py:272 +#: netbox/dcim/models/device_component_templates.py:334 +#: netbox/dcim/models/device_component_templates.py:413 +#: netbox/dcim/models/device_component_templates.py:512 +#: netbox/dcim/models/device_component_templates.py:612 +#: netbox/dcim/models/device_components.py:283 +#: netbox/dcim/models/device_components.py:312 +#: netbox/dcim/models/device_components.py:345 +#: netbox/dcim/models/device_components.py:463 +#: netbox/dcim/models/device_components.py:605 +#: netbox/dcim/models/device_components.py:970 +#: netbox/dcim/models/device_components.py:1044 netbox/dcim/models/power.py:102 +#: netbox/extras/models/customfields.py:78 netbox/extras/models/search.py:41 +#: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "" -#: core/models/data.py:49 extras/choices.py:37 extras/models/models.py:164 -#: extras/tables/tables.py:656 templates/core/datasource.html:58 -#: templates/core/plugin.html:66 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 +#: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:66 msgid "URL" msgstr "" -#: core/models/data.py:59 dcim/models/device_component_templates.py:418 -#: dcim/models/device_components.py:512 extras/models/models.py:70 -#: extras/models/models.py:301 extras/models/models.py:526 -#: users/models/permissions.py:29 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:418 +#: netbox/dcim/models/device_components.py:512 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "" -#: core/models/data.py:63 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "" -#: core/models/data.py:65 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" -#: core/models/data.py:68 extras/models/models.py:534 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "" -#: core/models/data.py:73 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "" -#: core/models/data.py:81 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "" -#: core/models/data.py:82 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "" -#: core/models/data.py:122 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "" -#: core/models/data.py:164 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "" -#: core/models/data.py:177 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " msgstr "" -#: core/models/data.py:270 core/models/files.py:31 netbox/models/features.py:59 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "" -#: core/models/data.py:280 dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "" -#: core/models/data.py:283 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "" -#: core/models/data.py:287 ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "" -#: core/models/data.py:290 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "" -#: core/models/data.py:294 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "" -#: core/models/data.py:296 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "" -#: core/models/data.py:313 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "" -#: core/models/data.py:314 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "" -#: core/models/data.py:401 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "" -#: core/models/data.py:402 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "" -#: core/models/files.py:37 +#: netbox/core/models/files.py:37 msgid "file root" msgstr "" -#: core/models/files.py:42 +#: netbox/core/models/files.py:42 msgid "file path" msgstr "" -#: core/models/files.py:44 +#: netbox/core/models/files.py:44 msgid "File path relative to the designated root path" msgstr "" -#: core/models/files.py:61 +#: netbox/core/models/files.py:61 msgid "managed file" msgstr "" -#: core/models/files.py:62 +#: netbox/core/models/files.py:62 msgid "managed files" msgstr "" -#: core/models/jobs.py:53 +#: netbox/core/models/jobs.py:53 msgid "scheduled" msgstr "" -#: core/models/jobs.py:58 +#: netbox/core/models/jobs.py:58 msgid "interval" msgstr "" -#: core/models/jobs.py:64 +#: netbox/core/models/jobs.py:64 msgid "Recurrence interval (in minutes)" msgstr "" -#: core/models/jobs.py:67 +#: netbox/core/models/jobs.py:67 msgid "started" msgstr "" -#: core/models/jobs.py:72 +#: netbox/core/models/jobs.py:72 msgid "completed" msgstr "" -#: core/models/jobs.py:90 extras/models/models.py:101 -#: extras/models/staging.py:87 +#: netbox/core/models/jobs.py:90 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "" -#: core/models/jobs.py:95 +#: netbox/core/models/jobs.py:95 msgid "error" msgstr "" -#: core/models/jobs.py:100 +#: netbox/core/models/jobs.py:100 msgid "job ID" msgstr "" -#: core/models/jobs.py:111 +#: netbox/core/models/jobs.py:111 msgid "job" msgstr "" -#: core/models/jobs.py:112 +#: netbox/core/models/jobs.py:112 msgid "jobs" msgstr "" -#: core/models/jobs.py:135 +#: netbox/core/models/jobs.py:135 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "" -#: core/models/jobs.py:185 +#: netbox/core/models/jobs.py:185 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" -#: core/models/jobs.py:216 +#: netbox/core/models/jobs.py:216 msgid "" "enqueue() cannot be called with values for both schedule_at and immediate." msgstr "" -#: core/signals.py:126 +#: netbox/core/signals.py:126 #, python-brace-format msgid "Deletion is prevented by a protection rule: {message}" msgstr "" -#: core/tables/change_logging.py:25 templates/account/profile.html:19 -#: templates/users/user.html:21 +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 netbox/templates/users/user.html:21 msgid "Full Name" msgstr "" -#: core/tables/change_logging.py:37 core/tables/jobs.py:21 extras/choices.py:41 -#: extras/tables/tables.py:279 extras/tables/tables.py:297 -#: extras/tables/tables.py:329 extras/tables/tables.py:409 -#: extras/tables/tables.py:470 extras/tables/tables.py:576 -#: extras/tables/tables.py:616 extras/tables/tables.py:653 -#: netbox/tables/tables.py:244 templates/core/objectchange.html:58 -#: templates/extras/eventrule.html:78 templates/extras/journalentry.html:18 -#: tenancy/tables/contacts.py:93 vpn/tables/l2vpn.py:64 +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "" -#: core/tables/change_logging.py:42 templates/core/objectchange.html:68 +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 msgid "Request ID" msgstr "" -#: core/tables/config.py:21 users/forms/filtersets.py:44 users/tables.py:39 +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 +#: netbox/users/tables.py:39 msgid "Is Active" msgstr "" -#: core/tables/data.py:50 templates/core/datafile.html:31 +#: netbox/core/tables/data.py:50 netbox/templates/core/datafile.html:31 msgid "Path" msgstr "" -#: core/tables/data.py:54 templates/extras/inc/result_pending.html:7 +#: netbox/core/tables/data.py:54 +#: netbox/templates/extras/inc/result_pending.html:7 msgid "Last updated" msgstr "" -#: core/tables/jobs.py:10 core/tables/tasks.py:76 -#: dcim/tables/devicetypes.py:164 extras/tables/tables.py:216 -#: extras/tables/tables.py:460 netbox/tables/tables.py:189 -#: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 -#: wireless/tables/wirelesslink.py:17 +#: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 +#: netbox/dcim/tables/devicetypes.py:164 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 +#: netbox/templates/dcim/virtualchassis_edit.html:52 +#: netbox/utilities/forms/forms.py:73 netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "" -#: core/tables/jobs.py:35 +#: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "" -#: core/tables/plugins.py:14 templates/vpn/ipsecprofile.html:44 -#: vpn/forms/bulk_edit.py:141 vpn/forms/bulk_import.py:172 -#: vpn/tables/crypto.py:61 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 +#: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "" -#: core/tables/plugins.py:19 templates/core/datafile.html:38 +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 msgid "Last Updated" msgstr "" -#: core/tables/plugins.py:23 +#: netbox/core/tables/plugins.py:23 msgid "Minimum NetBox Version" msgstr "" -#: core/tables/plugins.py:27 +#: netbox/core/tables/plugins.py:27 msgid "Maximum NetBox Version" msgstr "" -#: core/tables/plugins.py:31 core/tables/plugins.py:74 +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 msgid "No plugin data found" msgstr "" -#: core/tables/plugins.py:48 templates/core/plugin.html:62 +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:62 msgid "Author" msgstr "" -#: core/tables/plugins.py:54 +#: netbox/core/tables/plugins.py:54 msgid "Installed" msgstr "" -#: core/tables/plugins.py:57 templates/core/plugin.html:84 +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:84 msgid "Certified" msgstr "" -#: core/tables/plugins.py:60 +#: netbox/core/tables/plugins.py:60 msgid "Published" msgstr "" -#: core/tables/plugins.py:66 +#: netbox/core/tables/plugins.py:66 msgid "Installed Version" msgstr "" -#: core/tables/plugins.py:70 +#: netbox/core/tables/plugins.py:70 msgid "Latest Version" msgstr "" -#: core/tables/tasks.py:18 +#: netbox/core/tables/tasks.py:18 msgid "Oldest Task" msgstr "" -#: core/tables/tasks.py:42 templates/core/rq_worker_list.html:39 +#: netbox/core/tables/tasks.py:42 netbox/templates/core/rq_worker_list.html:39 msgid "Workers" msgstr "" -#: core/tables/tasks.py:46 vpn/tables/tunnels.py:88 +#: netbox/core/tables/tasks.py:46 netbox/vpn/tables/tunnels.py:88 msgid "Host" msgstr "" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "" -#: core/tables/tasks.py:54 +#: netbox/core/tables/tasks.py:54 msgid "DB" msgstr "" -#: core/tables/tasks.py:58 +#: netbox/core/tables/tasks.py:58 msgid "Scheduler PID" msgstr "" -#: core/tables/tasks.py:62 +#: netbox/core/tables/tasks.py:62 msgid "No queues found" msgstr "" -#: core/tables/tasks.py:82 +#: netbox/core/tables/tasks.py:82 msgid "Enqueued" msgstr "" -#: core/tables/tasks.py:85 +#: netbox/core/tables/tasks.py:85 msgid "Ended" msgstr "" -#: core/tables/tasks.py:93 templates/core/rq_task.html:85 +#: netbox/core/tables/tasks.py:93 netbox/templates/core/rq_task.html:85 msgid "Callable" msgstr "" -#: core/tables/tasks.py:97 +#: netbox/core/tables/tasks.py:97 msgid "No tasks found" msgstr "" -#: core/tables/tasks.py:118 templates/core/rq_worker.html:47 +#: netbox/core/tables/tasks.py:118 netbox/templates/core/rq_worker.html:47 msgid "State" msgstr "" -#: core/tables/tasks.py:121 templates/core/rq_worker.html:51 +#: netbox/core/tables/tasks.py:121 netbox/templates/core/rq_worker.html:51 msgid "Birth" msgstr "" -#: core/tables/tasks.py:124 templates/core/rq_worker.html:59 +#: netbox/core/tables/tasks.py:124 netbox/templates/core/rq_worker.html:59 msgid "PID" msgstr "" -#: core/tables/tasks.py:128 +#: netbox/core/tables/tasks.py:128 msgid "No workers found" msgstr "" -#: core/views.py:90 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "" -#: core/views.py:319 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "" -#: core/views.py:412 core/views.py:455 core/views.py:531 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "" -#: core/views.py:463 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "" -#: core/views.py:465 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "" -#: core/views.py:478 core/views.py:496 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "" -#: core/views.py:484 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "" -#: core/views.py:519 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "" -#: core/views.py:538 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "" -#: core/views.py:540 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "" -#: core/views.py:678 +#: netbox/core/views.py:678 msgid "Plugins catalog could not be loaded" msgstr "" -#: core/views.py:712 +#: netbox/core/views.py:712 #, python-brace-format msgid "Plugin {name} not found" msgstr "" -#: dcim/api/serializers_/devices.py:49 dcim/api/serializers_/devicetypes.py:25 +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "" -#: dcim/api/serializers_/racks.py:112 templates/dcim/rack.html:28 +#: netbox/dcim/api/serializers_/racks.py:112 netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "" -#: dcim/choices.py:21 virtualization/choices.py:21 +#: netbox/dcim/choices.py:21 netbox/virtualization/choices.py:21 msgid "Staging" msgstr "" -#: dcim/choices.py:23 dcim/choices.py:189 dcim/choices.py:240 -#: dcim/choices.py:1531 virtualization/choices.py:23 -#: virtualization/choices.py:48 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:240 netbox/dcim/choices.py:1531 +#: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "" -#: dcim/choices.py:24 +#: netbox/dcim/choices.py:24 msgid "Retired" msgstr "" -#: dcim/choices.py:65 +#: netbox/dcim/choices.py:65 msgid "2-post frame" msgstr "" -#: dcim/choices.py:66 +#: netbox/dcim/choices.py:66 msgid "4-post frame" msgstr "" -#: dcim/choices.py:67 +#: netbox/dcim/choices.py:67 msgid "4-post cabinet" msgstr "" -#: dcim/choices.py:68 +#: netbox/dcim/choices.py:68 msgid "Wall-mounted frame" msgstr "" -#: dcim/choices.py:69 +#: netbox/dcim/choices.py:69 msgid "Wall-mounted frame (vertical)" msgstr "" -#: dcim/choices.py:70 +#: netbox/dcim/choices.py:70 msgid "Wall-mounted cabinet" msgstr "" -#: dcim/choices.py:71 +#: netbox/dcim/choices.py:71 msgid "Wall-mounted cabinet (vertical)" msgstr "" -#: dcim/choices.py:83 dcim/choices.py:84 dcim/choices.py:85 dcim/choices.py:86 +#: netbox/dcim/choices.py:83 netbox/dcim/choices.py:84 +#: netbox/dcim/choices.py:85 netbox/dcim/choices.py:86 #, python-brace-format msgid "{n} inches" msgstr "" -#: dcim/choices.py:100 ipam/choices.py:32 ipam/choices.py:50 ipam/choices.py:70 -#: ipam/choices.py:155 wireless/choices.py:26 +#: netbox/dcim/choices.py:100 netbox/ipam/choices.py:32 +#: netbox/ipam/choices.py:50 netbox/ipam/choices.py:70 +#: netbox/ipam/choices.py:155 netbox/wireless/choices.py:26 msgid "Reserved" msgstr "" -#: dcim/choices.py:101 templates/dcim/device.html:259 +#: netbox/dcim/choices.py:101 netbox/templates/dcim/device.html:259 msgid "Available" msgstr "" -#: dcim/choices.py:104 ipam/choices.py:33 ipam/choices.py:51 ipam/choices.py:71 -#: ipam/choices.py:156 wireless/choices.py:28 +#: netbox/dcim/choices.py:104 netbox/ipam/choices.py:33 +#: netbox/ipam/choices.py:51 netbox/ipam/choices.py:71 +#: netbox/ipam/choices.py:156 netbox/wireless/choices.py:28 msgid "Deprecated" msgstr "" -#: dcim/choices.py:114 templates/dcim/inc/panels/racktype_dimensions.html:41 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "" -#: dcim/choices.py:115 dcim/choices.py:1553 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1553 msgid "Inches" msgstr "" -#: dcim/choices.py:136 dcim/choices.py:207 dcim/choices.py:254 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:207 +#: netbox/dcim/choices.py:254 msgid "Front to rear" msgstr "" -#: dcim/choices.py:137 dcim/choices.py:208 dcim/choices.py:255 +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:208 +#: netbox/dcim/choices.py:255 msgid "Rear to front" msgstr "" -#: dcim/choices.py:151 dcim/forms/bulk_edit.py:68 dcim/forms/bulk_edit.py:87 -#: dcim/forms/bulk_edit.py:173 dcim/forms/bulk_edit.py:1405 -#: dcim/forms/bulk_import.py:60 dcim/forms/bulk_import.py:74 -#: dcim/forms/bulk_import.py:137 dcim/forms/bulk_import.py:566 -#: dcim/forms/bulk_import.py:833 dcim/forms/bulk_import.py:1088 -#: dcim/forms/filtersets.py:234 dcim/forms/model_forms.py:74 -#: dcim/forms/model_forms.py:93 dcim/forms/model_forms.py:170 -#: dcim/forms/model_forms.py:1062 dcim/forms/model_forms.py:1502 -#: dcim/forms/object_import.py:176 dcim/tables/devices.py:656 -#: dcim/tables/devices.py:869 dcim/tables/devices.py:954 -#: extras/tables/tables.py:223 ipam/tables/fhrp.py:59 ipam/tables/ip.py:378 -#: ipam/tables/services.py:44 templates/dcim/interface.html:102 -#: templates/dcim/interface.html:309 templates/dcim/location.html:41 -#: templates/dcim/region.html:37 templates/dcim/sitegroup.html:37 -#: templates/ipam/service.html:28 templates/tenancy/contactgroup.html:29 -#: templates/tenancy/tenantgroup.html:37 -#: templates/virtualization/vminterface.html:39 -#: templates/wireless/wirelesslangroup.html:37 tenancy/forms/bulk_edit.py:27 -#: tenancy/forms/bulk_edit.py:61 tenancy/forms/bulk_import.py:24 -#: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:25 -#: tenancy/forms/model_forms.py:68 virtualization/forms/bulk_edit.py:207 -#: virtualization/forms/bulk_import.py:151 -#: virtualization/tables/virtualmachines.py:162 wireless/forms/bulk_edit.py:24 -#: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:21 +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: 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:1502 netbox/dcim/forms/object_import.py:176 +#: netbox/dcim/tables/devices.py:656 netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:954 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 +#: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 +#: netbox/templates/dcim/sitegroup.html:37 +#: netbox/templates/ipam/service.html:28 +#: netbox/templates/tenancy/contactgroup.html:29 +#: netbox/templates/tenancy/tenantgroup.html:37 +#: netbox/templates/virtualization/vminterface.html:39 +#: netbox/templates/wireless/wirelesslangroup.html:37 +#: netbox/tenancy/forms/bulk_edit.py:27 netbox/tenancy/forms/bulk_edit.py:61 +#: netbox/tenancy/forms/bulk_import.py:24 +#: netbox/tenancy/forms/bulk_import.py:58 +#: netbox/tenancy/forms/model_forms.py:25 +#: netbox/tenancy/forms/model_forms.py:68 +#: netbox/virtualization/forms/bulk_edit.py:207 +#: netbox/virtualization/forms/bulk_import.py:151 +#: netbox/virtualization/tables/virtualmachines.py:162 +#: netbox/wireless/forms/bulk_edit.py:24 +#: netbox/wireless/forms/bulk_import.py:21 +#: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "" -#: dcim/choices.py:152 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "" -#: dcim/choices.py:166 templates/dcim/device.html:340 -#: templates/dcim/rack.html:133 templates/dcim/rack_elevation_list.html:20 -#: templates/dcim/rackreservation.html:76 +#: 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 "" -#: dcim/choices.py:167 templates/dcim/device.html:346 -#: templates/dcim/rack.html:139 templates/dcim/rack_elevation_list.html:21 -#: templates/dcim/rackreservation.html:82 +#: 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" msgstr "" -#: dcim/choices.py:186 dcim/choices.py:238 virtualization/choices.py:46 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:238 +#: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "" -#: dcim/choices.py:188 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "" -#: dcim/choices.py:209 dcim/choices.py:256 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:256 msgid "Left to right" msgstr "" -#: dcim/choices.py:210 dcim/choices.py:257 +#: netbox/dcim/choices.py:210 netbox/dcim/choices.py:257 msgid "Right to left" msgstr "" -#: dcim/choices.py:211 dcim/choices.py:258 +#: netbox/dcim/choices.py:211 netbox/dcim/choices.py:258 msgid "Side to rear" msgstr "" -#: dcim/choices.py:212 +#: netbox/dcim/choices.py:212 msgid "Rear to side" msgstr "" -#: dcim/choices.py:213 +#: netbox/dcim/choices.py:213 msgid "Bottom to top" msgstr "" -#: dcim/choices.py:214 +#: netbox/dcim/choices.py:214 msgid "Top to bottom" msgstr "" -#: dcim/choices.py:215 dcim/choices.py:259 dcim/choices.py:1303 +#: netbox/dcim/choices.py:215 netbox/dcim/choices.py:259 +#: netbox/dcim/choices.py:1303 msgid "Passive" msgstr "" -#: dcim/choices.py:216 +#: netbox/dcim/choices.py:216 msgid "Mixed" msgstr "" -#: dcim/choices.py:484 dcim/choices.py:733 +#: netbox/dcim/choices.py:484 netbox/dcim/choices.py:733 msgid "NEMA (Non-locking)" msgstr "" -#: dcim/choices.py:506 dcim/choices.py:755 +#: netbox/dcim/choices.py:506 netbox/dcim/choices.py:755 msgid "NEMA (Locking)" msgstr "" -#: dcim/choices.py:530 dcim/choices.py:779 +#: netbox/dcim/choices.py:530 netbox/dcim/choices.py:779 msgid "California Style" msgstr "" -#: dcim/choices.py:538 +#: netbox/dcim/choices.py:538 msgid "International/ITA" msgstr "" -#: dcim/choices.py:573 dcim/choices.py:814 +#: netbox/dcim/choices.py:573 netbox/dcim/choices.py:814 msgid "Proprietary" msgstr "" -#: dcim/choices.py:581 dcim/choices.py:824 dcim/choices.py:1219 -#: dcim/choices.py:1221 dcim/choices.py:1447 dcim/choices.py:1449 -#: netbox/navigation/menu.py:200 +#: netbox/dcim/choices.py:581 netbox/dcim/choices.py:824 +#: netbox/dcim/choices.py:1219 netbox/dcim/choices.py:1221 +#: netbox/dcim/choices.py:1447 netbox/dcim/choices.py:1449 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "" -#: dcim/choices.py:787 +#: netbox/dcim/choices.py:787 msgid "ITA/International" msgstr "" -#: dcim/choices.py:854 +#: netbox/dcim/choices.py:854 msgid "Physical" msgstr "" -#: dcim/choices.py:855 dcim/choices.py:1023 +#: netbox/dcim/choices.py:855 netbox/dcim/choices.py:1023 msgid "Virtual" msgstr "" -#: dcim/choices.py:856 dcim/choices.py:1097 dcim/forms/bulk_edit.py:1515 -#: dcim/forms/filtersets.py:1330 dcim/forms/model_forms.py:988 -#: dcim/forms/model_forms.py:1397 netbox/navigation/menu.py:140 -#: netbox/navigation/menu.py:144 templates/dcim/interface.html:210 +#: netbox/dcim/choices.py:856 netbox/dcim/choices.py:1097 +#: 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:1397 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 +#: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "" -#: dcim/choices.py:1021 +#: netbox/dcim/choices.py:1021 msgid "Virtual interfaces" msgstr "" -#: dcim/choices.py:1024 dcim/forms/bulk_edit.py:1410 -#: dcim/forms/bulk_import.py:840 dcim/forms/model_forms.py:974 -#: dcim/tables/devices.py:660 templates/dcim/interface.html:106 -#: templates/virtualization/vminterface.html:43 -#: virtualization/forms/bulk_edit.py:212 -#: virtualization/forms/bulk_import.py:158 -#: virtualization/tables/virtualmachines.py:166 +#: netbox/dcim/choices.py:1024 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:660 netbox/templates/dcim/interface.html:106 +#: netbox/templates/virtualization/vminterface.html:43 +#: netbox/virtualization/forms/bulk_edit.py:212 +#: netbox/virtualization/forms/bulk_import.py:158 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "" -#: dcim/choices.py:1025 +#: netbox/dcim/choices.py:1025 msgid "Link Aggregation Group (LAG)" msgstr "" -#: dcim/choices.py:1029 +#: netbox/dcim/choices.py:1029 msgid "Ethernet (fixed)" msgstr "" -#: dcim/choices.py:1044 +#: netbox/dcim/choices.py:1044 msgid "Ethernet (modular)" msgstr "" -#: dcim/choices.py:1081 +#: netbox/dcim/choices.py:1081 msgid "Ethernet (backplane)" msgstr "" -#: dcim/choices.py:1113 +#: netbox/dcim/choices.py:1113 msgid "Cellular" msgstr "" -#: dcim/choices.py:1165 dcim/forms/filtersets.py:383 -#: dcim/forms/filtersets.py:809 dcim/forms/filtersets.py:963 -#: dcim/forms/filtersets.py:1542 templates/dcim/inventoryitem.html:52 -#: templates/dcim/virtualchassis_edit.html:54 +#: netbox/dcim/choices.py:1165 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 +#: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "" -#: dcim/choices.py:1180 +#: netbox/dcim/choices.py:1180 msgid "Coaxial" msgstr "" -#: dcim/choices.py:1200 +#: netbox/dcim/choices.py:1200 msgid "Stacking" msgstr "" -#: dcim/choices.py:1250 +#: netbox/dcim/choices.py:1250 msgid "Half" msgstr "" -#: dcim/choices.py:1251 +#: netbox/dcim/choices.py:1251 msgid "Full" msgstr "" -#: dcim/choices.py:1252 netbox/preferences.py:31 wireless/choices.py:480 +#: netbox/dcim/choices.py:1252 netbox/netbox/preferences.py:31 +#: netbox/wireless/choices.py:480 msgid "Auto" msgstr "" -#: dcim/choices.py:1263 +#: netbox/dcim/choices.py:1263 msgid "Access" msgstr "" -#: dcim/choices.py:1264 ipam/tables/vlans.py:172 ipam/tables/vlans.py:217 -#: templates/dcim/inc/interface_vlans_table.html:7 +#: netbox/dcim/choices.py:1264 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 +#: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "" -#: dcim/choices.py:1265 +#: netbox/dcim/choices.py:1265 msgid "Tagged (All)" msgstr "" -#: dcim/choices.py:1294 +#: netbox/dcim/choices.py:1294 msgid "IEEE Standard" msgstr "" -#: dcim/choices.py:1305 +#: netbox/dcim/choices.py:1305 msgid "Passive 24V (2-pair)" msgstr "" -#: dcim/choices.py:1306 +#: netbox/dcim/choices.py:1306 msgid "Passive 24V (4-pair)" msgstr "" -#: dcim/choices.py:1307 +#: netbox/dcim/choices.py:1307 msgid "Passive 48V (2-pair)" msgstr "" -#: dcim/choices.py:1308 +#: netbox/dcim/choices.py:1308 msgid "Passive 48V (4-pair)" msgstr "" -#: dcim/choices.py:1378 dcim/choices.py:1488 +#: netbox/dcim/choices.py:1378 netbox/dcim/choices.py:1488 msgid "Copper" msgstr "" -#: dcim/choices.py:1401 +#: netbox/dcim/choices.py:1401 msgid "Fiber Optic" msgstr "" -#: dcim/choices.py:1434 dcim/choices.py:1517 +#: netbox/dcim/choices.py:1434 netbox/dcim/choices.py:1517 msgid "USB" msgstr "" -#: dcim/choices.py:1504 +#: netbox/dcim/choices.py:1504 msgid "Fiber" msgstr "" -#: dcim/choices.py:1529 dcim/forms/filtersets.py:1227 +#: netbox/dcim/choices.py:1529 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "" -#: dcim/choices.py:1548 wireless/choices.py:497 +#: netbox/dcim/choices.py:1548 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "" -#: dcim/choices.py:1549 templates/dcim/cable_trace.html:65 -#: wireless/choices.py:498 +#: netbox/dcim/choices.py:1549 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "" -#: dcim/choices.py:1550 +#: netbox/dcim/choices.py:1550 msgid "Centimeters" msgstr "" -#: dcim/choices.py:1551 wireless/choices.py:499 +#: netbox/dcim/choices.py:1551 netbox/wireless/choices.py:499 msgid "Miles" msgstr "" -#: dcim/choices.py:1552 templates/dcim/cable_trace.html:66 -#: wireless/choices.py:500 +#: netbox/dcim/choices.py:1552 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "" -#: dcim/choices.py:1568 templates/dcim/device.html:327 -#: templates/dcim/rack.html:107 +#: netbox/dcim/choices.py:1568 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:107 msgid "Kilograms" msgstr "" -#: dcim/choices.py:1569 +#: netbox/dcim/choices.py:1569 msgid "Grams" msgstr "" -#: dcim/choices.py:1570 templates/dcim/device.html:328 -#: templates/dcim/rack.html:108 +#: netbox/dcim/choices.py:1570 netbox/templates/dcim/device.html:328 +#: netbox/templates/dcim/rack.html:108 msgid "Pounds" msgstr "" -#: dcim/choices.py:1571 +#: netbox/dcim/choices.py:1571 msgid "Ounces" msgstr "" -#: dcim/choices.py:1618 +#: netbox/dcim/choices.py:1618 msgid "Redundant" msgstr "" -#: dcim/choices.py:1639 +#: netbox/dcim/choices.py:1639 msgid "Single phase" msgstr "" -#: dcim/choices.py:1640 +#: netbox/dcim/choices.py:1640 msgid "Three-phase" msgstr "" -#: dcim/fields.py:45 +#: netbox/dcim/fields.py:45 #, python-brace-format msgid "Invalid MAC address format: {value}" msgstr "" -#: dcim/fields.py:71 +#: netbox/dcim/fields.py:71 #, python-brace-format msgid "Invalid WWN format: {value}" msgstr "" -#: dcim/filtersets.py:86 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "" -#: dcim/filtersets.py:92 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "" -#: dcim/filtersets.py:116 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "" -#: dcim/filtersets.py:122 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "" -#: dcim/filtersets.py:164 extras/filtersets.py:364 ipam/filtersets.py:841 -#: ipam/filtersets.py:993 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "" -#: dcim/filtersets.py:170 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "" -#: dcim/filtersets.py:176 dcim/filtersets.py:181 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "" -#: dcim/filtersets.py:246 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "" -#: dcim/filtersets.py:252 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "" -#: dcim/filtersets.py:258 dcim/filtersets.py:369 dcim/filtersets.py:490 -#: dcim/filtersets.py:1057 dcim/filtersets.py:1404 dcim/filtersets.py:2182 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "" -#: dcim/filtersets.py:265 dcim/filtersets.py:376 dcim/filtersets.py:497 -#: dcim/filtersets.py:1410 extras/filtersets.py:542 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "" -#: dcim/filtersets.py:296 dcim/filtersets.py:381 dcim/filtersets.py:539 -#: dcim/filtersets.py:678 dcim/filtersets.py:882 dcim/filtersets.py:933 -#: dcim/filtersets.py:973 dcim/filtersets.py:1306 dcim/filtersets.py:1840 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 msgid "Manufacturer (ID)" msgstr "" -#: dcim/filtersets.py:302 dcim/filtersets.py:387 dcim/filtersets.py:545 -#: dcim/filtersets.py:684 dcim/filtersets.py:888 dcim/filtersets.py:939 -#: dcim/filtersets.py:979 dcim/filtersets.py:1312 dcim/filtersets.py:1846 +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 msgid "Manufacturer (slug)" msgstr "" -#: dcim/filtersets.py:393 +#: netbox/dcim/filtersets.py:393 msgid "Rack type (slug)" msgstr "" -#: dcim/filtersets.py:397 +#: netbox/dcim/filtersets.py:397 msgid "Rack type (ID)" msgstr "" -#: dcim/filtersets.py:411 dcim/filtersets.py:892 dcim/filtersets.py:994 -#: dcim/filtersets.py:1850 ipam/filtersets.py:381 ipam/filtersets.py:493 -#: ipam/filtersets.py:1003 virtualization/filtersets.py:210 +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 +#: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "" -#: dcim/filtersets.py:417 dcim/filtersets.py:898 dcim/filtersets.py:1000 -#: dcim/filtersets.py:1856 extras/filtersets.py:558 ipam/filtersets.py:387 -#: ipam/filtersets.py:499 ipam/filtersets.py:1009 -#: virtualization/filtersets.py:216 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 +#: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "" -#: dcim/filtersets.py:447 dcim/filtersets.py:1062 dcim/filtersets.py:1415 -#: dcim/filtersets.py:2244 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "" -#: dcim/filtersets.py:507 extras/filtersets.py:293 extras/filtersets.py:337 -#: extras/filtersets.py:359 extras/filtersets.py:419 users/filtersets.py:113 -#: users/filtersets.py:180 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "" -#: dcim/filtersets.py:549 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "" -#: dcim/filtersets.py:555 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "" -#: dcim/filtersets.py:558 dcim/forms/filtersets.py:517 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "" -#: dcim/filtersets.py:562 dcim/forms/filtersets.py:524 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "" -#: dcim/filtersets.py:567 dcim/filtersets.py:688 dcim/filtersets.py:1131 -#: dcim/forms/filtersets.py:531 dcim/forms/filtersets.py:627 -#: dcim/forms/filtersets.py:848 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "" -#: dcim/filtersets.py:571 dcim/filtersets.py:692 dcim/filtersets.py:1135 -#: dcim/forms/filtersets.py:538 dcim/forms/filtersets.py:634 -#: dcim/forms/filtersets.py:855 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "" -#: dcim/filtersets.py:575 dcim/filtersets.py:696 dcim/filtersets.py:1139 -#: dcim/forms/filtersets.py:545 dcim/forms/filtersets.py:641 -#: dcim/forms/filtersets.py:862 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "" -#: dcim/filtersets.py:579 dcim/filtersets.py:700 dcim/filtersets.py:1143 -#: dcim/forms/filtersets.py:552 dcim/forms/filtersets.py:648 -#: dcim/forms/filtersets.py:869 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "" -#: dcim/filtersets.py:583 dcim/filtersets.py:704 dcim/filtersets.py:1147 -#: dcim/forms/filtersets.py:559 dcim/forms/filtersets.py:655 -#: dcim/forms/filtersets.py:876 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "" -#: dcim/filtersets.py:587 dcim/filtersets.py:708 dcim/filtersets.py:1151 -#: dcim/forms/filtersets.py:566 dcim/forms/filtersets.py:662 -#: dcim/forms/filtersets.py:883 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "" -#: dcim/filtersets.py:591 dcim/filtersets.py:1155 dcim/forms/filtersets.py:580 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "" -#: dcim/filtersets.py:595 dcim/filtersets.py:1159 dcim/forms/filtersets.py:573 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "" -#: dcim/filtersets.py:599 dcim/forms/filtersets.py:587 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "" -#: dcim/filtersets.py:756 dcim/filtersets.py:989 dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "" -#: dcim/filtersets.py:772 dcim/filtersets.py:1317 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "" -#: dcim/filtersets.py:804 dcim/filtersets.py:1591 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "" -#: dcim/filtersets.py:878 dcim/filtersets.py:1836 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "" -#: dcim/filtersets.py:921 dcim/filtersets.py:947 dcim/filtersets.py:1127 -#: virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "" -#: dcim/filtersets.py:985 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "" -#: dcim/filtersets.py:1005 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "" -#: dcim/filtersets.py:1009 virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "" -#: dcim/filtersets.py:1015 extras/filtersets.py:569 -#: virtualization/filtersets.py:226 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 +#: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "" -#: dcim/filtersets.py:1051 dcim/filtersets.py:1399 dcim/filtersets.py:1934 -#: dcim/filtersets.py:2176 dcim/filtersets.py:2235 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "" -#: dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "" -#: dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "" -#: dcim/filtersets.py:1077 extras/filtersets.py:591 -#: virtualization/filtersets.py:136 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 +#: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "" -#: dcim/filtersets.py:1082 virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "" -#: dcim/filtersets.py:1088 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "" -#: dcim/filtersets.py:1099 dcim/forms/bulk_edit.py:516 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "" -#: dcim/filtersets.py:1103 dcim/forms/common.py:18 dcim/forms/filtersets.py:818 -#: dcim/forms/filtersets.py:1385 dcim/models/device_components.py:518 -#: virtualization/filtersets.py:230 virtualization/filtersets.py:301 -#: virtualization/forms/filtersets.py:172 -#: virtualization/forms/filtersets.py:223 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 +#: netbox/dcim/models/device_components.py:518 +#: netbox/virtualization/filtersets.py:230 +#: netbox/virtualization/filtersets.py:301 +#: netbox/virtualization/forms/filtersets.py:172 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "" -#: dcim/filtersets.py:1110 dcim/filtersets.py:1274 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:930 virtualization/filtersets.py:234 -#: virtualization/forms/filtersets.py:176 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 +#: netbox/virtualization/filtersets.py:234 +#: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "" -#: dcim/filtersets.py:1114 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "" -#: dcim/filtersets.py:1119 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "" -#: dcim/filtersets.py:1123 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "" -#: dcim/filtersets.py:1164 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "" -#: dcim/filtersets.py:1168 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "" -#: dcim/filtersets.py:1257 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "" -#: dcim/filtersets.py:1262 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "" -#: dcim/filtersets.py:1267 ipam/filtersets.py:632 vpn/filtersets.py:102 -#: vpn/filtersets.py:401 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:401 msgid "Interface (ID)" msgstr "" -#: dcim/filtersets.py:1323 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "" -#: dcim/filtersets.py:1329 +#: netbox/dcim/filtersets.py:1329 msgid "Module bay (ID)" msgstr "" -#: dcim/filtersets.py:1333 dcim/filtersets.py:1425 ipam/filtersets.py:611 -#: ipam/filtersets.py:851 ipam/filtersets.py:1115 -#: virtualization/filtersets.py:161 vpn/filtersets.py:379 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 +#: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 +#: netbox/ipam/filtersets.py:1115 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:379 msgid "Device (ID)" msgstr "" -#: dcim/filtersets.py:1421 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "" -#: dcim/filtersets.py:1431 ipam/filtersets.py:606 ipam/filtersets.py:846 -#: ipam/filtersets.py:1121 vpn/filtersets.py:374 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1121 +#: netbox/vpn/filtersets.py:374 msgid "Device (name)" msgstr "" -#: dcim/filtersets.py:1442 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "" -#: dcim/filtersets.py:1447 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "" -#: dcim/filtersets.py:1453 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "" -#: dcim/filtersets.py:1458 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "" -#: dcim/filtersets.py:1464 dcim/forms/filtersets.py:109 -#: dcim/tables/devices.py:206 netbox/navigation/menu.py:79 -#: templates/dcim/device.html:120 templates/dcim/device_edit.html:93 -#: templates/dcim/virtualchassis.html:20 -#: templates/dcim/virtualchassis_add.html:8 -#: templates/dcim/virtualchassis_edit.html:24 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 +#: netbox/templates/dcim/device.html:120 +#: netbox/templates/dcim/device_edit.html:93 +#: netbox/templates/dcim/virtualchassis.html:20 +#: netbox/templates/dcim/virtualchassis_add.html:8 +#: netbox/templates/dcim/virtualchassis_edit.html:24 msgid "Virtual Chassis" msgstr "" -#: dcim/filtersets.py:1488 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "" -#: dcim/filtersets.py:1495 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "" -#: dcim/filtersets.py:1604 ipam/forms/bulk_import.py:189 -#: vpn/forms/bulk_import.py:308 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 +#: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "" -#: dcim/filtersets.py:1608 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "" -#: dcim/filtersets.py:1613 dcim/forms/bulk_edit.py:1489 -#: dcim/forms/bulk_import.py:891 dcim/forms/filtersets.py:1428 -#: dcim/forms/model_forms.py:1378 dcim/models/device_components.py:711 -#: dcim/tables/devices.py:626 ipam/filtersets.py:316 ipam/filtersets.py:327 -#: ipam/filtersets.py:483 ipam/filtersets.py:584 ipam/filtersets.py:595 -#: ipam/forms/bulk_edit.py:242 ipam/forms/bulk_edit.py:298 -#: ipam/forms/bulk_edit.py:340 ipam/forms/bulk_import.py:157 -#: ipam/forms/bulk_import.py:243 ipam/forms/bulk_import.py:279 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:62 -#: ipam/forms/model_forms.py:202 ipam/forms/model_forms.py:247 -#: ipam/forms/model_forms.py:300 ipam/forms/model_forms.py:431 -#: ipam/forms/model_forms.py:445 ipam/forms/model_forms.py:459 -#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 -#: ipam/models/vrfs.py:62 ipam/tables/ip.py:242 ipam/tables/ip.py:309 -#: ipam/tables/ip.py:360 ipam/tables/ip.py:450 -#: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 -#: templates/ipam/iprange.html:40 templates/ipam/prefix.html:19 -#: templates/ipam/vrf.html:7 templates/ipam/vrf.html:13 -#: templates/virtualization/vminterface.html:47 -#: virtualization/forms/bulk_edit.py:261 -#: virtualization/forms/bulk_import.py:171 -#: virtualization/forms/filtersets.py:228 -#: virtualization/forms/model_forms.py:344 -#: virtualization/models/virtualmachines.py:355 -#: virtualization/tables/virtualmachines.py:143 +#: 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:1378 +#: netbox/dcim/models/device_components.py:711 +#: netbox/dcim/tables/devices.py:626 netbox/ipam/filtersets.py:316 +#: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 +#: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 +#: netbox/ipam/forms/bulk_edit.py:242 netbox/ipam/forms/bulk_edit.py:298 +#: netbox/ipam/forms/bulk_edit.py:340 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 +#: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 +#: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 +#: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 +#: netbox/ipam/forms/model_forms.py:300 netbox/ipam/forms/model_forms.py:431 +#: netbox/ipam/forms/model_forms.py:445 netbox/ipam/forms/model_forms.py:459 +#: netbox/ipam/models/ip.py:233 netbox/ipam/models/ip.py:512 +#: netbox/ipam/models/ip.py:720 netbox/ipam/models/vrfs.py:62 +#: netbox/ipam/tables/ip.py:242 netbox/ipam/tables/ip.py:309 +#: netbox/ipam/tables/ip.py:360 netbox/ipam/tables/ip.py:450 +#: netbox/templates/dcim/interface.html:133 +#: netbox/templates/ipam/ipaddress.html:18 +#: netbox/templates/ipam/iprange.html:40 netbox/templates/ipam/prefix.html:19 +#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/templates/virtualization/vminterface.html:47 +#: netbox/virtualization/forms/bulk_edit.py:261 +#: netbox/virtualization/forms/bulk_import.py:171 +#: netbox/virtualization/forms/filtersets.py:228 +#: netbox/virtualization/forms/model_forms.py:344 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "" -#: dcim/filtersets.py:1619 ipam/filtersets.py:322 ipam/filtersets.py:333 -#: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 +#: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 +#: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "" -#: dcim/filtersets.py:1624 ipam/filtersets.py:1030 vpn/filtersets.py:342 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:342 msgid "L2VPN (ID)" msgstr "" -#: dcim/filtersets.py:1630 dcim/forms/filtersets.py:1433 -#: dcim/tables/devices.py:570 ipam/filtersets.py:1036 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:137 -#: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 -#: templates/vpn/l2vpntermination.html:12 -#: virtualization/forms/filtersets.py:233 vpn/forms/bulk_import.py:280 -#: vpn/forms/filtersets.py:246 vpn/forms/model_forms.py:409 -#: vpn/forms/model_forms.py:427 vpn/models/l2vpn.py:63 vpn/tables/l2vpn.py:55 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 +#: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 +#: netbox/templates/vpn/l2vpntermination.html:12 +#: netbox/virtualization/forms/filtersets.py:233 +#: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 +#: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 +#: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "" -#: dcim/filtersets.py:1662 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "" -#: dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "" -#: dcim/filtersets.py:1671 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "" -#: dcim/filtersets.py:1676 virtualization/filtersets.py:293 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "" -#: dcim/filtersets.py:1681 virtualization/filtersets.py:298 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "" -#: dcim/filtersets.py:1686 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "" -#: dcim/filtersets.py:1713 dcim/filtersets.py:1725 -#: dcim/forms/filtersets.py:1345 dcim/forms/model_forms.py:1690 -#: templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1690 +#: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "" -#: dcim/filtersets.py:1719 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "" -#: dcim/filtersets.py:1730 templates/wireless/wirelesslan.html:11 -#: wireless/forms/model_forms.py:53 +#: netbox/dcim/filtersets.py:1730 netbox/templates/wireless/wirelesslan.html:11 +#: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "" -#: dcim/filtersets.py:1734 dcim/tables/devices.py:613 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:613 msgid "Wireless link" msgstr "" -#: dcim/filtersets.py:1803 +#: netbox/dcim/filtersets.py:1803 msgid "Parent module bay (ID)" msgstr "" -#: dcim/filtersets.py:1808 +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "" -#: dcim/filtersets.py:1819 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "" -#: dcim/filtersets.py:1825 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "" -#: dcim/filtersets.py:1891 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "" -#: dcim/filtersets.py:1897 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "" -#: dcim/filtersets.py:1939 tenancy/filtersets.py:245 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:245 msgid "Tenant (ID)" msgstr "" -#: dcim/filtersets.py:1945 extras/filtersets.py:618 tenancy/filtersets.py:251 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 +#: netbox/tenancy/filtersets.py:251 msgid "Tenant (slug)" msgstr "" -#: dcim/filtersets.py:1981 dcim/forms/filtersets.py:1077 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "" -#: dcim/filtersets.py:2239 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "" -#: dcim/forms/bulk_create.py:40 extras/forms/filtersets.py:401 -#: extras/forms/model_forms.py:567 extras/forms/model_forms.py:619 -#: netbox/forms/base.py:86 netbox/forms/mixins.py:81 -#: netbox/tables/columns.py:478 -#: templates/circuits/inc/circuit_termination.html:32 -#: templates/generic/bulk_edit.html:65 templates/inc/panels/tags.html:5 -#: utilities/forms/fields/fields.py:81 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 +#: netbox/templates/circuits/inc/circuit_termination.html:32 +#: netbox/templates/generic/bulk_edit.html:65 +#: netbox/templates/inc/panels/tags.html:5 +#: netbox/utilities/forms/fields/fields.py:81 msgid "Tags" msgstr "" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1498 -#: dcim/forms/model_forms.py:488 dcim/forms/model_forms.py:546 -#: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 -#: dcim/tables/devices.py:165 dcim/tables/devices.py:707 -#: dcim/tables/devicetypes.py:246 templates/dcim/device.html:43 -#: templates/dcim/device.html:131 templates/dcim/modulebay.html:38 -#: templates/dcim/virtualchassis.html:66 -#: templates/dcim/virtualchassis_edit.html:55 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: 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:707 netbox/dcim/tables/devicetypes.py:246 +#: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 +#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/virtualchassis.html:66 +#: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" msgstr "" -#: dcim/forms/bulk_create.py:114 +#: netbox/dcim/forms/bulk_create.py:114 msgid "" "Alphanumeric ranges are supported. (Must match the number of names being " "created.)" msgstr "" -#: dcim/forms/bulk_edit.py:132 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "" -#: dcim/forms/bulk_edit.py:137 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "" -#: dcim/forms/bulk_edit.py:143 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "" -#: dcim/forms/bulk_edit.py:146 dcim/forms/bulk_import.py:123 -#: dcim/forms/model_forms.py:128 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "" -#: dcim/forms/bulk_edit.py:224 dcim/forms/bulk_edit.py:495 -#: dcim/forms/bulk_edit.py:559 dcim/forms/bulk_edit.py:632 -#: dcim/forms/bulk_edit.py:656 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:1267 dcim/forms/bulk_edit.py:1660 -#: dcim/forms/bulk_import.py:182 dcim/forms/bulk_import.py:371 -#: dcim/forms/bulk_import.py:405 dcim/forms/bulk_import.py:450 -#: dcim/forms/bulk_import.py:486 dcim/forms/bulk_import.py:1082 -#: dcim/forms/filtersets.py:313 dcim/forms/filtersets.py:372 -#: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:700 dcim/forms/filtersets.py:782 -#: dcim/forms/filtersets.py:947 dcim/forms/filtersets.py:1539 -#: dcim/forms/model_forms.py:207 dcim/forms/model_forms.py:337 -#: dcim/forms/model_forms.py:349 dcim/forms/model_forms.py:395 -#: dcim/forms/model_forms.py:436 dcim/forms/model_forms.py:1075 -#: dcim/forms/model_forms.py:1515 dcim/forms/object_import.py:187 -#: dcim/tables/devices.py:96 dcim/tables/devices.py:172 -#: dcim/tables/devices.py:940 dcim/tables/devicetypes.py:80 -#: dcim/tables/devicetypes.py:308 dcim/tables/modules.py:20 -#: dcim/tables/modules.py:60 dcim/tables/racks.py:58 dcim/tables/racks.py:132 -#: templates/dcim/devicetype.html:14 templates/dcim/inventoryitem.html:44 -#: templates/dcim/manufacturer.html:33 templates/dcim/modulebay.html:62 -#: templates/dcim/moduletype.html:25 templates/dcim/platform.html:37 -#: templates/dcim/racktype.html:16 +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: 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: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:940 netbox/dcim/tables/devicetypes.py:80 +#: netbox/dcim/tables/devicetypes.py:308 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 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:25 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 msgid "Manufacturer" msgstr "" -#: dcim/forms/bulk_edit.py:229 dcim/forms/bulk_edit.py:372 -#: dcim/forms/bulk_import.py:191 dcim/forms/bulk_import.py:263 -#: dcim/forms/filtersets.py:255 -#: templates/dcim/inc/panels/racktype_dimensions.html:6 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 msgid "Form factor" msgstr "" -#: dcim/forms/bulk_edit.py:234 dcim/forms/bulk_edit.py:377 -#: dcim/forms/bulk_import.py:199 dcim/forms/bulk_import.py:266 -#: dcim/forms/filtersets.py:260 -#: templates/dcim/inc/panels/racktype_dimensions.html:10 +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "" -#: dcim/forms/bulk_edit.py:240 dcim/forms/bulk_edit.py:383 -#: templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "" -#: dcim/forms/bulk_edit.py:249 dcim/forms/bulk_edit.py:388 -#: dcim/forms/filtersets.py:274 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "" -#: dcim/forms/bulk_edit.py:252 dcim/forms/bulk_edit.py:391 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "" -#: dcim/forms/bulk_edit.py:257 dcim/forms/bulk_edit.py:396 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "" -#: dcim/forms/bulk_edit.py:262 dcim/forms/bulk_edit.py:401 -#: dcim/forms/bulk_import.py:204 dcim/forms/bulk_import.py:271 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "" -#: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:406 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "" -#: dcim/forms/bulk_edit.py:272 dcim/forms/bulk_edit.py:299 -#: dcim/forms/bulk_edit.py:416 dcim/forms/bulk_edit.py:446 -#: dcim/forms/bulk_edit.py:529 dcim/forms/bulk_edit.py:552 -#: dcim/forms/bulk_edit.py:573 dcim/forms/bulk_edit.py:595 -#: dcim/forms/bulk_import.py:384 dcim/forms/bulk_import.py:416 -#: dcim/forms/filtersets.py:285 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:327 dcim/forms/filtersets.py:401 -#: dcim/forms/filtersets.py:488 dcim/forms/filtersets.py:594 -#: dcim/forms/filtersets.py:613 dcim/forms/filtersets.py:674 -#: dcim/forms/model_forms.py:221 dcim/forms/model_forms.py:298 -#: dcim/tables/devicetypes.py:106 dcim/tables/modules.py:35 -#: dcim/tables/racks.py:74 dcim/tables/racks.py:172 -#: extras/forms/bulk_edit.py:53 extras/forms/bulk_edit.py:133 -#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:288 -#: extras/forms/filtersets.py:64 extras/forms/filtersets.py:156 -#: extras/forms/filtersets.py:243 ipam/forms/bulk_edit.py:190 -#: templates/dcim/device.html:324 templates/dcim/devicetype.html:49 -#: templates/dcim/moduletype.html:45 templates/dcim/rack.html:81 -#: templates/dcim/racktype.html:41 templates/extras/configcontext.html:17 -#: templates/extras/customlink.html:25 templates/extras/savedfilter.html:33 -#: templates/ipam/role.html:30 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:106 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/templates/dcim/device.html:324 +#: netbox/templates/dcim/devicetype.html:49 +#: netbox/templates/dcim/moduletype.html:45 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 +#: netbox/templates/extras/configcontext.html:17 +#: netbox/templates/extras/customlink.html:25 +#: netbox/templates/extras/savedfilter.html:33 +#: netbox/templates/ipam/role.html:30 msgid "Weight" msgstr "" -#: dcim/forms/bulk_edit.py:277 dcim/forms/bulk_edit.py:421 -#: dcim/forms/filtersets.py:290 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "" -#: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:426 -#: dcim/forms/bulk_edit.py:534 dcim/forms/bulk_edit.py:578 -#: dcim/forms/bulk_import.py:210 dcim/forms/bulk_import.py:283 -#: dcim/forms/bulk_import.py:389 dcim/forms/bulk_import.py:421 -#: dcim/forms/filtersets.py:295 dcim/forms/filtersets.py:598 -#: dcim/forms/filtersets.py:678 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "" -#: dcim/forms/bulk_edit.py:296 dcim/forms/filtersets.py:305 -#: dcim/forms/model_forms.py:217 dcim/forms/model_forms.py:256 -#: templates/dcim/rack.html:45 templates/dcim/racktype.html:13 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 msgid "Rack Type" msgstr "" -#: dcim/forms/bulk_edit.py:298 dcim/forms/model_forms.py:220 -#: dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 msgid "Outer Dimensions" msgstr "" -#: dcim/forms/bulk_edit.py:301 dcim/forms/model_forms.py:222 -#: dcim/forms/model_forms.py:299 templates/dcim/device.html:315 -#: templates/dcim/inc/panels/racktype_dimensions.html:3 +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 msgid "Dimensions" msgstr "" -#: dcim/forms/bulk_edit.py:303 dcim/forms/filtersets.py:306 -#: dcim/forms/filtersets.py:326 dcim/forms/model_forms.py:224 -#: templates/dcim/inc/panels/racktype_numbering.html:3 +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "" -#: dcim/forms/bulk_edit.py:357 dcim/forms/bulk_edit.py:1262 -#: dcim/forms/bulk_edit.py:1655 dcim/forms/bulk_import.py:253 -#: dcim/forms/bulk_import.py:1076 dcim/forms/filtersets.py:367 -#: dcim/forms/filtersets.py:777 dcim/forms/filtersets.py:1534 -#: dcim/forms/model_forms.py:251 dcim/forms/model_forms.py:1070 -#: dcim/forms/model_forms.py:1510 dcim/forms/object_import.py:181 -#: dcim/tables/devices.py:169 dcim/tables/devices.py:809 -#: dcim/tables/devices.py:937 dcim/tables/devicetypes.py:304 -#: dcim/tables/racks.py:129 extras/filtersets.py:552 -#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:311 -#: ipam/forms/bulk_edit.py:359 ipam/forms/bulk_edit.py:511 -#: ipam/forms/bulk_import.py:197 ipam/forms/bulk_import.py:262 -#: ipam/forms/bulk_import.py:298 ipam/forms/bulk_import.py:455 -#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 -#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:509 -#: ipam/forms/model_forms.py:188 ipam/forms/model_forms.py:221 -#: ipam/forms/model_forms.py:250 ipam/forms/model_forms.py:643 -#: ipam/tables/ip.py:258 ipam/tables/ip.py:316 ipam/tables/ip.py:367 -#: ipam/tables/vlans.py:130 ipam/tables/vlans.py:235 -#: templates/dcim/device.html:182 -#: templates/dcim/inc/panels/inventory_items.html:20 -#: templates/dcim/interface.html:223 templates/dcim/inventoryitem.html:36 -#: templates/dcim/rack.html:49 templates/ipam/ipaddress.html:41 -#: templates/ipam/iprange.html:50 templates/ipam/prefix.html:77 -#: templates/ipam/role.html:19 templates/ipam/vlan.html:52 -#: templates/virtualization/virtualmachine.html:23 -#: templates/vpn/tunneltermination.html:17 -#: templates/wireless/inc/wirelesslink_interface.html:20 -#: tenancy/forms/bulk_edit.py:142 tenancy/forms/filtersets.py:107 -#: tenancy/forms/model_forms.py:137 tenancy/tables/contacts.py:102 -#: virtualization/forms/bulk_edit.py:145 -#: virtualization/forms/bulk_import.py:106 -#: virtualization/forms/filtersets.py:157 -#: virtualization/forms/model_forms.py:195 -#: virtualization/tables/virtualmachines.py:75 vpn/forms/bulk_edit.py:87 -#: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:85 -#: vpn/forms/model_forms.py:78 vpn/forms/model_forms.py:113 -#: vpn/tables/tunnels.py:82 +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: 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:1510 netbox/dcim/forms/object_import.py:181 +#: netbox/dcim/tables/devices.py:169 netbox/dcim/tables/devices.py:809 +#: netbox/dcim/tables/devices.py:937 netbox/dcim/tables/devicetypes.py:304 +#: netbox/dcim/tables/racks.py:129 netbox/extras/filtersets.py:552 +#: netbox/ipam/forms/bulk_edit.py:261 netbox/ipam/forms/bulk_edit.py:311 +#: netbox/ipam/forms/bulk_edit.py:359 netbox/ipam/forms/bulk_edit.py:511 +#: netbox/ipam/forms/bulk_import.py:197 netbox/ipam/forms/bulk_import.py:262 +#: netbox/ipam/forms/bulk_import.py:298 netbox/ipam/forms/bulk_import.py:455 +#: netbox/ipam/forms/filtersets.py:237 netbox/ipam/forms/filtersets.py:289 +#: netbox/ipam/forms/filtersets.py:360 netbox/ipam/forms/filtersets.py:509 +#: netbox/ipam/forms/model_forms.py:188 netbox/ipam/forms/model_forms.py:221 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:643 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:316 +#: netbox/ipam/tables/ip.py:367 netbox/ipam/tables/vlans.py:130 +#: netbox/ipam/tables/vlans.py:235 netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 msgid "Role" msgstr "" -#: dcim/forms/bulk_edit.py:364 dcim/forms/bulk_edit.py:712 -#: dcim/forms/bulk_edit.py:764 templates/dcim/device.html:104 -#: templates/dcim/module.html:77 templates/dcim/modulebay.html:70 -#: templates/dcim/rack.html:57 templates/virtualization/virtualmachine.html:35 +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 netbox/templates/dcim/modulebay.html:70 +#: netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 msgid "Serial Number" msgstr "" -#: dcim/forms/bulk_edit.py:367 dcim/forms/filtersets.py:387 -#: dcim/forms/filtersets.py:813 dcim/forms/filtersets.py:967 -#: dcim/forms/filtersets.py:1546 +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 msgid "Asset tag" msgstr "" -#: dcim/forms/bulk_edit.py:411 dcim/forms/bulk_edit.py:524 -#: dcim/forms/bulk_edit.py:568 dcim/forms/bulk_edit.py:705 -#: dcim/forms/bulk_import.py:277 dcim/forms/bulk_import.py:410 -#: dcim/forms/bulk_import.py:580 dcim/forms/filtersets.py:280 -#: dcim/forms/filtersets.py:511 dcim/forms/filtersets.py:669 -#: dcim/forms/filtersets.py:804 templates/dcim/device.html:98 -#: templates/dcim/devicetype.html:65 templates/dcim/moduletype.html:41 -#: templates/dcim/rack.html:65 templates/dcim/racktype.html:28 +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:41 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 msgid "Airflow" msgstr "" -#: dcim/forms/bulk_edit.py:440 dcim/forms/bulk_edit.py:910 -#: dcim/forms/bulk_import.py:322 dcim/forms/bulk_import.py:325 -#: dcim/forms/bulk_import.py:553 dcim/forms/bulk_import.py:1358 -#: dcim/forms/bulk_import.py:1362 dcim/forms/filtersets.py:104 -#: dcim/forms/filtersets.py:324 dcim/forms/filtersets.py:405 -#: dcim/forms/filtersets.py:419 dcim/forms/filtersets.py:457 -#: dcim/forms/filtersets.py:772 dcim/forms/filtersets.py:1035 -#: dcim/forms/filtersets.py:1167 dcim/forms/model_forms.py:264 -#: dcim/forms/model_forms.py:306 dcim/forms/model_forms.py:479 -#: dcim/forms/model_forms.py:755 dcim/forms/object_create.py:400 -#: dcim/tables/devices.py:161 dcim/tables/power.py:70 dcim/tables/racks.py:217 -#: ipam/forms/filtersets.py:442 templates/dcim/device.html:30 -#: templates/dcim/inc/cable_termination.html:16 -#: templates/dcim/powerfeed.html:28 templates/dcim/rack.html:13 -#: templates/dcim/rack/base.html:4 templates/dcim/rackreservation.html:19 -#: templates/dcim/rackreservation.html:36 -#: virtualization/forms/model_forms.py:113 +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/filtersets.py:442 +#: netbox/templates/dcim/device.html:30 +#: netbox/templates/dcim/inc/cable_termination.html:16 +#: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 +#: netbox/templates/dcim/rack/base.html:4 +#: netbox/templates/dcim/rackreservation.html:19 +#: netbox/templates/dcim/rackreservation.html:36 +#: netbox/virtualization/forms/model_forms.py:113 msgid "Rack" msgstr "" -#: dcim/forms/bulk_edit.py:444 dcim/forms/bulk_edit.py:730 -#: dcim/forms/filtersets.py:325 dcim/forms/filtersets.py:398 -#: dcim/forms/filtersets.py:481 dcim/forms/filtersets.py:608 -#: dcim/forms/filtersets.py:721 dcim/forms/filtersets.py:942 -#: dcim/forms/model_forms.py:670 dcim/forms/model_forms.py:1580 -#: templates/dcim/device_edit.html:20 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: 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:1580 +#: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "" -#: dcim/forms/bulk_edit.py:500 dcim/forms/bulk_import.py:377 -#: dcim/forms/filtersets.py:499 dcim/forms/model_forms.py:353 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "" -#: dcim/forms/bulk_edit.py:505 dcim/forms/bulk_edit.py:564 -#: dcim/forms/filtersets.py:502 dcim/forms/filtersets.py:622 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "" -#: dcim/forms/bulk_edit.py:509 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "" -#: dcim/forms/bulk_edit.py:521 dcim/tables/devicetypes.py:102 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:102 msgid "Exclude from utilization" msgstr "" -#: dcim/forms/bulk_edit.py:550 dcim/forms/model_forms.py:368 -#: dcim/tables/devicetypes.py:77 templates/dcim/device.html:88 -#: templates/dcim/devicebay.html:52 templates/dcim/module.html:61 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/tables/devicetypes.py:77 netbox/templates/dcim/device.html:88 +#: netbox/templates/dcim/devicebay.html:52 netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "" -#: dcim/forms/bulk_edit.py:592 dcim/forms/model_forms.py:401 -#: dcim/tables/modules.py:17 dcim/tables/modules.py:65 -#: templates/dcim/module.html:65 templates/dcim/modulebay.html:66 -#: templates/dcim/moduletype.html:22 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 +#: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 +#: netbox/templates/dcim/module.html:65 netbox/templates/dcim/modulebay.html:66 +#: netbox/templates/dcim/moduletype.html:22 msgid "Module Type" msgstr "" -#: dcim/forms/bulk_edit.py:596 dcim/forms/model_forms.py:371 -#: dcim/forms/model_forms.py:402 templates/dcim/devicetype.html:11 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 msgid "Chassis" msgstr "" -#: dcim/forms/bulk_edit.py:610 dcim/models/devices.py:484 -#: dcim/tables/devices.py:67 +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 +#: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "" -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:637 -#: dcim/forms/bulk_edit.py:720 dcim/forms/bulk_import.py:434 -#: dcim/forms/bulk_import.py:438 dcim/forms/bulk_import.py:457 -#: dcim/forms/bulk_import.py:461 dcim/forms/bulk_import.py:586 -#: dcim/forms/bulk_import.py:590 dcim/forms/filtersets.py:689 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:823 -#: dcim/forms/model_forms.py:415 dcim/forms/model_forms.py:441 -#: dcim/forms/model_forms.py:555 virtualization/forms/bulk_import.py:132 -#: virtualization/forms/bulk_import.py:133 -#: virtualization/forms/filtersets.py:188 -#: virtualization/forms/model_forms.py:215 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 +#: netbox/virtualization/forms/bulk_import.py:132 +#: netbox/virtualization/forms/bulk_import.py:133 +#: netbox/virtualization/forms/filtersets.py:188 +#: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "" -#: dcim/forms/bulk_edit.py:661 dcim/forms/bulk_edit.py:1061 -#: dcim/forms/bulk_import.py:492 dcim/forms/filtersets.py:114 -#: dcim/forms/model_forms.py:501 dcim/forms/model_forms.py:872 -#: dcim/forms/model_forms.py:889 extras/filtersets.py:547 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "" -#: dcim/forms/bulk_edit.py:672 dcim/forms/bulk_import.py:473 -#: dcim/forms/filtersets.py:119 dcim/forms/model_forms.py:509 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "" -#: dcim/forms/bulk_edit.py:695 dcim/forms/bulk_import.py:498 -#: dcim/forms/filtersets.py:796 dcim/forms/model_forms.py:451 -#: dcim/forms/model_forms.py:513 dcim/tables/devices.py:182 -#: extras/filtersets.py:563 templates/dcim/device.html:186 -#: templates/dcim/platform.html:26 -#: templates/virtualization/virtualmachine.html:27 -#: virtualization/forms/bulk_edit.py:160 -#: virtualization/forms/bulk_import.py:122 -#: virtualization/forms/filtersets.py:168 -#: virtualization/forms/model_forms.py:203 -#: virtualization/tables/virtualmachines.py:79 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 +#: netbox/templates/dcim/platform.html:26 +#: netbox/templates/virtualization/virtualmachine.html:27 +#: netbox/virtualization/forms/bulk_edit.py:160 +#: netbox/virtualization/forms/bulk_import.py:122 +#: netbox/virtualization/forms/filtersets.py:168 +#: netbox/virtualization/forms/model_forms.py:203 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "" -#: dcim/forms/bulk_edit.py:728 dcim/forms/bulk_edit.py:1281 -#: dcim/forms/bulk_edit.py:1650 dcim/forms/bulk_edit.py:1696 -#: dcim/forms/bulk_import.py:641 dcim/forms/bulk_import.py:703 -#: dcim/forms/bulk_import.py:729 dcim/forms/bulk_import.py:755 -#: dcim/forms/bulk_import.py:775 dcim/forms/bulk_import.py:828 -#: dcim/forms/bulk_import.py:946 dcim/forms/bulk_import.py:994 -#: dcim/forms/bulk_import.py:1011 dcim/forms/bulk_import.py:1023 -#: dcim/forms/bulk_import.py:1071 dcim/forms/bulk_import.py:1422 -#: dcim/forms/connections.py:24 dcim/forms/filtersets.py:131 -#: dcim/forms/filtersets.py:921 dcim/forms/filtersets.py:1051 -#: dcim/forms/filtersets.py:1242 dcim/forms/filtersets.py:1267 -#: dcim/forms/filtersets.py:1291 dcim/forms/filtersets.py:1311 -#: dcim/forms/filtersets.py:1334 dcim/forms/filtersets.py:1444 -#: dcim/forms/filtersets.py:1469 dcim/forms/filtersets.py:1493 -#: dcim/forms/filtersets.py:1511 dcim/forms/filtersets.py:1528 -#: dcim/forms/filtersets.py:1592 dcim/forms/filtersets.py:1616 -#: dcim/forms/filtersets.py:1640 dcim/forms/model_forms.py:633 -#: dcim/forms/model_forms.py:849 dcim/forms/model_forms.py:1208 -#: dcim/forms/model_forms.py:1664 dcim/forms/object_create.py:257 -#: dcim/tables/connections.py:22 dcim/tables/connections.py:41 -#: dcim/tables/connections.py:60 dcim/tables/devices.py:285 -#: dcim/tables/devices.py:371 dcim/tables/devices.py:412 -#: dcim/tables/devices.py:454 dcim/tables/devices.py:505 -#: dcim/tables/devices.py:597 dcim/tables/devices.py:697 -#: dcim/tables/devices.py:754 dcim/tables/devices.py:801 -#: dcim/tables/devices.py:861 dcim/tables/devices.py:930 -#: dcim/tables/devices.py:1057 dcim/tables/modules.py:52 -#: extras/forms/filtersets.py:321 ipam/forms/bulk_import.py:304 -#: ipam/forms/bulk_import.py:481 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:319 ipam/forms/model_forms.py:679 -#: ipam/forms/model_forms.py:712 ipam/forms/model_forms.py:738 -#: ipam/tables/vlans.py:180 templates/dcim/consoleport.html:20 -#: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:15 -#: templates/dcim/device.html:130 templates/dcim/device_edit.html:10 -#: templates/dcim/devicebay.html:20 templates/dcim/devicebay.html:48 -#: templates/dcim/frontport.html:20 templates/dcim/interface.html:30 -#: templates/dcim/interface.html:161 templates/dcim/inventoryitem.html:20 -#: templates/dcim/module.html:57 templates/dcim/modulebay.html:20 -#: templates/dcim/poweroutlet.html:20 templates/dcim/powerport.html:20 -#: templates/dcim/rearport.html:20 templates/dcim/virtualchassis.html:65 -#: templates/dcim/virtualchassis_edit.html:51 -#: templates/dcim/virtualdevicecontext.html:22 -#: templates/virtualization/virtualmachine.html:114 -#: templates/vpn/tunneltermination.html:23 -#: templates/wireless/inc/wirelesslink_interface.html:6 -#: virtualization/filtersets.py:167 virtualization/forms/bulk_edit.py:137 -#: virtualization/forms/bulk_import.py:99 -#: virtualization/forms/filtersets.py:128 -#: virtualization/forms/model_forms.py:185 -#: virtualization/tables/virtualmachines.py:71 vpn/choices.py:44 -#: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:283 -#: vpn/forms/filtersets.py:275 vpn/forms/model_forms.py:90 -#: vpn/forms/model_forms.py:125 vpn/forms/model_forms.py:236 -#: vpn/forms/model_forms.py:453 wireless/forms/model_forms.py:99 -#: wireless/forms/model_forms.py:141 wireless/tables/wirelesslan.py:75 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: 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: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:597 netbox/dcim/tables/devices.py:697 +#: netbox/dcim/tables/devices.py:754 netbox/dcim/tables/devices.py:801 +#: netbox/dcim/tables/devices.py:861 netbox/dcim/tables/devices.py:930 +#: netbox/dcim/tables/devices.py:1057 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 +#: netbox/ipam/forms/model_forms.py:712 netbox/ipam/forms/model_forms.py:738 +#: netbox/ipam/tables/vlans.py:180 netbox/templates/dcim/consoleport.html:20 +#: netbox/templates/dcim/consoleserverport.html:20 +#: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 +#: netbox/templates/dcim/device_edit.html:10 +#: netbox/templates/dcim/devicebay.html:20 +#: netbox/templates/dcim/devicebay.html:48 +#: netbox/templates/dcim/frontport.html:20 +#: netbox/templates/dcim/interface.html:30 +#: netbox/templates/dcim/interface.html:161 +#: netbox/templates/dcim/inventoryitem.html:20 +#: netbox/templates/dcim/module.html:57 netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/poweroutlet.html:20 +#: netbox/templates/dcim/powerport.html:20 +#: netbox/templates/dcim/rearport.html:20 +#: netbox/templates/dcim/virtualchassis.html:65 +#: netbox/templates/dcim/virtualchassis_edit.html:51 +#: netbox/templates/dcim/virtualdevicecontext.html:22 +#: netbox/templates/virtualization/virtualmachine.html:114 +#: netbox/templates/vpn/tunneltermination.html:23 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:6 +#: netbox/virtualization/filtersets.py:167 +#: netbox/virtualization/forms/bulk_edit.py:137 +#: netbox/virtualization/forms/bulk_import.py:99 +#: netbox/virtualization/forms/filtersets.py:128 +#: netbox/virtualization/forms/model_forms.py:185 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 +#: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 +#: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 +#: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 +#: netbox/vpn/forms/model_forms.py:453 netbox/wireless/forms/model_forms.py:99 +#: netbox/wireless/forms/model_forms.py:141 +#: netbox/wireless/tables/wirelesslan.py:75 msgid "Device" msgstr "" -#: dcim/forms/bulk_edit.py:731 templates/extras/dashboard/widget_config.html:7 -#: virtualization/forms/bulk_edit.py:191 +#: netbox/dcim/forms/bulk_edit.py:731 +#: netbox/templates/extras/dashboard/widget_config.html:7 +#: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "" -#: dcim/forms/bulk_edit.py:745 dcim/forms/bulk_import.py:653 -#: dcim/forms/model_forms.py:647 dcim/forms/model_forms.py:897 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "" -#: dcim/forms/bulk_edit.py:799 dcim/forms/bulk_edit.py:984 -#: dcim/forms/bulk_edit.py:1003 dcim/forms/bulk_edit.py:1026 -#: dcim/forms/bulk_edit.py:1068 dcim/forms/bulk_edit.py:1112 -#: dcim/forms/bulk_edit.py:1163 dcim/forms/bulk_edit.py:1190 -#: dcim/forms/bulk_edit.py:1217 dcim/forms/bulk_edit.py:1235 -#: dcim/forms/bulk_edit.py:1253 dcim/forms/filtersets.py:67 -#: dcim/forms/object_create.py:46 templates/dcim/cable.html:32 -#: templates/dcim/consoleport.html:32 templates/dcim/consoleserverport.html:32 -#: templates/dcim/devicebay.html:28 templates/dcim/frontport.html:32 -#: templates/dcim/inc/panels/inventory_items.html:19 -#: templates/dcim/interface.html:42 templates/dcim/inventoryitem.html:32 -#: templates/dcim/modulebay.html:34 templates/dcim/poweroutlet.html:32 -#: templates/dcim/powerport.html:32 templates/dcim/rearport.html:32 -#: templates/extras/customfield.html:26 templates/generic/bulk_import.html:162 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 +#: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 +#: netbox/templates/dcim/consoleport.html:32 +#: netbox/templates/dcim/consoleserverport.html:32 +#: netbox/templates/dcim/devicebay.html:28 +#: netbox/templates/dcim/frontport.html:32 +#: netbox/templates/dcim/inc/panels/inventory_items.html:19 +#: netbox/templates/dcim/interface.html:42 +#: netbox/templates/dcim/inventoryitem.html:32 +#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/poweroutlet.html:32 +#: netbox/templates/dcim/powerport.html:32 +#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/extras/customfield.html:26 +#: netbox/templates/generic/bulk_import.html:162 msgid "Label" msgstr "" -#: dcim/forms/bulk_edit.py:808 dcim/forms/filtersets.py:1068 -#: templates/dcim/cable.html:50 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 +#: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "" -#: dcim/forms/bulk_edit.py:813 dcim/forms/bulk_import.py:1226 -#: dcim/forms/bulk_import.py:1229 dcim/forms/filtersets.py:1072 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "" -#: dcim/forms/bulk_edit.py:837 templates/dcim/virtualchassis.html:23 +#: netbox/dcim/forms/bulk_edit.py:837 +#: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "" -#: dcim/forms/bulk_edit.py:905 dcim/forms/bulk_import.py:1345 -#: dcim/forms/filtersets.py:1158 dcim/forms/model_forms.py:750 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "" -#: dcim/forms/bulk_edit.py:927 dcim/forms/bulk_import.py:1381 -#: dcim/forms/filtersets.py:1180 templates/dcim/powerfeed.html:83 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "" -#: dcim/forms/bulk_edit.py:933 dcim/forms/bulk_import.py:1386 -#: dcim/forms/filtersets.py:1185 templates/dcim/powerfeed.html:95 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "" -#: dcim/forms/bulk_edit.py:939 dcim/forms/filtersets.py:1190 -#: templates/dcim/powerfeed.html:87 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 +#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "" -#: dcim/forms/bulk_edit.py:943 dcim/forms/filtersets.py:1194 -#: templates/dcim/powerfeed.html:91 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 +#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "" -#: dcim/forms/bulk_edit.py:947 dcim/forms/filtersets.py:1198 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "" -#: dcim/forms/bulk_edit.py:1036 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "" -#: dcim/forms/bulk_edit.py:1039 dcim/models/device_component_templates.py:282 -#: dcim/models/device_components.py:356 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:282 +#: netbox/dcim/models/device_components.py:356 msgid "Maximum power draw (watts)" msgstr "" -#: dcim/forms/bulk_edit.py:1042 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "" -#: dcim/forms/bulk_edit.py:1045 dcim/models/device_component_templates.py:289 -#: dcim/models/device_components.py:363 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_components.py:363 msgid "Allocated power draw (watts)" msgstr "" -#: dcim/forms/bulk_edit.py:1078 dcim/forms/bulk_import.py:786 -#: dcim/forms/model_forms.py:953 dcim/forms/model_forms.py:1278 -#: dcim/forms/model_forms.py:1567 dcim/forms/object_import.py:55 +#: 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:1567 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "" -#: dcim/forms/bulk_edit.py:1083 dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "" -#: dcim/forms/bulk_edit.py:1129 dcim/forms/bulk_edit.py:1440 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "" -#: dcim/forms/bulk_edit.py:1139 dcim/forms/bulk_edit.py:1446 -#: dcim/forms/bulk_import.py:876 dcim/forms/filtersets.py:1394 -#: dcim/forms/object_import.py:90 dcim/models/device_component_templates.py:437 -#: dcim/models/device_components.py:670 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 +#: netbox/dcim/forms/object_import.py:90 +#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_components.py:670 msgid "PoE mode" msgstr "" -#: dcim/forms/bulk_edit.py:1145 dcim/forms/bulk_edit.py:1452 -#: dcim/forms/bulk_import.py:882 dcim/forms/filtersets.py:1399 -#: dcim/forms/object_import.py:95 dcim/models/device_component_templates.py:443 -#: dcim/models/device_components.py:676 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 +#: netbox/dcim/forms/object_import.py:95 +#: netbox/dcim/models/device_component_templates.py:443 +#: netbox/dcim/models/device_components.py:676 msgid "PoE type" msgstr "" -#: dcim/forms/bulk_edit.py:1151 dcim/forms/filtersets.py:1404 -#: dcim/forms/object_import.py:100 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 +#: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "" -#: dcim/forms/bulk_edit.py:1288 dcim/forms/model_forms.py:669 -#: dcim/forms/model_forms.py:1223 dcim/tables/devices.py:313 -#: templates/dcim/consoleport.html:24 templates/dcim/consoleserverport.html:24 -#: templates/dcim/frontport.html:24 templates/dcim/interface.html:34 -#: templates/dcim/module.html:54 templates/dcim/modulebay.html:26 -#: templates/dcim/modulebay.html:58 templates/dcim/poweroutlet.html:24 -#: templates/dcim/powerport.html:24 templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 +#: netbox/templates/dcim/consoleport.html:24 +#: netbox/templates/dcim/consoleserverport.html:24 +#: netbox/templates/dcim/frontport.html:24 +#: netbox/templates/dcim/interface.html:34 netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 +#: netbox/templates/dcim/poweroutlet.html:24 +#: netbox/templates/dcim/powerport.html:24 +#: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "" -#: dcim/forms/bulk_edit.py:1420 dcim/tables/devices.py:665 -#: templates/dcim/interface.html:110 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:665 +#: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "" -#: dcim/forms/bulk_edit.py:1425 dcim/forms/model_forms.py:1305 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "" -#: dcim/forms/bulk_edit.py:1431 dcim/forms/bulk_import.py:714 -#: dcim/forms/bulk_import.py:740 dcim/forms/filtersets.py:1252 -#: dcim/forms/filtersets.py:1277 dcim/forms/filtersets.py:1358 -#: dcim/tables/devices.py:610 -#: templates/circuits/inc/circuit_termination_fields.html:67 -#: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:610 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 +#: netbox/templates/dcim/consoleport.html:40 +#: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "" -#: dcim/forms/bulk_edit.py:1460 dcim/forms/bulk_import.py:885 -#: templates/vpn/ikepolicy.html:25 templates/vpn/ipsecprofile.html:21 -#: templates/vpn/ipsecprofile.html:48 virtualization/forms/bulk_edit.py:233 -#: virtualization/forms/bulk_import.py:165 vpn/forms/bulk_edit.py:146 -#: vpn/forms/bulk_edit.py:232 vpn/forms/bulk_import.py:176 -#: vpn/forms/bulk_import.py:234 vpn/forms/filtersets.py:135 -#: vpn/forms/filtersets.py:178 vpn/forms/filtersets.py:192 -#: vpn/tables/crypto.py:64 vpn/tables/crypto.py:162 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 +#: netbox/templates/vpn/ikepolicy.html:25 +#: netbox/templates/vpn/ipsecprofile.html:21 +#: netbox/templates/vpn/ipsecprofile.html:48 +#: netbox/virtualization/forms/bulk_edit.py:233 +#: netbox/virtualization/forms/bulk_import.py:165 +#: netbox/vpn/forms/bulk_edit.py:146 netbox/vpn/forms/bulk_edit.py:232 +#: netbox/vpn/forms/bulk_import.py:176 netbox/vpn/forms/bulk_import.py:234 +#: netbox/vpn/forms/filtersets.py:135 netbox/vpn/forms/filtersets.py:178 +#: netbox/vpn/forms/filtersets.py:192 netbox/vpn/tables/crypto.py:64 +#: netbox/vpn/tables/crypto.py:162 msgid "Mode" msgstr "" -#: dcim/forms/bulk_edit.py:1468 dcim/forms/model_forms.py:1354 -#: ipam/forms/bulk_import.py:178 ipam/forms/filtersets.py:498 -#: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 -#: virtualization/forms/model_forms.py:321 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 +#: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 +#: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "" -#: dcim/forms/bulk_edit.py:1476 dcim/forms/model_forms.py:1360 -#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 -#: virtualization/forms/model_forms.py:326 +#: 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 "" -#: dcim/forms/bulk_edit.py:1484 dcim/forms/model_forms.py:1369 -#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 -#: virtualization/forms/model_forms.py:335 +#: 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 msgid "Tagged VLANs" msgstr "" -#: dcim/forms/bulk_edit.py:1494 dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "" -#: dcim/forms/bulk_edit.py:1499 dcim/forms/model_forms.py:1346 -#: dcim/tables/devices.py:619 netbox/navigation/menu.py:146 -#: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:619 netbox/netbox/navigation/menu.py:146 +#: netbox/templates/dcim/interface.html:280 +#: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "" -#: dcim/forms/bulk_edit.py:1508 dcim/forms/filtersets.py:1328 -#: dcim/forms/model_forms.py:1390 ipam/forms/bulk_edit.py:286 -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:169 -#: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 -#: virtualization/forms/model_forms.py:349 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1390 netbox/ipam/forms/bulk_edit.py:286 +#: netbox/ipam/forms/bulk_edit.py:378 netbox/ipam/forms/filtersets.py:169 +#: netbox/templates/dcim/interface.html:122 +#: netbox/templates/ipam/prefix.html:95 +#: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "" -#: dcim/forms/bulk_edit.py:1509 dcim/forms/filtersets.py:720 -#: dcim/forms/model_forms.py:1391 virtualization/forms/model_forms.py:350 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1391 +#: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "" -#: dcim/forms/bulk_edit.py:1510 dcim/forms/filtersets.py:1329 -#: dcim/forms/model_forms.py:987 dcim/forms/model_forms.py:1393 +#: 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:1393 msgid "PoE" msgstr "" -#: dcim/forms/bulk_edit.py:1511 dcim/forms/model_forms.py:1392 -#: templates/dcim/interface.html:99 virtualization/forms/bulk_edit.py:267 -#: virtualization/forms/model_forms.py:351 +#: 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 "" -#: dcim/forms/bulk_edit.py:1512 dcim/forms/model_forms.py:1394 -#: virtualization/forms/bulk_edit.py:268 -#: virtualization/forms/model_forms.py:352 +#: 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" msgstr "" -#: dcim/forms/bulk_edit.py:1574 dcim/forms/bulk_edit.py:1576 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "" -#: dcim/forms/bulk_edit.py:1581 dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "" -#: dcim/forms/bulk_import.py:64 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "" -#: dcim/forms/bulk_import.py:78 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "" -#: dcim/forms/bulk_import.py:97 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "" -#: dcim/forms/bulk_import.py:104 tenancy/forms/bulk_import.py:44 -#: tenancy/forms/bulk_import.py:85 wireless/forms/bulk_import.py:40 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/tenancy/forms/bulk_import.py:85 +#: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "" -#: dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "" -#: dcim/forms/bulk_import.py:134 dcim/forms/bulk_import.py:543 -#: dcim/forms/bulk_import.py:1342 ipam/forms/bulk_import.py:175 -#: ipam/forms/bulk_import.py:433 virtualization/forms/bulk_import.py:63 -#: virtualization/forms/bulk_import.py:89 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 +#: netbox/virtualization/forms/bulk_import.py:63 +#: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "" -#: dcim/forms/bulk_import.py:141 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "" -#: dcim/forms/bulk_import.py:143 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "" -#: dcim/forms/bulk_import.py:185 +#: netbox/dcim/forms/bulk_import.py:185 msgid "The manufacturer of this rack type" msgstr "" -#: dcim/forms/bulk_import.py:196 +#: netbox/dcim/forms/bulk_import.py:196 msgid "The lowest-numbered position in the rack" msgstr "" -#: dcim/forms/bulk_import.py:201 dcim/forms/bulk_import.py:268 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "" -#: dcim/forms/bulk_import.py:207 dcim/forms/bulk_import.py:274 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "" -#: dcim/forms/bulk_import.py:213 dcim/forms/bulk_import.py:286 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "" -#: dcim/forms/bulk_import.py:245 +#: netbox/dcim/forms/bulk_import.py:245 msgid "Name of assigned tenant" msgstr "" -#: dcim/forms/bulk_import.py:257 +#: netbox/dcim/forms/bulk_import.py:257 msgid "Name of assigned role" msgstr "" -#: dcim/forms/bulk_import.py:280 dcim/forms/bulk_import.py:413 -#: dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 msgid "Airflow direction" msgstr "" -#: dcim/forms/bulk_import.py:312 +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "" -#: dcim/forms/bulk_import.py:319 dcim/forms/bulk_import.py:1355 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "" -#: dcim/forms/bulk_import.py:328 dcim/forms/model_forms.py:311 -#: dcim/tables/racks.py:222 templates/dcim/rackreservation.html:12 -#: templates/dcim/rackreservation.html:45 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 +#: netbox/templates/dcim/rackreservation.html:12 +#: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "" -#: dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "" -#: dcim/forms/bulk_import.py:374 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "" -#: dcim/forms/bulk_import.py:381 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "" -#: dcim/forms/bulk_import.py:386 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "" -#: dcim/forms/bulk_import.py:392 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "" -#: dcim/forms/bulk_import.py:418 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "" -#: dcim/forms/bulk_import.py:424 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "" -#: dcim/forms/bulk_import.py:454 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "" -#: dcim/forms/bulk_import.py:476 dcim/forms/bulk_import.py:1425 -#: tenancy/forms/bulk_import.py:106 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 +#: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "" -#: dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "" -#: dcim/forms/bulk_import.py:495 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "" -#: dcim/forms/bulk_import.py:502 virtualization/forms/bulk_import.py:126 +#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "" -#: dcim/forms/bulk_import.py:510 dcim/forms/bulk_import.py:514 -#: dcim/forms/model_forms.py:536 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "" -#: dcim/forms/bulk_import.py:517 dcim/forms/filtersets.py:728 -#: dcim/forms/filtersets.py:898 dcim/forms/model_forms.py:522 -#: dcim/tables/devices.py:202 extras/filtersets.py:596 -#: extras/forms/filtersets.py:322 ipam/forms/filtersets.py:415 -#: ipam/forms/filtersets.py:447 templates/dcim/device.html:239 -#: templates/virtualization/cluster.html:10 -#: templates/virtualization/virtualmachine.html:92 -#: templates/virtualization/virtualmachine.html:101 -#: virtualization/filtersets.py:157 virtualization/filtersets.py:277 -#: virtualization/forms/bulk_edit.py:129 virtualization/forms/bulk_import.py:92 -#: virtualization/forms/filtersets.py:99 virtualization/forms/filtersets.py:123 -#: virtualization/forms/filtersets.py:204 -#: virtualization/forms/model_forms.py:79 -#: virtualization/forms/model_forms.py:176 -#: virtualization/tables/virtualmachines.py:67 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/filtersets.py:415 +#: netbox/ipam/forms/filtersets.py:447 netbox/templates/dcim/device.html:239 +#: netbox/templates/virtualization/cluster.html:10 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 +#: netbox/virtualization/filtersets.py:157 +#: netbox/virtualization/filtersets.py:277 +#: netbox/virtualization/forms/bulk_edit.py:129 +#: netbox/virtualization/forms/bulk_import.py:92 +#: netbox/virtualization/forms/filtersets.py:99 +#: netbox/virtualization/forms/filtersets.py:123 +#: netbox/virtualization/forms/filtersets.py:204 +#: netbox/virtualization/forms/model_forms.py:79 +#: netbox/virtualization/forms/model_forms.py:176 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "" -#: dcim/forms/bulk_import.py:521 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "" -#: dcim/forms/bulk_import.py:550 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "" -#: dcim/forms/bulk_import.py:557 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "" -#: dcim/forms/bulk_import.py:560 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "" -#: dcim/forms/bulk_import.py:563 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "" -#: dcim/forms/bulk_import.py:570 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "" -#: dcim/forms/bulk_import.py:573 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "" -#: dcim/forms/bulk_import.py:577 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" -#: dcim/forms/bulk_import.py:644 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "" -#: dcim/forms/bulk_import.py:647 dcim/forms/model_forms.py:640 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "" -#: dcim/forms/bulk_import.py:650 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "" -#: dcim/forms/bulk_import.py:656 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "" -#: dcim/forms/bulk_import.py:664 dcim/forms/model_forms.py:656 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "" -#: dcim/forms/bulk_import.py:666 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" msgstr "" -#: dcim/forms/bulk_import.py:669 dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "" -#: dcim/forms/bulk_import.py:671 dcim/forms/model_forms.py:665 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "" -#: dcim/forms/bulk_import.py:711 dcim/forms/bulk_import.py:737 -#: dcim/forms/bulk_import.py:763 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "" -#: dcim/forms/bulk_import.py:719 dcim/forms/bulk_import.py:745 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "" -#: dcim/forms/bulk_import.py:783 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "" -#: dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "" -#: dcim/forms/bulk_import.py:796 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "" -#: dcim/forms/bulk_import.py:837 dcim/forms/model_forms.py:1316 -#: virtualization/forms/bulk_import.py:155 -#: virtualization/forms/model_forms.py:305 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 +#: netbox/virtualization/forms/bulk_import.py:155 +#: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "" -#: dcim/forms/bulk_import.py:844 dcim/forms/model_forms.py:1324 -#: virtualization/forms/bulk_import.py:162 -#: virtualization/forms/model_forms.py:313 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 +#: netbox/virtualization/forms/bulk_import.py:162 +#: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "" -#: dcim/forms/bulk_import.py:847 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "" -#: dcim/forms/bulk_import.py:851 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "" -#: dcim/forms/bulk_import.py:854 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "" -#: dcim/forms/bulk_import.py:859 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" -#: dcim/forms/bulk_import.py:865 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "" -#: dcim/forms/bulk_import.py:868 dcim/forms/filtersets.py:1365 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "" -#: dcim/forms/bulk_import.py:873 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "" -#: dcim/forms/bulk_import.py:879 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "" -#: dcim/forms/bulk_import.py:888 virtualization/forms/bulk_import.py:168 +#: netbox/dcim/forms/bulk_import.py:888 +#: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "" -#: dcim/forms/bulk_import.py:895 ipam/forms/bulk_import.py:161 -#: ipam/forms/bulk_import.py:247 ipam/forms/bulk_import.py:283 -#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 -#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 +#: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 +#: netbox/ipam/forms/filtersets.py:336 +#: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "" -#: dcim/forms/bulk_import.py:898 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "" -#: dcim/forms/bulk_import.py:901 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "" -#: dcim/forms/bulk_import.py:937 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "" -#: dcim/forms/bulk_import.py:951 dcim/forms/model_forms.py:1000 -#: dcim/forms/model_forms.py:1575 dcim/forms/object_import.py:117 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1575 netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "" -#: dcim/forms/bulk_import.py:954 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "" -#: dcim/forms/bulk_import.py:959 dcim/forms/bulk_import.py:1000 -#: dcim/forms/bulk_import.py:1216 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "" -#: dcim/forms/bulk_import.py:1028 dcim/tables/devices.py:822 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:822 msgid "Installed device" msgstr "" -#: dcim/forms/bulk_import.py:1032 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "" -#: dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "" -#: dcim/forms/bulk_import.py:1092 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "" -#: dcim/forms/bulk_import.py:1095 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "" -#: dcim/forms/bulk_import.py:1099 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "" -#: dcim/forms/bulk_import.py:1102 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "" -#: dcim/forms/bulk_import.py:1104 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "" -#: dcim/forms/bulk_import.py:1146 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "" -#: dcim/forms/bulk_import.py:1171 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "" -#: dcim/forms/bulk_import.py:1174 dcim/forms/bulk_import.py:1192 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "" -#: dcim/forms/bulk_import.py:1177 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "" -#: dcim/forms/bulk_import.py:1180 dcim/forms/bulk_import.py:1198 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "" -#: dcim/forms/bulk_import.py:1183 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "" -#: dcim/forms/bulk_import.py:1184 dcim/forms/bulk_import.py:1202 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "" -#: dcim/forms/bulk_import.py:1189 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "" -#: dcim/forms/bulk_import.py:1195 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "" -#: dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "" -#: dcim/forms/bulk_import.py:1210 wireless/forms/bulk_import.py:86 +#: netbox/dcim/forms/bulk_import.py:1210 +#: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "" -#: dcim/forms/bulk_import.py:1262 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "" -#: dcim/forms/bulk_import.py:1268 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "" -#: dcim/forms/bulk_import.py:1293 dcim/forms/model_forms.py:785 -#: dcim/tables/devices.py:1027 templates/dcim/device.html:132 -#: templates/dcim/virtualchassis.html:27 templates/dcim/virtualchassis.html:67 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1027 netbox/templates/dcim/device.html:132 +#: netbox/templates/dcim/virtualchassis.html:27 +#: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "" -#: dcim/forms/bulk_import.py:1297 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "" -#: dcim/forms/bulk_import.py:1314 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "" -#: dcim/forms/bulk_import.py:1348 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "" -#: dcim/forms/bulk_import.py:1378 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "" -#: dcim/forms/bulk_import.py:1383 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "" -#: dcim/forms/bulk_import.py:1388 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "" -#: dcim/forms/bulk_import.py:1439 dcim/forms/model_forms.py:1670 -#: templates/dcim/device.html:190 templates/dcim/virtualdevicecontext.html:30 -#: templates/virtualization/virtualmachine.html:52 +#: 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 "" -#: dcim/forms/bulk_import.py:1443 +#: netbox/dcim/forms/bulk_import.py:1443 msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "" -#: dcim/forms/bulk_import.py:1446 dcim/forms/model_forms.py:1679 -#: templates/dcim/device.html:206 templates/dcim/virtualdevicecontext.html:41 -#: templates/virtualization/virtualmachine.html:68 +#: 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 "" -#: dcim/forms/bulk_import.py:1450 +#: netbox/dcim/forms/bulk_import.py:1450 msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "" -#: dcim/forms/common.py:24 dcim/models/device_components.py:527 -#: templates/dcim/interface.html:57 -#: templates/virtualization/vminterface.html:55 -#: virtualization/forms/bulk_edit.py:225 +#: netbox/dcim/forms/common.py:24 netbox/dcim/models/device_components.py:527 +#: netbox/templates/dcim/interface.html:57 +#: netbox/templates/virtualization/vminterface.html:55 +#: netbox/virtualization/forms/bulk_edit.py:225 msgid "MTU" msgstr "" -#: dcim/forms/common.py:65 +#: netbox/dcim/forms/common.py:65 #, python-brace-format msgid "" "The tagged VLANs ({vlans}) must belong to the same site as the interface's " "parent device/VM, or they must be global" msgstr "" -#: dcim/forms/common.py:126 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." msgstr "" -#: dcim/forms/common.py:131 +#: netbox/dcim/forms/common.py:131 #, python-brace-format msgid "" "Cannot install module with placeholder values in a module bay tree {level} " "in tree but {tokens} placeholders given." msgstr "" -#: dcim/forms/common.py:144 +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "" -#: dcim/forms/common.py:153 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "" -#: dcim/forms/connections.py:49 dcim/forms/model_forms.py:738 -#: dcim/tables/power.py:66 templates/dcim/inc/cable_termination.html:37 -#: templates/dcim/powerfeed.html:24 templates/dcim/powerpanel.html:19 -#: templates/dcim/trace/powerpanel.html:4 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 +#: netbox/dcim/tables/power.py:66 +#: netbox/templates/dcim/inc/cable_termination.html:37 +#: netbox/templates/dcim/powerfeed.html:24 +#: netbox/templates/dcim/powerpanel.html:19 +#: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "" -#: dcim/forms/connections.py:58 dcim/forms/model_forms.py:765 -#: templates/dcim/powerfeed.html:21 templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 +#: netbox/templates/dcim/powerfeed.html:21 +#: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" msgstr "" -#: dcim/forms/connections.py:81 +#: netbox/dcim/forms/connections.py:81 msgid "Side" msgstr "" -#: dcim/forms/filtersets.py:136 dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "" -#: dcim/forms/filtersets.py:149 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "" -#: dcim/forms/filtersets.py:163 tenancy/forms/bulk_import.py:28 -#: tenancy/forms/bulk_import.py:62 tenancy/forms/filtersets.py:33 -#: tenancy/forms/filtersets.py:62 wireless/forms/bulk_import.py:25 -#: wireless/forms/filtersets.py:25 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/tenancy/forms/bulk_import.py:62 netbox/tenancy/forms/filtersets.py:33 +#: netbox/tenancy/forms/filtersets.py:62 +#: netbox/wireless/forms/bulk_import.py:25 +#: netbox/wireless/forms/filtersets.py:25 msgid "Parent group" msgstr "" -#: dcim/forms/filtersets.py:242 templates/dcim/location.html:58 -#: templates/dcim/site.html:56 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 +#: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "" -#: dcim/forms/filtersets.py:380 +#: netbox/dcim/forms/filtersets.py:380 msgid "Rack type" msgstr "" -#: dcim/forms/filtersets.py:397 +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "" -#: dcim/forms/filtersets.py:483 dcim/forms/model_forms.py:373 -#: templates/inc/panels/image_attachments.html:6 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 +#: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "" -#: dcim/forms/filtersets.py:486 dcim/forms/filtersets.py:611 -#: dcim/forms/filtersets.py:726 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "" -#: dcim/forms/filtersets.py:506 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "" -#: dcim/forms/filtersets.py:790 dcim/tables/racks.py:54 -#: templates/dcim/racktype.html:20 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "" -#: dcim/forms/filtersets.py:834 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "" -#: dcim/forms/filtersets.py:841 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "" -#: dcim/forms/filtersets.py:890 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "" -#: dcim/forms/filtersets.py:903 extras/filtersets.py:585 -#: ipam/forms/filtersets.py:452 virtualization/forms/filtersets.py:112 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/filtersets.py:452 +#: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "" -#: dcim/forms/filtersets.py:1210 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "" -#: dcim/forms/filtersets.py:1217 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "" -#: dcim/forms/filtersets.py:1244 dcim/forms/filtersets.py:1269 -#: dcim/forms/filtersets.py:1293 dcim/forms/filtersets.py:1313 -#: dcim/forms/filtersets.py:1336 dcim/tables/devices.py:364 -#: templates/dcim/consoleport.html:55 templates/dcim/consoleserverport.html:55 -#: templates/dcim/frontport.html:69 templates/dcim/interface.html:140 -#: templates/dcim/powerfeed.html:110 templates/dcim/poweroutlet.html:59 -#: templates/dcim/powerport.html:59 templates/dcim/rearport.html:65 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 +#: netbox/templates/dcim/consoleport.html:55 +#: netbox/templates/dcim/consoleserverport.html:55 +#: netbox/templates/dcim/frontport.html:69 +#: netbox/templates/dcim/interface.html:140 +#: netbox/templates/dcim/powerfeed.html:110 +#: netbox/templates/dcim/poweroutlet.html:59 +#: netbox/templates/dcim/powerport.html:59 +#: netbox/templates/dcim/rearport.html:65 msgid "Connection" msgstr "" -#: dcim/forms/filtersets.py:1348 extras/forms/bulk_edit.py:326 -#: extras/forms/bulk_import.py:247 extras/forms/filtersets.py:464 -#: extras/forms/model_forms.py:675 extras/tables/tables.py:579 -#: templates/extras/journalentry.html:30 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 +#: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "" -#: dcim/forms/filtersets.py:1377 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "" -#: dcim/forms/filtersets.py:1389 dcim/forms/model_forms.py:1383 -#: dcim/models/device_components.py:629 templates/dcim/interface.html:129 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1383 +#: netbox/dcim/models/device_components.py:629 +#: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "" -#: dcim/forms/filtersets.py:1409 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "" -#: dcim/forms/filtersets.py:1413 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "" -#: dcim/forms/filtersets.py:1417 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "" -#: dcim/forms/filtersets.py:1421 templates/dcim/interface.html:85 +#: netbox/dcim/forms/filtersets.py:1421 netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "" -#: dcim/forms/filtersets.py:1446 dcim/forms/filtersets.py:1471 -#: dcim/tables/devices.py:327 templates/dcim/cable.html:12 -#: templates/dcim/cable_trace.html:46 templates/dcim/frontport.html:77 -#: templates/dcim/htmx/cable_edit.html:50 -#: templates/dcim/inc/connection_endpoints.html:4 -#: templates/dcim/rearport.html:73 templates/dcim/trace/cable.html:7 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 +#: netbox/templates/dcim/cable_trace.html:46 +#: netbox/templates/dcim/frontport.html:77 +#: netbox/templates/dcim/htmx/cable_edit.html:50 +#: netbox/templates/dcim/inc/connection_endpoints.html:4 +#: netbox/templates/dcim/rearport.html:73 +#: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "" -#: dcim/forms/filtersets.py:1550 dcim/tables/devices.py:949 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:949 msgid "Discovered" msgstr "" -#: dcim/forms/formsets.py:20 +#: netbox/dcim/forms/formsets.py:20 #, python-brace-format msgid "A virtual chassis member already exists in position {vc_position}." msgstr "" -#: dcim/forms/model_forms.py:140 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "" -#: dcim/forms/model_forms.py:195 templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "" -#: dcim/forms/model_forms.py:212 dcim/forms/model_forms.py:362 -#: dcim/forms/model_forms.py:446 utilities/forms/fields/fields.py:47 +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 msgid "Slug" msgstr "" -#: dcim/forms/model_forms.py:259 +#: netbox/dcim/forms/model_forms.py:259 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" -#: dcim/forms/model_forms.py:265 +#: netbox/dcim/forms/model_forms.py:265 msgid "Inventory Control" msgstr "" -#: dcim/forms/model_forms.py:313 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." msgstr "" -#: dcim/forms/model_forms.py:322 dcim/tables/racks.py:202 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "" -#: dcim/forms/model_forms.py:423 templates/dcim/devicerole.html:23 +#: netbox/dcim/forms/model_forms.py:423 +#: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "" -#: dcim/forms/model_forms.py:490 dcim/models/devices.py:644 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "" -#: dcim/forms/model_forms.py:547 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "" -#: dcim/forms/model_forms.py:552 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "" -#: dcim/forms/model_forms.py:659 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "" -#: dcim/forms/model_forms.py:767 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "" -#: dcim/forms/model_forms.py:1087 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "" -#: dcim/forms/model_forms.py:1095 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "" -#: dcim/forms/model_forms.py:1103 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "" -#: dcim/forms/model_forms.py:1111 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "" -#: dcim/forms/model_forms.py:1119 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "" -#: dcim/forms/model_forms.py:1127 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "" -#: dcim/forms/model_forms.py:1135 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "" -#: dcim/forms/model_forms.py:1144 dcim/forms/model_forms.py:1388 -#: dcim/forms/model_forms.py:1551 dcim/forms/model_forms.py:1583 -#: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:318 -#: ipam/forms/model_forms.py:280 ipam/forms/model_forms.py:289 -#: ipam/tables/fhrp.py:64 ipam/tables/ip.py:372 ipam/tables/vlans.py:169 -#: templates/circuits/inc/circuit_termination_fields.html:51 -#: templates/dcim/frontport.html:106 templates/dcim/interface.html:27 -#: templates/dcim/interface.html:184 templates/dcim/interface.html:310 -#: templates/dcim/rearport.html:102 -#: templates/virtualization/vminterface.html:18 -#: templates/vpn/tunneltermination.html:31 -#: templates/wireless/inc/wirelesslink_interface.html:10 -#: templates/wireless/wirelesslink.html:10 -#: templates/wireless/wirelesslink.html:55 -#: virtualization/forms/model_forms.py:348 vpn/forms/bulk_import.py:297 -#: vpn/forms/model_forms.py:436 vpn/forms/model_forms.py:445 -#: wireless/forms/model_forms.py:113 wireless/forms/model_forms.py:155 +#: 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 +#: netbox/ipam/tables/vlans.py:169 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:51 +#: netbox/templates/dcim/frontport.html:106 +#: netbox/templates/dcim/interface.html:27 +#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/interface.html:310 +#: netbox/templates/dcim/rearport.html:102 +#: netbox/templates/virtualization/vminterface.html:18 +#: netbox/templates/vpn/tunneltermination.html:31 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:10 +#: netbox/templates/wireless/wirelesslink.html:10 +#: netbox/templates/wireless/wirelesslink.html:55 +#: netbox/virtualization/forms/model_forms.py:348 +#: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 +#: netbox/vpn/forms/model_forms.py:445 netbox/wireless/forms/model_forms.py:113 +#: netbox/wireless/forms/model_forms.py:155 msgid "Interface" msgstr "" -#: dcim/forms/model_forms.py:1145 dcim/forms/model_forms.py:1584 -#: dcim/tables/connections.py:27 templates/dcim/consoleport.html:17 -#: templates/dcim/consoleserverport.html:74 templates/dcim/frontport.html:112 +#: 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 +#: netbox/templates/dcim/frontport.html:112 msgid "Console Port" msgstr "" -#: dcim/forms/model_forms.py:1146 dcim/forms/model_forms.py:1585 -#: templates/dcim/consoleport.html:73 templates/dcim/consoleserverport.html:17 -#: templates/dcim/frontport.html:109 +#: 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 "" -#: dcim/forms/model_forms.py:1147 dcim/forms/model_forms.py:1586 -#: templates/circuits/inc/circuit_termination_fields.html:52 -#: templates/dcim/consoleport.html:76 templates/dcim/consoleserverport.html:77 -#: templates/dcim/frontport.html:17 templates/dcim/frontport.html:115 -#: templates/dcim/interface.html:187 templates/dcim/rearport.html:105 +#: 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 +#: netbox/templates/dcim/frontport.html:17 +#: netbox/templates/dcim/frontport.html:115 +#: netbox/templates/dcim/interface.html:187 +#: netbox/templates/dcim/rearport.html:105 msgid "Front Port" msgstr "" -#: dcim/forms/model_forms.py:1148 dcim/forms/model_forms.py:1587 -#: dcim/tables/devices.py:710 -#: templates/circuits/inc/circuit_termination_fields.html:53 -#: templates/dcim/consoleport.html:79 templates/dcim/consoleserverport.html:80 -#: templates/dcim/frontport.html:50 templates/dcim/frontport.html:118 -#: templates/dcim/interface.html:190 templates/dcim/rearport.html:17 -#: templates/dcim/rearport.html:108 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/devices.py:710 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:53 +#: netbox/templates/dcim/consoleport.html:79 +#: netbox/templates/dcim/consoleserverport.html:80 +#: netbox/templates/dcim/frontport.html:50 +#: netbox/templates/dcim/frontport.html:118 +#: netbox/templates/dcim/interface.html:190 +#: netbox/templates/dcim/rearport.html:17 +#: netbox/templates/dcim/rearport.html:108 msgid "Rear Port" msgstr "" -#: dcim/forms/model_forms.py:1149 dcim/forms/model_forms.py:1588 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:512 -#: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 +#: 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 "" -#: dcim/forms/model_forms.py:1150 dcim/forms/model_forms.py:1589 -#: templates/dcim/poweroutlet.html:17 templates/dcim/powerport.html:77 +#: 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 "" -#: dcim/forms/model_forms.py:1152 dcim/forms/model_forms.py:1591 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1591 msgid "Component Assignment" msgstr "" -#: dcim/forms/model_forms.py:1195 dcim/forms/model_forms.py:1638 +#: 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 "" -#: dcim/forms/model_forms.py:1332 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "" -#: dcim/forms/model_forms.py:1355 +#: netbox/dcim/forms/model_forms.py:1355 msgid "Filter VLANs available for assignment by group." msgstr "" -#: dcim/forms/model_forms.py:1484 +#: netbox/dcim/forms/model_forms.py:1484 msgid "Child Device" msgstr "" -#: dcim/forms/model_forms.py:1485 +#: 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 "" -#: dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/model_forms.py:1527 msgid "Console port" msgstr "" -#: dcim/forms/model_forms.py:1535 +#: netbox/dcim/forms/model_forms.py:1535 msgid "Console server port" msgstr "" -#: dcim/forms/model_forms.py:1543 +#: netbox/dcim/forms/model_forms.py:1543 msgid "Front port" msgstr "" -#: dcim/forms/model_forms.py:1559 +#: netbox/dcim/forms/model_forms.py:1559 msgid "Power outlet" msgstr "" -#: dcim/forms/model_forms.py:1579 templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1579 +#: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "" -#: dcim/forms/model_forms.py:1652 templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1652 +#: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "" -#: dcim/forms/object_create.py:48 dcim/forms/object_create.py:199 -#: dcim/forms/object_create.py:355 +#: netbox/dcim/forms/object_create.py:48 netbox/dcim/forms/object_create.py:199 +#: netbox/dcim/forms/object_create.py:355 msgid "" "Alphanumeric ranges are supported. (Must match the number of objects being " "created.)" msgstr "" -#: dcim/forms/object_create.py:68 +#: netbox/dcim/forms/object_create.py:68 #, python-brace-format msgid "" "The provided pattern specifies {value_count} values, but {pattern_count} are " "expected." msgstr "" -#: dcim/forms/object_create.py:110 dcim/forms/object_create.py:271 -#: dcim/tables/devices.py:252 +#: netbox/dcim/forms/object_create.py:110 +#: netbox/dcim/forms/object_create.py:271 netbox/dcim/tables/devices.py:252 msgid "Rear ports" msgstr "" -#: dcim/forms/object_create.py:111 dcim/forms/object_create.py:272 +#: netbox/dcim/forms/object_create.py:111 +#: netbox/dcim/forms/object_create.py:272 msgid "Select one rear port assignment for each front port being created." msgstr "" -#: dcim/forms/object_create.py:164 +#: netbox/dcim/forms/object_create.py:164 #, python-brace-format msgid "" "The number of front port templates to be created ({frontport_count}) must " "match the selected number of rear port positions ({rearport_count})." msgstr "" -#: dcim/forms/object_create.py:251 +#: netbox/dcim/forms/object_create.py:251 #, python-brace-format msgid "" "The string {module} will be replaced with the position of the " "assigned module, if any." msgstr "" -#: dcim/forms/object_create.py:320 +#: netbox/dcim/forms/object_create.py:320 #, python-brace-format msgid "" "The number of front ports to be created ({frontport_count}) must match the " "selected number of rear port positions ({rearport_count})." msgstr "" -#: dcim/forms/object_create.py:409 dcim/tables/devices.py:1033 -#: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:53 -#: templates/dcim/virtualchassis_edit.html:47 templates/ipam/fhrpgroup.html:38 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1033 +#: 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 msgid "Members" msgstr "" -#: dcim/forms/object_create.py:418 +#: netbox/dcim/forms/object_create.py:418 msgid "Initial position" msgstr "" -#: dcim/forms/object_create.py:421 +#: netbox/dcim/forms/object_create.py:421 msgid "" "Position of the first member device. Increases by one for each additional " "member." msgstr "" -#: dcim/forms/object_create.py:435 +#: netbox/dcim/forms/object_create.py:435 msgid "A position must be specified for the first VC member." msgstr "" -#: dcim/models/cables.py:62 dcim/models/device_component_templates.py:55 -#: dcim/models/device_components.py:62 extras/models/customfields.py:111 +#: netbox/dcim/models/cables.py:62 +#: netbox/dcim/models/device_component_templates.py:55 +#: netbox/dcim/models/device_components.py:62 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "" -#: dcim/models/cables.py:71 +#: netbox/dcim/models/cables.py:71 msgid "length" msgstr "" -#: dcim/models/cables.py:78 +#: netbox/dcim/models/cables.py:78 msgid "length unit" msgstr "" -#: dcim/models/cables.py:95 +#: netbox/dcim/models/cables.py:95 msgid "cable" msgstr "" -#: dcim/models/cables.py:96 +#: netbox/dcim/models/cables.py:96 msgid "cables" msgstr "" -#: dcim/models/cables.py:165 +#: netbox/dcim/models/cables.py:165 msgid "Must specify a unit when setting a cable length" msgstr "" -#: dcim/models/cables.py:168 +#: netbox/dcim/models/cables.py:168 msgid "Must define A and B terminations when creating a new cable." msgstr "" -#: dcim/models/cables.py:175 +#: netbox/dcim/models/cables.py:175 msgid "Cannot connect different termination types to same end of cable." msgstr "" -#: dcim/models/cables.py:183 +#: netbox/dcim/models/cables.py:183 #, python-brace-format msgid "Incompatible termination types: {type_a} and {type_b}" msgstr "" -#: dcim/models/cables.py:193 +#: netbox/dcim/models/cables.py:193 msgid "A and B terminations cannot connect to the same object." msgstr "" -#: dcim/models/cables.py:260 ipam/models/asns.py:37 +#: netbox/dcim/models/cables.py:260 netbox/ipam/models/asns.py:37 msgid "end" msgstr "" -#: dcim/models/cables.py:313 +#: netbox/dcim/models/cables.py:313 msgid "cable termination" msgstr "" -#: dcim/models/cables.py:314 +#: netbox/dcim/models/cables.py:314 msgid "cable terminations" msgstr "" -#: dcim/models/cables.py:333 +#: netbox/dcim/models/cables.py:333 #, python-brace-format msgid "" "Duplicate termination found for {app_label}.{model} {termination_id}: cable " "{cable_pk}" msgstr "" -#: dcim/models/cables.py:343 +#: netbox/dcim/models/cables.py:343 #, python-brace-format msgid "Cables cannot be terminated to {type_display} interfaces" msgstr "" -#: dcim/models/cables.py:350 +#: netbox/dcim/models/cables.py:350 msgid "Circuit terminations attached to a provider network may not be cabled." msgstr "" -#: dcim/models/cables.py:448 extras/models/configs.py:50 +#: netbox/dcim/models/cables.py:448 netbox/extras/models/configs.py:50 msgid "is active" msgstr "" -#: dcim/models/cables.py:452 +#: netbox/dcim/models/cables.py:452 msgid "is complete" msgstr "" -#: dcim/models/cables.py:456 +#: netbox/dcim/models/cables.py:456 msgid "is split" msgstr "" -#: dcim/models/cables.py:464 +#: netbox/dcim/models/cables.py:464 msgid "cable path" msgstr "" -#: dcim/models/cables.py:465 +#: netbox/dcim/models/cables.py:465 msgid "cable paths" msgstr "" -#: dcim/models/device_component_templates.py:46 +#: netbox/dcim/models/device_component_templates.py:46 #, python-brace-format msgid "" "{module} is accepted as a substitution for the module bay position when " "attached to a module type." msgstr "" -#: dcim/models/device_component_templates.py:58 -#: dcim/models/device_components.py:65 +#: netbox/dcim/models/device_component_templates.py:58 +#: netbox/dcim/models/device_components.py:65 msgid "Physical label" msgstr "" -#: dcim/models/device_component_templates.py:103 +#: netbox/dcim/models/device_component_templates.py:103 msgid "Component templates cannot be moved to a different device type." msgstr "" -#: dcim/models/device_component_templates.py:154 +#: netbox/dcim/models/device_component_templates.py:154 msgid "" "A component template cannot be associated with both a device type and a " "module type." msgstr "" -#: dcim/models/device_component_templates.py:158 +#: netbox/dcim/models/device_component_templates.py:158 msgid "" "A component template must be associated with either a device type or a " "module type." msgstr "" -#: dcim/models/device_component_templates.py:212 +#: netbox/dcim/models/device_component_templates.py:212 msgid "console port template" msgstr "" -#: dcim/models/device_component_templates.py:213 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port templates" msgstr "" -#: dcim/models/device_component_templates.py:246 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port template" msgstr "" -#: dcim/models/device_component_templates.py:247 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port templates" msgstr "" -#: dcim/models/device_component_templates.py:278 -#: dcim/models/device_components.py:352 +#: netbox/dcim/models/device_component_templates.py:278 +#: netbox/dcim/models/device_components.py:352 msgid "maximum draw" msgstr "" -#: dcim/models/device_component_templates.py:285 -#: dcim/models/device_components.py:359 +#: netbox/dcim/models/device_component_templates.py:285 +#: netbox/dcim/models/device_components.py:359 msgid "allocated draw" msgstr "" -#: dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "" -#: dcim/models/device_component_templates.py:296 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "" -#: dcim/models/device_component_templates.py:315 -#: dcim/models/device_components.py:382 +#: netbox/dcim/models/device_component_templates.py:315 +#: netbox/dcim/models/device_components.py:382 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" -#: dcim/models/device_component_templates.py:347 -#: dcim/models/device_components.py:477 +#: netbox/dcim/models/device_component_templates.py:347 +#: netbox/dcim/models/device_components.py:477 msgid "feed leg" msgstr "" -#: dcim/models/device_component_templates.py:351 -#: dcim/models/device_components.py:481 +#: netbox/dcim/models/device_component_templates.py:351 +#: netbox/dcim/models/device_components.py:481 msgid "Phase (for three-phase feeds)" msgstr "" -#: dcim/models/device_component_templates.py:357 +#: netbox/dcim/models/device_component_templates.py:357 msgid "power outlet template" msgstr "" -#: dcim/models/device_component_templates.py:358 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet templates" msgstr "" -#: dcim/models/device_component_templates.py:367 +#: netbox/dcim/models/device_component_templates.py:367 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" -#: dcim/models/device_component_templates.py:371 +#: netbox/dcim/models/device_component_templates.py:371 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" -#: dcim/models/device_component_templates.py:423 -#: dcim/models/device_components.py:611 +#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_components.py:611 msgid "management only" msgstr "" -#: dcim/models/device_component_templates.py:431 -#: dcim/models/device_components.py:550 +#: netbox/dcim/models/device_component_templates.py:431 +#: netbox/dcim/models/device_components.py:550 msgid "bridge interface" msgstr "" -#: dcim/models/device_component_templates.py:449 -#: dcim/models/device_components.py:636 +#: netbox/dcim/models/device_component_templates.py:449 +#: netbox/dcim/models/device_components.py:636 msgid "wireless role" msgstr "" -#: dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:455 msgid "interface template" msgstr "" -#: dcim/models/device_component_templates.py:456 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface templates" msgstr "" -#: dcim/models/device_component_templates.py:463 -#: dcim/models/device_components.py:804 -#: virtualization/models/virtualmachines.py:405 +#: netbox/dcim/models/device_component_templates.py:463 +#: netbox/dcim/models/device_components.py:804 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "" -#: dcim/models/device_component_templates.py:466 +#: netbox/dcim/models/device_component_templates.py:466 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" -#: dcim/models/device_component_templates.py:470 +#: netbox/dcim/models/device_component_templates.py:470 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "" -#: dcim/models/device_component_templates.py:526 -#: dcim/models/device_components.py:984 +#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_components.py:984 msgid "rear port position" msgstr "" -#: dcim/models/device_component_templates.py:551 +#: netbox/dcim/models/device_component_templates.py:551 msgid "front port template" msgstr "" -#: dcim/models/device_component_templates.py:552 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port templates" msgstr "" -#: dcim/models/device_component_templates.py:562 +#: netbox/dcim/models/device_component_templates.py:562 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "" -#: dcim/models/device_component_templates.py:568 +#: netbox/dcim/models/device_component_templates.py:568 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " "positions" msgstr "" -#: dcim/models/device_component_templates.py:621 -#: dcim/models/device_components.py:1053 +#: netbox/dcim/models/device_component_templates.py:621 +#: netbox/dcim/models/device_components.py:1053 msgid "positions" msgstr "" -#: dcim/models/device_component_templates.py:632 +#: netbox/dcim/models/device_component_templates.py:632 msgid "rear port template" msgstr "" -#: dcim/models/device_component_templates.py:633 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port templates" msgstr "" -#: dcim/models/device_component_templates.py:662 -#: dcim/models/device_components.py:1103 +#: netbox/dcim/models/device_component_templates.py:662 +#: netbox/dcim/models/device_components.py:1103 msgid "position" msgstr "" -#: dcim/models/device_component_templates.py:665 -#: dcim/models/device_components.py:1106 +#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_components.py:1106 msgid "Identifier to reference when renaming installed components" msgstr "" -#: dcim/models/device_component_templates.py:671 +#: netbox/dcim/models/device_component_templates.py:671 msgid "module bay template" msgstr "" -#: dcim/models/device_component_templates.py:672 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay templates" msgstr "" -#: dcim/models/device_component_templates.py:699 +#: netbox/dcim/models/device_component_templates.py:699 msgid "device bay template" msgstr "" -#: dcim/models/device_component_templates.py:700 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay templates" msgstr "" -#: dcim/models/device_component_templates.py:713 +#: netbox/dcim/models/device_component_templates.py:713 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " "allow device bays." msgstr "" -#: dcim/models/device_component_templates.py:768 -#: dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_component_templates.py:768 +#: netbox/dcim/models/device_components.py:1262 msgid "part ID" msgstr "" -#: dcim/models/device_component_templates.py:770 -#: dcim/models/device_components.py:1264 +#: netbox/dcim/models/device_component_templates.py:770 +#: netbox/dcim/models/device_components.py:1264 msgid "Manufacturer-assigned part identifier" msgstr "" -#: dcim/models/device_component_templates.py:787 +#: netbox/dcim/models/device_component_templates.py:787 msgid "inventory item template" msgstr "" -#: dcim/models/device_component_templates.py:788 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item templates" msgstr "" -#: dcim/models/device_components.py:105 +#: netbox/dcim/models/device_components.py:105 msgid "Components cannot be moved to a different device." msgstr "" -#: dcim/models/device_components.py:144 +#: netbox/dcim/models/device_components.py:144 msgid "cable end" msgstr "" -#: dcim/models/device_components.py:150 +#: netbox/dcim/models/device_components.py:150 msgid "mark connected" msgstr "" -#: dcim/models/device_components.py:152 +#: netbox/dcim/models/device_components.py:152 msgid "Treat as if a cable is connected" msgstr "" -#: dcim/models/device_components.py:170 +#: netbox/dcim/models/device_components.py:170 msgid "Must specify cable end (A or B) when attaching a cable." msgstr "" -#: dcim/models/device_components.py:174 +#: netbox/dcim/models/device_components.py:174 msgid "Cable end must not be set without a cable." msgstr "" -#: dcim/models/device_components.py:178 +#: netbox/dcim/models/device_components.py:178 msgid "Cannot mark as connected with a cable attached." msgstr "" -#: dcim/models/device_components.py:202 +#: netbox/dcim/models/device_components.py:202 #, python-brace-format msgid "{class_name} models must declare a parent_object property" msgstr "" -#: dcim/models/device_components.py:287 dcim/models/device_components.py:316 -#: dcim/models/device_components.py:349 dcim/models/device_components.py:467 +#: netbox/dcim/models/device_components.py:287 +#: netbox/dcim/models/device_components.py:316 +#: netbox/dcim/models/device_components.py:349 +#: netbox/dcim/models/device_components.py:467 msgid "Physical port type" msgstr "" -#: dcim/models/device_components.py:290 dcim/models/device_components.py:319 +#: netbox/dcim/models/device_components.py:290 +#: netbox/dcim/models/device_components.py:319 msgid "speed" msgstr "" -#: dcim/models/device_components.py:294 dcim/models/device_components.py:323 +#: netbox/dcim/models/device_components.py:294 +#: netbox/dcim/models/device_components.py:323 msgid "Port speed in bits per second" msgstr "" -#: dcim/models/device_components.py:300 +#: netbox/dcim/models/device_components.py:300 msgid "console port" msgstr "" -#: dcim/models/device_components.py:301 +#: netbox/dcim/models/device_components.py:301 msgid "console ports" msgstr "" -#: dcim/models/device_components.py:329 +#: netbox/dcim/models/device_components.py:329 msgid "console server port" msgstr "" -#: dcim/models/device_components.py:330 +#: netbox/dcim/models/device_components.py:330 msgid "console server ports" msgstr "" -#: dcim/models/device_components.py:369 +#: netbox/dcim/models/device_components.py:369 msgid "power port" msgstr "" -#: dcim/models/device_components.py:370 +#: netbox/dcim/models/device_components.py:370 msgid "power ports" msgstr "" -#: dcim/models/device_components.py:487 +#: netbox/dcim/models/device_components.py:487 msgid "power outlet" msgstr "" -#: dcim/models/device_components.py:488 +#: netbox/dcim/models/device_components.py:488 msgid "power outlets" msgstr "" -#: dcim/models/device_components.py:499 +#: netbox/dcim/models/device_components.py:499 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device" msgstr "" -#: dcim/models/device_components.py:530 vpn/models/crypto.py:81 -#: vpn/models/crypto.py:226 +#: netbox/dcim/models/device_components.py:530 netbox/vpn/models/crypto.py:81 +#: netbox/vpn/models/crypto.py:226 msgid "mode" msgstr "" -#: dcim/models/device_components.py:534 +#: netbox/dcim/models/device_components.py:534 msgid "IEEE 802.1Q tagging strategy" msgstr "" -#: dcim/models/device_components.py:542 +#: netbox/dcim/models/device_components.py:542 msgid "parent interface" msgstr "" -#: dcim/models/device_components.py:602 +#: netbox/dcim/models/device_components.py:602 msgid "parent LAG" msgstr "" -#: dcim/models/device_components.py:612 +#: netbox/dcim/models/device_components.py:612 msgid "This interface is used only for out-of-band management" msgstr "" -#: dcim/models/device_components.py:617 +#: netbox/dcim/models/device_components.py:617 msgid "speed (Kbps)" msgstr "" -#: dcim/models/device_components.py:620 +#: netbox/dcim/models/device_components.py:620 msgid "duplex" msgstr "" -#: dcim/models/device_components.py:630 +#: netbox/dcim/models/device_components.py:630 msgid "64-bit World Wide Name" msgstr "" -#: dcim/models/device_components.py:642 +#: netbox/dcim/models/device_components.py:642 msgid "wireless channel" msgstr "" -#: dcim/models/device_components.py:649 +#: netbox/dcim/models/device_components.py:649 msgid "channel frequency (MHz)" msgstr "" -#: dcim/models/device_components.py:650 dcim/models/device_components.py:658 +#: netbox/dcim/models/device_components.py:650 +#: netbox/dcim/models/device_components.py:658 msgid "Populated by selected channel (if set)" msgstr "" -#: dcim/models/device_components.py:664 +#: netbox/dcim/models/device_components.py:664 msgid "transmit power (dBm)" msgstr "" -#: dcim/models/device_components.py:689 wireless/models.py:117 +#: netbox/dcim/models/device_components.py:689 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "" -#: dcim/models/device_components.py:697 -#: virtualization/models/virtualmachines.py:335 +#: netbox/dcim/models/device_components.py:697 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "" -#: dcim/models/device_components.py:703 -#: virtualization/models/virtualmachines.py:341 +#: netbox/dcim/models/device_components.py:703 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "" -#: dcim/models/device_components.py:745 -#: virtualization/models/virtualmachines.py:377 +#: netbox/dcim/models/device_components.py:745 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "" -#: dcim/models/device_components.py:746 -#: virtualization/models/virtualmachines.py:378 +#: netbox/dcim/models/device_components.py:746 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "" -#: dcim/models/device_components.py:757 +#: netbox/dcim/models/device_components.py:757 #, python-brace-format msgid "{display_type} interfaces cannot have a cable attached." msgstr "" -#: dcim/models/device_components.py:765 +#: netbox/dcim/models/device_components.py:765 #, python-brace-format msgid "{display_type} interfaces cannot be marked as connected." msgstr "" -#: dcim/models/device_components.py:774 -#: virtualization/models/virtualmachines.py:390 +#: netbox/dcim/models/device_components.py:774 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "" -#: dcim/models/device_components.py:778 +#: netbox/dcim/models/device_components.py:778 msgid "Only virtual interfaces may be assigned to a parent interface." msgstr "" -#: dcim/models/device_components.py:785 +#: netbox/dcim/models/device_components.py:785 #, python-brace-format msgid "" "The selected parent interface ({interface}) belongs to a different device " "({device})" msgstr "" -#: dcim/models/device_components.py:791 +#: netbox/dcim/models/device_components.py:791 #, python-brace-format msgid "" "The selected parent interface ({interface}) belongs to {device}, which is " "not part of virtual chassis {virtual_chassis}." msgstr "" -#: dcim/models/device_components.py:811 +#: netbox/dcim/models/device_components.py:811 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different device " "({device})." msgstr "" -#: dcim/models/device_components.py:817 +#: netbox/dcim/models/device_components.py:817 #, python-brace-format msgid "" "The selected bridge interface ({interface}) belongs to {device}, which is " "not part of virtual chassis {virtual_chassis}." msgstr "" -#: dcim/models/device_components.py:828 +#: netbox/dcim/models/device_components.py:828 msgid "Virtual interfaces cannot have a parent LAG interface." msgstr "" -#: dcim/models/device_components.py:832 +#: netbox/dcim/models/device_components.py:832 msgid "A LAG interface cannot be its own parent." msgstr "" -#: dcim/models/device_components.py:839 +#: netbox/dcim/models/device_components.py:839 #, python-brace-format msgid "" "The selected LAG interface ({lag}) belongs to a different device ({device})." msgstr "" -#: dcim/models/device_components.py:845 +#: netbox/dcim/models/device_components.py:845 #, python-brace-format msgid "" "The selected LAG interface ({lag}) belongs to {device}, which is not part of " "virtual chassis {virtual_chassis}." msgstr "" -#: dcim/models/device_components.py:856 +#: netbox/dcim/models/device_components.py:856 msgid "Virtual interfaces cannot have a PoE mode." msgstr "" -#: dcim/models/device_components.py:860 +#: netbox/dcim/models/device_components.py:860 msgid "Virtual interfaces cannot have a PoE type." msgstr "" -#: dcim/models/device_components.py:866 +#: netbox/dcim/models/device_components.py:866 msgid "Must specify PoE mode when designating a PoE type." msgstr "" -#: dcim/models/device_components.py:873 +#: netbox/dcim/models/device_components.py:873 msgid "Wireless role may be set only on wireless interfaces." msgstr "" -#: dcim/models/device_components.py:875 +#: netbox/dcim/models/device_components.py:875 msgid "Channel may be set only on wireless interfaces." msgstr "" -#: dcim/models/device_components.py:881 +#: netbox/dcim/models/device_components.py:881 msgid "Channel frequency may be set only on wireless interfaces." msgstr "" -#: dcim/models/device_components.py:885 +#: netbox/dcim/models/device_components.py:885 msgid "Cannot specify custom frequency with channel selected." msgstr "" -#: dcim/models/device_components.py:891 +#: netbox/dcim/models/device_components.py:891 msgid "Channel width may be set only on wireless interfaces." msgstr "" -#: dcim/models/device_components.py:893 +#: netbox/dcim/models/device_components.py:893 msgid "Cannot specify custom width with channel selected." msgstr "" -#: dcim/models/device_components.py:901 +#: netbox/dcim/models/device_components.py:901 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " "interface's parent device, or it must be global." msgstr "" -#: dcim/models/device_components.py:990 +#: netbox/dcim/models/device_components.py:990 msgid "Mapped position on corresponding rear port" msgstr "" -#: dcim/models/device_components.py:1006 +#: netbox/dcim/models/device_components.py:1006 msgid "front port" msgstr "" -#: dcim/models/device_components.py:1007 +#: netbox/dcim/models/device_components.py:1007 msgid "front ports" msgstr "" -#: dcim/models/device_components.py:1021 +#: netbox/dcim/models/device_components.py:1021 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device" msgstr "" -#: dcim/models/device_components.py:1029 +#: netbox/dcim/models/device_components.py:1029 #, python-brace-format msgid "" "Invalid rear port position ({rear_port_position}): Rear port {name} has only " "{positions} positions." msgstr "" -#: dcim/models/device_components.py:1059 +#: netbox/dcim/models/device_components.py:1059 msgid "Number of front ports which may be mapped" msgstr "" -#: dcim/models/device_components.py:1064 +#: netbox/dcim/models/device_components.py:1064 msgid "rear port" msgstr "" -#: dcim/models/device_components.py:1065 +#: netbox/dcim/models/device_components.py:1065 msgid "rear ports" msgstr "" -#: dcim/models/device_components.py:1079 +#: netbox/dcim/models/device_components.py:1079 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front ports " "({frontport_count})" msgstr "" -#: dcim/models/device_components.py:1120 +#: netbox/dcim/models/device_components.py:1120 msgid "module bay" msgstr "" -#: dcim/models/device_components.py:1121 +#: netbox/dcim/models/device_components.py:1121 msgid "module bays" msgstr "" -#: dcim/models/device_components.py:1138 dcim/models/devices.py:1224 +#: netbox/dcim/models/device_components.py:1138 +#: netbox/dcim/models/devices.py:1224 msgid "A module bay cannot belong to a module installed within it." msgstr "" -#: dcim/models/device_components.py:1164 +#: netbox/dcim/models/device_components.py:1164 msgid "device bay" msgstr "" -#: dcim/models/device_components.py:1165 +#: netbox/dcim/models/device_components.py:1165 msgid "device bays" msgstr "" -#: dcim/models/device_components.py:1175 +#: netbox/dcim/models/device_components.py:1175 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "" -#: dcim/models/device_components.py:1181 +#: netbox/dcim/models/device_components.py:1181 msgid "Cannot install a device into itself." msgstr "" -#: dcim/models/device_components.py:1189 +#: netbox/dcim/models/device_components.py:1189 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." msgstr "" -#: dcim/models/device_components.py:1210 +#: netbox/dcim/models/device_components.py:1210 msgid "inventory item role" msgstr "" -#: dcim/models/device_components.py:1211 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item roles" msgstr "" -#: dcim/models/device_components.py:1268 dcim/models/devices.py:607 -#: dcim/models/devices.py:1181 dcim/models/racks.py:313 -#: virtualization/models/virtualmachines.py:131 +#: netbox/dcim/models/device_components.py:1268 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "" -#: dcim/models/device_components.py:1276 dcim/models/devices.py:615 -#: dcim/models/devices.py:1188 dcim/models/racks.py:320 +#: netbox/dcim/models/device_components.py:1276 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1188 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "" -#: dcim/models/device_components.py:1277 +#: netbox/dcim/models/device_components.py:1277 msgid "A unique tag used to identify this item" msgstr "" -#: dcim/models/device_components.py:1280 +#: netbox/dcim/models/device_components.py:1280 msgid "discovered" msgstr "" -#: dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1282 msgid "This item was automatically discovered" msgstr "" -#: dcim/models/device_components.py:1300 +#: netbox/dcim/models/device_components.py:1300 msgid "inventory item" msgstr "" -#: dcim/models/device_components.py:1301 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory items" msgstr "" -#: dcim/models/device_components.py:1312 +#: netbox/dcim/models/device_components.py:1312 msgid "Cannot assign self as parent." msgstr "" -#: dcim/models/device_components.py:1320 +#: netbox/dcim/models/device_components.py:1320 msgid "Parent inventory item does not belong to the same device." msgstr "" -#: dcim/models/device_components.py:1326 +#: netbox/dcim/models/device_components.py:1326 msgid "Cannot move an inventory item with dependent children" msgstr "" -#: dcim/models/device_components.py:1334 +#: netbox/dcim/models/device_components.py:1334 msgid "Cannot assign inventory item to component on another device" msgstr "" -#: dcim/models/devices.py:54 +#: netbox/dcim/models/devices.py:54 msgid "manufacturer" msgstr "" -#: dcim/models/devices.py:55 +#: netbox/dcim/models/devices.py:55 msgid "manufacturers" msgstr "" -#: dcim/models/devices.py:82 dcim/models/devices.py:382 -#: dcim/models/racks.py:133 +#: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "" -#: dcim/models/devices.py:95 +#: netbox/dcim/models/devices.py:95 msgid "default platform" msgstr "" -#: dcim/models/devices.py:98 dcim/models/devices.py:386 +#: netbox/dcim/models/devices.py:98 netbox/dcim/models/devices.py:386 msgid "part number" msgstr "" -#: dcim/models/devices.py:101 dcim/models/devices.py:389 +#: netbox/dcim/models/devices.py:101 netbox/dcim/models/devices.py:389 msgid "Discrete part number (optional)" msgstr "" -#: dcim/models/devices.py:107 dcim/models/racks.py:54 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "" -#: dcim/models/devices.py:111 +#: netbox/dcim/models/devices.py:111 msgid "exclude from utilization" msgstr "" -#: dcim/models/devices.py:112 +#: netbox/dcim/models/devices.py:112 msgid "Devices of this type are excluded when calculating rack utilization." msgstr "" -#: dcim/models/devices.py:116 +#: netbox/dcim/models/devices.py:116 msgid "is full depth" msgstr "" -#: dcim/models/devices.py:117 +#: netbox/dcim/models/devices.py:117 msgid "Device consumes both front and rear rack faces." msgstr "" -#: dcim/models/devices.py:123 +#: netbox/dcim/models/devices.py:123 msgid "parent/child status" msgstr "" -#: dcim/models/devices.py:124 +#: netbox/dcim/models/devices.py:124 msgid "" "Parent devices house child devices in device bays. Leave blank if this " "device type is neither a parent nor a child." msgstr "" -#: dcim/models/devices.py:128 dcim/models/devices.py:392 -#: dcim/models/devices.py:659 dcim/models/racks.py:324 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "" -#: dcim/models/devices.py:204 +#: netbox/dcim/models/devices.py:204 msgid "device type" msgstr "" -#: dcim/models/devices.py:205 +#: netbox/dcim/models/devices.py:205 msgid "device types" msgstr "" -#: dcim/models/devices.py:290 +#: netbox/dcim/models/devices.py:290 msgid "U height must be in increments of 0.5 rack units." msgstr "" -#: dcim/models/devices.py:307 +#: netbox/dcim/models/devices.py:307 #, python-brace-format msgid "" "Device {device} in rack {rack} does not have sufficient space to accommodate " "a height of {height}U" msgstr "" -#: dcim/models/devices.py:322 +#: netbox/dcim/models/devices.py:322 #, python-brace-format msgid "" "Unable to set 0U height: Found {racked_instance_count} " "instances already mounted within racks." msgstr "" -#: dcim/models/devices.py:331 +#: netbox/dcim/models/devices.py:331 msgid "" "Must delete all device bay templates associated with this device before " "declassifying it as a parent device." msgstr "" -#: dcim/models/devices.py:337 +#: netbox/dcim/models/devices.py:337 msgid "Child device types must be 0U." msgstr "" -#: dcim/models/devices.py:411 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "" -#: dcim/models/devices.py:412 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "" -#: dcim/models/devices.py:485 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "" -#: dcim/models/devices.py:497 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "" -#: dcim/models/devices.py:498 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "" -#: dcim/models/devices.py:515 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" -#: dcim/models/devices.py:527 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "" -#: dcim/models/devices.py:528 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "" -#: dcim/models/devices.py:576 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "" -#: dcim/models/devices.py:608 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "" -#: dcim/models/devices.py:616 dcim/models/devices.py:1189 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1189 msgid "A unique tag used to identify this device" msgstr "" -#: dcim/models/devices.py:643 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "" -#: dcim/models/devices.py:650 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "" -#: dcim/models/devices.py:670 dcim/models/devices.py:1415 -#: virtualization/models/virtualmachines.py:100 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1415 +#: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "" -#: dcim/models/devices.py:678 dcim/models/devices.py:1423 -#: virtualization/models/virtualmachines.py:108 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1423 +#: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "" -#: dcim/models/devices.py:686 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "" -#: dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "" -#: dcim/models/devices.py:706 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "" -#: dcim/models/devices.py:709 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "" -#: dcim/models/devices.py:713 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "" -#: dcim/models/devices.py:716 dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "" -#: dcim/models/devices.py:721 dcim/models/devices.py:729 -#: dcim/models/sites.py:212 dcim/models/sites.py:220 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 +#: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "" -#: dcim/models/devices.py:724 dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "" -#: dcim/models/devices.py:797 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "" -#: dcim/models/devices.py:808 ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "" -#: dcim/models/devices.py:809 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "" -#: dcim/models/devices.py:835 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "" -#: dcim/models/devices.py:840 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "" -#: dcim/models/devices.py:846 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "" -#: dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "" -#: dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "" -#: dcim/models/devices.py:863 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "" -#: dcim/models/devices.py:867 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "" -#: dcim/models/devices.py:875 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "" -#: dcim/models/devices.py:886 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." msgstr "" -#: dcim/models/devices.py:893 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." msgstr "" -#: dcim/models/devices.py:907 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " "accommodate this device type: {device_type} ({u_height}U)" msgstr "" -#: dcim/models/devices.py:922 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "" -#: dcim/models/devices.py:931 dcim/models/devices.py:946 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "" -#: dcim/models/devices.py:937 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "" -#: dcim/models/devices.py:964 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " "but this device's type belongs to {devicetype_manufacturer}." msgstr "" -#: dcim/models/devices.py:975 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "" -#: dcim/models/devices.py:983 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" -#: dcim/models/devices.py:988 +#: netbox/dcim/models/devices.py:988 #, python-brace-format msgid "" "Device cannot be removed from virtual chassis {virtual_chassis} because it " "is currently designated as its master." msgstr "" -#: dcim/models/devices.py:1196 +#: netbox/dcim/models/devices.py:1196 msgid "module" msgstr "" -#: dcim/models/devices.py:1197 +#: netbox/dcim/models/devices.py:1197 msgid "modules" msgstr "" -#: dcim/models/devices.py:1213 +#: netbox/dcim/models/devices.py:1213 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " "device ({device})." msgstr "" -#: dcim/models/devices.py:1334 +#: netbox/dcim/models/devices.py:1334 msgid "domain" msgstr "" -#: dcim/models/devices.py:1347 dcim/models/devices.py:1348 +#: netbox/dcim/models/devices.py:1347 netbox/dcim/models/devices.py:1348 msgid "virtual chassis" msgstr "" -#: dcim/models/devices.py:1363 +#: netbox/dcim/models/devices.py:1363 #, python-brace-format msgid "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" -#: dcim/models/devices.py:1379 +#: netbox/dcim/models/devices.py:1379 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " "form a cross-chassis LAG interfaces." msgstr "" -#: dcim/models/devices.py:1404 vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1404 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "" -#: dcim/models/devices.py:1405 +#: netbox/dcim/models/devices.py:1405 msgid "Numeric identifier unique to the parent device" msgstr "" -#: dcim/models/devices.py:1433 extras/models/customfields.py:225 -#: extras/models/models.py:107 extras/models/models.py:694 -#: netbox/models/__init__.py:115 +#: netbox/dcim/models/devices.py:1433 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "" -#: dcim/models/devices.py:1449 +#: netbox/dcim/models/devices.py:1449 msgid "virtual device context" msgstr "" -#: dcim/models/devices.py:1450 +#: netbox/dcim/models/devices.py:1450 msgid "virtual device contexts" msgstr "" -#: dcim/models/devices.py:1482 +#: netbox/dcim/models/devices.py:1482 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "" -#: dcim/models/devices.py:1488 +#: netbox/dcim/models/devices.py:1488 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" -#: dcim/models/mixins.py:15 extras/models/configs.py:41 -#: extras/models/models.py:313 extras/models/models.py:522 -#: extras/models/search.py:48 ipam/models/ip.py:194 +#: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 +#: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "" -#: dcim/models/mixins.py:22 +#: netbox/dcim/models/mixins.py:22 msgid "weight unit" msgstr "" -#: dcim/models/mixins.py:51 +#: netbox/dcim/models/mixins.py:51 msgid "Must specify a unit when setting a weight" msgstr "" -#: dcim/models/power.py:55 +#: netbox/dcim/models/power.py:55 msgid "power panel" msgstr "" -#: dcim/models/power.py:56 +#: netbox/dcim/models/power.py:56 msgid "power panels" msgstr "" -#: dcim/models/power.py:70 +#: netbox/dcim/models/power.py:70 #, python-brace-format msgid "" "Location {location} ({location_site}) is in a different site than {site}" msgstr "" -#: dcim/models/power.py:108 +#: netbox/dcim/models/power.py:108 msgid "supply" msgstr "" -#: dcim/models/power.py:114 +#: netbox/dcim/models/power.py:114 msgid "phase" msgstr "" -#: dcim/models/power.py:120 +#: netbox/dcim/models/power.py:120 msgid "voltage" msgstr "" -#: dcim/models/power.py:125 +#: netbox/dcim/models/power.py:125 msgid "amperage" msgstr "" -#: dcim/models/power.py:130 +#: netbox/dcim/models/power.py:130 msgid "max utilization" msgstr "" -#: dcim/models/power.py:133 +#: netbox/dcim/models/power.py:133 msgid "Maximum permissible draw (percentage)" msgstr "" -#: dcim/models/power.py:136 +#: netbox/dcim/models/power.py:136 msgid "available power" msgstr "" -#: dcim/models/power.py:164 +#: netbox/dcim/models/power.py:164 msgid "power feed" msgstr "" -#: dcim/models/power.py:165 +#: netbox/dcim/models/power.py:165 msgid "power feeds" msgstr "" -#: dcim/models/power.py:179 +#: netbox/dcim/models/power.py:179 #, python-brace-format msgid "" "Rack {rack} ({rack_site}) and power panel {powerpanel} ({powerpanel_site}) " "are in different sites." msgstr "" -#: dcim/models/power.py:190 +#: netbox/dcim/models/power.py:190 msgid "Voltage cannot be negative for AC supply" msgstr "" -#: dcim/models/racks.py:47 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "" -#: dcim/models/racks.py:48 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "" -#: dcim/models/racks.py:56 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "" -#: dcim/models/racks.py:60 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "" -#: dcim/models/racks.py:62 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "" -#: dcim/models/racks.py:66 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "" -#: dcim/models/racks.py:67 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "" -#: dcim/models/racks.py:72 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "" -#: dcim/models/racks.py:75 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "" -#: dcim/models/racks.py:78 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "" -#: dcim/models/racks.py:81 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "" -#: dcim/models/racks.py:84 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "" -#: dcim/models/racks.py:90 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "" -#: dcim/models/racks.py:94 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this " "is the distance between the front and rear rails." msgstr "" -#: dcim/models/racks.py:102 +#: netbox/dcim/models/racks.py:102 msgid "max weight" msgstr "" -#: dcim/models/racks.py:105 +#: netbox/dcim/models/racks.py:105 msgid "Maximum load capacity for the rack" msgstr "" -#: dcim/models/racks.py:125 dcim/models/racks.py:252 +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 msgid "form factor" msgstr "" -#: dcim/models/racks.py:162 +#: netbox/dcim/models/racks.py:162 msgid "rack type" msgstr "" -#: dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:163 msgid "rack types" msgstr "" -#: dcim/models/racks.py:180 dcim/models/racks.py:379 +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 msgid "Must specify a unit when setting an outer width/depth" msgstr "" -#: dcim/models/racks.py:184 dcim/models/racks.py:383 +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 msgid "Must specify a unit when setting a maximum weight" msgstr "" -#: dcim/models/racks.py:230 +#: netbox/dcim/models/racks.py:230 msgid "rack role" msgstr "" -#: dcim/models/racks.py:231 +#: netbox/dcim/models/racks.py:231 msgid "rack roles" msgstr "" -#: dcim/models/racks.py:274 +#: netbox/dcim/models/racks.py:274 msgid "facility ID" msgstr "" -#: dcim/models/racks.py:275 +#: netbox/dcim/models/racks.py:275 msgid "Locally-assigned identifier" msgstr "" -#: dcim/models/racks.py:308 ipam/forms/bulk_import.py:201 -#: ipam/forms/bulk_import.py:266 ipam/forms/bulk_import.py:301 -#: ipam/forms/bulk_import.py:459 virtualization/forms/bulk_import.py:112 +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 msgid "Functional role" msgstr "" -#: dcim/models/racks.py:321 +#: netbox/dcim/models/racks.py:321 msgid "A unique tag used to identify this rack" msgstr "" -#: dcim/models/racks.py:359 +#: netbox/dcim/models/racks.py:359 msgid "rack" msgstr "" -#: dcim/models/racks.py:360 +#: netbox/dcim/models/racks.py:360 msgid "racks" msgstr "" -#: dcim/models/racks.py:375 +#: netbox/dcim/models/racks.py:375 #, python-brace-format msgid "Assigned location must belong to parent site ({site})." msgstr "" -#: dcim/models/racks.py:393 +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " "devices." msgstr "" -#: dcim/models/racks.py:400 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " "installed devices." msgstr "" -#: dcim/models/racks.py:408 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "" -#: dcim/models/racks.py:670 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "" -#: dcim/models/racks.py:696 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "" -#: dcim/models/racks.py:697 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "" -#: dcim/models/racks.py:714 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "" -#: dcim/models/racks.py:727 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "" -#: dcim/models/sites.py:49 +#: netbox/dcim/models/sites.py:49 msgid "A top-level region with this name already exists." msgstr "" -#: dcim/models/sites.py:59 +#: netbox/dcim/models/sites.py:59 msgid "A top-level region with this slug already exists." msgstr "" -#: dcim/models/sites.py:62 +#: netbox/dcim/models/sites.py:62 msgid "region" msgstr "" -#: dcim/models/sites.py:63 +#: netbox/dcim/models/sites.py:63 msgid "regions" msgstr "" -#: dcim/models/sites.py:102 +#: netbox/dcim/models/sites.py:102 msgid "A top-level site group with this name already exists." msgstr "" -#: dcim/models/sites.py:112 +#: netbox/dcim/models/sites.py:112 msgid "A top-level site group with this slug already exists." msgstr "" -#: dcim/models/sites.py:115 +#: netbox/dcim/models/sites.py:115 msgid "site group" msgstr "" -#: dcim/models/sites.py:116 +#: netbox/dcim/models/sites.py:116 msgid "site groups" msgstr "" -#: dcim/models/sites.py:141 +#: netbox/dcim/models/sites.py:141 msgid "Full name of the site" msgstr "" -#: dcim/models/sites.py:181 dcim/models/sites.py:279 +#: netbox/dcim/models/sites.py:181 netbox/dcim/models/sites.py:279 msgid "facility" msgstr "" -#: dcim/models/sites.py:184 dcim/models/sites.py:282 +#: netbox/dcim/models/sites.py:184 netbox/dcim/models/sites.py:282 msgid "Local facility ID or description" msgstr "" -#: dcim/models/sites.py:195 +#: netbox/dcim/models/sites.py:195 msgid "physical address" msgstr "" -#: dcim/models/sites.py:198 +#: netbox/dcim/models/sites.py:198 msgid "Physical location of the building" msgstr "" -#: dcim/models/sites.py:201 +#: netbox/dcim/models/sites.py:201 msgid "shipping address" msgstr "" -#: dcim/models/sites.py:204 +#: netbox/dcim/models/sites.py:204 msgid "If different from the physical address" msgstr "" -#: dcim/models/sites.py:238 +#: netbox/dcim/models/sites.py:238 msgid "site" msgstr "" -#: dcim/models/sites.py:239 +#: netbox/dcim/models/sites.py:239 msgid "sites" msgstr "" -#: dcim/models/sites.py:309 +#: netbox/dcim/models/sites.py:309 msgid "A location with this name already exists within the specified site." msgstr "" -#: dcim/models/sites.py:319 +#: netbox/dcim/models/sites.py:319 msgid "A location with this slug already exists within the specified site." msgstr "" -#: dcim/models/sites.py:322 +#: netbox/dcim/models/sites.py:322 msgid "location" msgstr "" -#: dcim/models/sites.py:323 +#: netbox/dcim/models/sites.py:323 msgid "locations" msgstr "" -#: dcim/models/sites.py:337 +#: netbox/dcim/models/sites.py:337 #, python-brace-format msgid "Parent location ({parent}) must belong to the same site ({site})." msgstr "" -#: dcim/tables/cables.py:55 +#: netbox/dcim/tables/cables.py:55 msgid "Termination A" msgstr "" -#: dcim/tables/cables.py:60 +#: netbox/dcim/tables/cables.py:60 msgid "Termination B" msgstr "" -#: dcim/tables/cables.py:66 wireless/tables/wirelesslink.py:23 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "" -#: dcim/tables/cables.py:72 wireless/tables/wirelesslink.py:32 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "" -#: dcim/tables/cables.py:78 +#: netbox/dcim/tables/cables.py:78 msgid "Location A" msgstr "" -#: dcim/tables/cables.py:84 +#: netbox/dcim/tables/cables.py:84 msgid "Location B" msgstr "" -#: dcim/tables/cables.py:90 +#: netbox/dcim/tables/cables.py:90 msgid "Rack A" msgstr "" -#: dcim/tables/cables.py:96 +#: netbox/dcim/tables/cables.py:96 msgid "Rack B" msgstr "" -#: dcim/tables/cables.py:102 +#: netbox/dcim/tables/cables.py:102 msgid "Site A" msgstr "" -#: dcim/tables/cables.py:108 +#: netbox/dcim/tables/cables.py:108 msgid "Site B" msgstr "" -#: dcim/tables/connections.py:31 dcim/tables/connections.py:50 -#: dcim/tables/connections.py:71 -#: templates/dcim/inc/connection_endpoints.html:16 +#: netbox/dcim/tables/connections.py:31 netbox/dcim/tables/connections.py:50 +#: netbox/dcim/tables/connections.py:71 +#: netbox/templates/dcim/inc/connection_endpoints.html:16 msgid "Reachable" msgstr "" -#: dcim/tables/devices.py:58 dcim/tables/devices.py:106 -#: dcim/tables/racks.py:150 dcim/tables/sites.py:105 dcim/tables/sites.py:148 -#: extras/tables/tables.py:545 netbox/navigation/menu.py:69 -#: netbox/navigation/menu.py:73 netbox/navigation/menu.py:75 -#: virtualization/forms/model_forms.py:122 virtualization/tables/clusters.py:83 -#: virtualization/views.py:206 +#: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 +#: netbox/virtualization/forms/model_forms.py:122 +#: netbox/virtualization/tables/clusters.py:83 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "" -#: dcim/tables/devices.py:63 dcim/tables/devices.py:111 -#: virtualization/tables/clusters.py:88 +#: netbox/dcim/tables/devices.py:63 netbox/dcim/tables/devices.py:111 +#: netbox/virtualization/tables/clusters.py:88 msgid "VMs" msgstr "" -#: dcim/tables/devices.py:100 dcim/tables/devices.py:216 -#: extras/forms/model_forms.py:630 templates/dcim/device.html:112 -#: templates/dcim/device/render_config.html:11 -#: templates/dcim/device/render_config.html:14 -#: templates/dcim/devicerole.html:44 templates/dcim/platform.html:41 -#: templates/extras/configtemplate.html:10 -#: templates/virtualization/virtualmachine.html:48 -#: templates/virtualization/virtualmachine/render_config.html:11 -#: templates/virtualization/virtualmachine/render_config.html:14 -#: virtualization/tables/virtualmachines.py:107 +#: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 +#: netbox/extras/forms/model_forms.py:630 netbox/templates/dcim/device.html:112 +#: netbox/templates/dcim/device/render_config.html:11 +#: netbox/templates/dcim/device/render_config.html:14 +#: netbox/templates/dcim/devicerole.html:44 +#: netbox/templates/dcim/platform.html:41 +#: netbox/templates/extras/configtemplate.html:10 +#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine/render_config.html:11 +#: netbox/templates/virtualization/virtualmachine/render_config.html:14 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "" -#: dcim/tables/devices.py:150 templates/dcim/sitegroup.html:26 +#: netbox/dcim/tables/devices.py:150 netbox/templates/dcim/sitegroup.html:26 msgid "Site Group" msgstr "" -#: dcim/tables/devices.py:187 dcim/tables/devices.py:1068 -#: ipam/forms/bulk_import.py:503 ipam/forms/model_forms.py:306 -#: ipam/forms/model_forms.py:315 ipam/tables/ip.py:356 ipam/tables/ip.py:423 -#: ipam/tables/ip.py:446 templates/ipam/ipaddress.html:11 -#: virtualization/tables/virtualmachines.py:95 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1068 +#: 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 +#: netbox/templates/ipam/ipaddress.html:11 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "" -#: dcim/tables/devices.py:191 dcim/tables/devices.py:1072 -#: virtualization/tables/virtualmachines.py:86 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "" -#: dcim/tables/devices.py:195 dcim/tables/devices.py:1076 -#: virtualization/tables/virtualmachines.py:90 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1076 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "" -#: dcim/tables/devices.py:210 +#: netbox/dcim/tables/devices.py:210 msgid "VC Position" msgstr "" -#: dcim/tables/devices.py:213 +#: netbox/dcim/tables/devices.py:213 msgid "VC Priority" msgstr "" -#: dcim/tables/devices.py:220 templates/dcim/device_edit.html:38 -#: templates/dcim/devicebay_populate.html:16 +#: netbox/dcim/tables/devices.py:220 netbox/templates/dcim/device_edit.html:38 +#: netbox/templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "" -#: dcim/tables/devices.py:225 +#: netbox/dcim/tables/devices.py:225 msgid "Position (Device Bay)" msgstr "" -#: dcim/tables/devices.py:234 +#: netbox/dcim/tables/devices.py:234 msgid "Console ports" msgstr "" -#: dcim/tables/devices.py:237 +#: netbox/dcim/tables/devices.py:237 msgid "Console server ports" msgstr "" -#: dcim/tables/devices.py:240 +#: netbox/dcim/tables/devices.py:240 msgid "Power ports" msgstr "" -#: dcim/tables/devices.py:243 +#: netbox/dcim/tables/devices.py:243 msgid "Power outlets" msgstr "" -#: dcim/tables/devices.py:246 dcim/tables/devices.py:1081 -#: dcim/tables/devicetypes.py:128 dcim/views.py:1042 dcim/views.py:1281 -#: dcim/views.py:1977 netbox/navigation/menu.py:94 -#: netbox/navigation/menu.py:250 templates/dcim/device/base.html:37 -#: templates/dcim/device_list.html:43 templates/dcim/devicetype/base.html:34 -#: templates/dcim/inc/moduletype_buttons.html:25 templates/dcim/module.html:34 -#: templates/dcim/virtualdevicecontext.html:61 -#: templates/dcim/virtualdevicecontext.html:81 -#: templates/virtualization/virtualmachine/base.html:27 -#: templates/virtualization/virtualmachine_list.html:14 -#: virtualization/tables/virtualmachines.py:101 virtualization/views.py:366 -#: wireless/tables/wirelesslan.py:55 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1081 +#: netbox/dcim/tables/devicetypes.py:128 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 +#: netbox/templates/dcim/device/base.html:37 +#: netbox/templates/dcim/device_list.html:43 +#: netbox/templates/dcim/devicetype/base.html:34 +#: netbox/templates/dcim/inc/moduletype_buttons.html:25 +#: netbox/templates/dcim/module.html:34 +#: netbox/templates/dcim/virtualdevicecontext.html:61 +#: netbox/templates/dcim/virtualdevicecontext.html:81 +#: netbox/templates/virtualization/virtualmachine/base.html:27 +#: netbox/templates/virtualization/virtualmachine_list.html:14 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "" -#: dcim/tables/devices.py:249 +#: netbox/dcim/tables/devices.py:249 msgid "Front ports" msgstr "" -#: dcim/tables/devices.py:255 +#: netbox/dcim/tables/devices.py:255 msgid "Device bays" msgstr "" -#: dcim/tables/devices.py:258 +#: netbox/dcim/tables/devices.py:258 msgid "Module bays" msgstr "" -#: dcim/tables/devices.py:261 +#: netbox/dcim/tables/devices.py:261 msgid "Inventory items" msgstr "" -#: dcim/tables/devices.py:305 dcim/tables/modules.py:56 -#: templates/dcim/modulebay.html:17 +#: netbox/dcim/tables/devices.py:305 netbox/dcim/tables/modules.py:56 +#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "" -#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:47 -#: dcim/tables/devicetypes.py:143 dcim/views.py:1117 dcim/views.py:2075 -#: netbox/navigation/menu.py:103 templates/dcim/device/base.html:52 -#: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 -#: templates/dcim/inc/panels/inventory_items.html:6 -#: templates/dcim/inventoryitemrole.html:32 +#: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:47 +#: netbox/dcim/tables/devicetypes.py:143 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 +#: netbox/templates/dcim/device/base.html:52 +#: netbox/templates/dcim/device_list.html:71 +#: netbox/templates/dcim/devicetype/base.html:49 +#: netbox/templates/dcim/inc/panels/inventory_items.html:6 +#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "" -#: dcim/tables/devices.py:333 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "" -#: dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "" -#: dcim/tables/devices.py:342 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "" -#: dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "" -#: dcim/tables/devices.py:464 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "" -#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:701 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:696 -#: netbox/navigation/menu.py:158 netbox/navigation/menu.py:160 -#: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 -#: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 -#: vpn/tables/tunnels.py:98 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 +#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 +#: netbox/templates/dcim/interface.html:339 +#: netbox/templates/ipam/ipaddress_bulk_add.html:15 +#: netbox/templates/ipam/service.html:40 +#: netbox/templates/virtualization/vminterface.html:85 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "" -#: dcim/tables/devices.py:564 netbox/navigation/menu.py:202 -#: templates/ipam/inc/panels/fhrp_groups.html:6 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "" -#: dcim/tables/devices.py:576 templates/dcim/interface.html:89 -#: templates/virtualization/vminterface.html:67 templates/vpn/tunnel.html:18 -#: templates/vpn/tunneltermination.html:13 vpn/forms/bulk_edit.py:76 -#: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:42 -#: vpn/forms/filtersets.py:82 vpn/forms/model_forms.py:60 -#: vpn/forms/model_forms.py:145 vpn/tables/tunnels.py:78 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 +#: netbox/templates/virtualization/vminterface.html:67 +#: netbox/templates/vpn/tunnel.html:18 +#: netbox/templates/vpn/tunneltermination.html:13 +#: netbox/vpn/forms/bulk_edit.py:76 netbox/vpn/forms/bulk_import.py:76 +#: netbox/vpn/forms/filtersets.py:42 netbox/vpn/forms/filtersets.py:82 +#: netbox/vpn/forms/model_forms.py:60 netbox/vpn/forms/model_forms.py:145 +#: netbox/vpn/tables/tunnels.py:78 msgid "Tunnel" msgstr "" -#: dcim/tables/devices.py:604 dcim/tables/devicetypes.py:227 -#: templates/dcim/interface.html:65 +#: netbox/dcim/tables/devices.py:604 netbox/dcim/tables/devicetypes.py:227 +#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "" -#: dcim/tables/devices.py:623 +#: netbox/dcim/tables/devices.py:623 msgid "VDCs" msgstr "" -#: dcim/tables/devices.py:873 templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:873 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "" -#: dcim/tables/devices.py:876 +#: netbox/dcim/tables/devices.py:876 msgid "Module Serial" msgstr "" -#: dcim/tables/devices.py:880 +#: netbox/dcim/tables/devices.py:880 msgid "Module Asset Tag" msgstr "" -#: dcim/tables/devices.py:889 +#: netbox/dcim/tables/devices.py:889 msgid "Module Status" msgstr "" -#: dcim/tables/devices.py:944 dcim/tables/devicetypes.py:312 -#: templates/dcim/inventoryitem.html:40 +#: netbox/dcim/tables/devices.py:944 netbox/dcim/tables/devicetypes.py:312 +#: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "" -#: dcim/tables/devices.py:1000 +#: netbox/dcim/tables/devices.py:1000 msgid "Items" msgstr "" -#: dcim/tables/devicetypes.py:37 netbox/navigation/menu.py:84 -#: netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:37 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "" -#: dcim/tables/devicetypes.py:42 netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:42 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "" -#: dcim/tables/devicetypes.py:52 extras/forms/filtersets.py:371 -#: extras/forms/model_forms.py:537 extras/tables/tables.py:540 -#: netbox/navigation/menu.py:78 +#: netbox/dcim/tables/devicetypes.py:52 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "" -#: dcim/tables/devicetypes.py:84 templates/dcim/devicetype.html:29 +#: netbox/dcim/tables/devicetypes.py:84 +#: netbox/templates/dcim/devicetype.html:29 msgid "Default Platform" msgstr "" -#: dcim/tables/devicetypes.py:88 templates/dcim/devicetype.html:45 +#: netbox/dcim/tables/devicetypes.py:88 +#: netbox/templates/dcim/devicetype.html:45 msgid "Full Depth" msgstr "" -#: dcim/tables/devicetypes.py:98 +#: netbox/dcim/tables/devicetypes.py:98 msgid "U Height" msgstr "" -#: dcim/tables/devicetypes.py:113 dcim/tables/modules.py:26 -#: dcim/tables/racks.py:89 +#: netbox/dcim/tables/devicetypes.py:113 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "" -#: dcim/tables/devicetypes.py:116 dcim/views.py:982 dcim/views.py:1221 -#: dcim/views.py:1913 netbox/navigation/menu.py:97 -#: templates/dcim/device/base.html:25 templates/dcim/device_list.html:15 -#: templates/dcim/devicetype/base.html:22 -#: templates/dcim/inc/moduletype_buttons.html:13 templates/dcim/module.html:22 +#: netbox/dcim/tables/devicetypes.py:116 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 +#: netbox/templates/dcim/device/base.html:25 +#: netbox/templates/dcim/device_list.html:15 +#: netbox/templates/dcim/devicetype/base.html:22 +#: netbox/templates/dcim/inc/moduletype_buttons.html:13 +#: netbox/templates/dcim/module.html:22 msgid "Console Ports" msgstr "" -#: dcim/tables/devicetypes.py:119 dcim/views.py:997 dcim/views.py:1236 -#: dcim/views.py:1929 netbox/navigation/menu.py:98 -#: templates/dcim/device/base.html:28 templates/dcim/device_list.html:22 -#: templates/dcim/devicetype/base.html:25 -#: templates/dcim/inc/moduletype_buttons.html:16 templates/dcim/module.html:25 +#: netbox/dcim/tables/devicetypes.py:119 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 +#: netbox/templates/dcim/device/base.html:28 +#: netbox/templates/dcim/device_list.html:22 +#: netbox/templates/dcim/devicetype/base.html:25 +#: netbox/templates/dcim/inc/moduletype_buttons.html:16 +#: netbox/templates/dcim/module.html:25 msgid "Console Server Ports" msgstr "" -#: dcim/tables/devicetypes.py:122 dcim/views.py:1012 dcim/views.py:1251 -#: dcim/views.py:1945 netbox/navigation/menu.py:99 -#: templates/dcim/device/base.html:31 templates/dcim/device_list.html:29 -#: templates/dcim/devicetype/base.html:28 -#: templates/dcim/inc/moduletype_buttons.html:19 templates/dcim/module.html:28 +#: netbox/dcim/tables/devicetypes.py:122 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 +#: netbox/templates/dcim/device/base.html:31 +#: netbox/templates/dcim/device_list.html:29 +#: netbox/templates/dcim/devicetype/base.html:28 +#: netbox/templates/dcim/inc/moduletype_buttons.html:19 +#: netbox/templates/dcim/module.html:28 msgid "Power Ports" msgstr "" -#: dcim/tables/devicetypes.py:125 dcim/views.py:1027 dcim/views.py:1266 -#: dcim/views.py:1961 netbox/navigation/menu.py:100 -#: templates/dcim/device/base.html:34 templates/dcim/device_list.html:36 -#: templates/dcim/devicetype/base.html:31 -#: templates/dcim/inc/moduletype_buttons.html:22 templates/dcim/module.html:31 +#: netbox/dcim/tables/devicetypes.py:125 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 +#: netbox/templates/dcim/device/base.html:34 +#: netbox/templates/dcim/device_list.html:36 +#: netbox/templates/dcim/devicetype/base.html:31 +#: netbox/templates/dcim/inc/moduletype_buttons.html:22 +#: netbox/templates/dcim/module.html:31 msgid "Power Outlets" msgstr "" -#: dcim/tables/devicetypes.py:131 dcim/views.py:1057 dcim/views.py:1296 -#: dcim/views.py:1999 netbox/navigation/menu.py:95 -#: templates/dcim/device/base.html:40 templates/dcim/devicetype/base.html:37 -#: templates/dcim/inc/moduletype_buttons.html:28 templates/dcim/module.html:37 +#: netbox/dcim/tables/devicetypes.py:131 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 +#: netbox/templates/dcim/device/base.html:40 +#: netbox/templates/dcim/devicetype/base.html:37 +#: netbox/templates/dcim/inc/moduletype_buttons.html:28 +#: netbox/templates/dcim/module.html:37 msgid "Front Ports" msgstr "" -#: dcim/tables/devicetypes.py:134 dcim/views.py:1072 dcim/views.py:1311 -#: dcim/views.py:2015 netbox/navigation/menu.py:96 -#: templates/dcim/device/base.html:43 templates/dcim/device_list.html:50 -#: templates/dcim/devicetype/base.html:40 -#: templates/dcim/inc/moduletype_buttons.html:31 templates/dcim/module.html:40 +#: netbox/dcim/tables/devicetypes.py:134 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 +#: netbox/templates/dcim/device/base.html:43 +#: netbox/templates/dcim/device_list.html:50 +#: netbox/templates/dcim/devicetype/base.html:40 +#: netbox/templates/dcim/inc/moduletype_buttons.html:31 +#: netbox/templates/dcim/module.html:40 msgid "Rear Ports" msgstr "" -#: dcim/tables/devicetypes.py:137 dcim/views.py:1102 dcim/views.py:2055 -#: netbox/navigation/menu.py:102 templates/dcim/device/base.html:49 -#: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46 +#: netbox/dcim/tables/devicetypes.py:137 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 +#: netbox/templates/dcim/device/base.html:49 +#: netbox/templates/dcim/device_list.html:57 +#: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "" -#: dcim/tables/devicetypes.py:140 dcim/views.py:1087 dcim/views.py:1326 -#: dcim/views.py:2035 netbox/navigation/menu.py:101 -#: templates/dcim/device/base.html:46 templates/dcim/device_list.html:64 -#: templates/dcim/devicetype/base.html:43 -#: templates/dcim/inc/moduletype_buttons.html:34 templates/dcim/module.html:43 +#: netbox/dcim/tables/devicetypes.py:140 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 +#: netbox/templates/dcim/device/base.html:46 +#: netbox/templates/dcim/device_list.html:64 +#: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/inc/moduletype_buttons.html:34 +#: netbox/templates/dcim/module.html:43 msgid "Module Bays" msgstr "" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:297 -#: templates/dcim/powerpanel.html:51 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 +#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "" -#: dcim/tables/power.py:80 templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:80 netbox/templates/dcim/powerfeed.html:99 msgid "Max Utilization" msgstr "" -#: dcim/tables/power.py:84 +#: netbox/dcim/tables/power.py:84 msgid "Available Power (VA)" msgstr "" -#: dcim/tables/racks.py:30 dcim/tables/sites.py:143 -#: netbox/navigation/menu.py:43 netbox/navigation/menu.py:47 -#: netbox/navigation/menu.py:49 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "" -#: dcim/tables/racks.py:63 dcim/tables/racks.py:142 -#: templates/dcim/device.html:318 -#: templates/dcim/inc/panels/racktype_dimensions.html:14 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "" -#: dcim/tables/racks.py:67 dcim/tables/racks.py:165 -#: templates/dcim/inc/panels/racktype_dimensions.html:18 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "" -#: dcim/tables/racks.py:71 dcim/tables/racks.py:169 -#: templates/dcim/inc/panels/racktype_dimensions.html:28 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "" -#: dcim/tables/racks.py:79 dcim/tables/racks.py:177 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "" -#: dcim/tables/racks.py:154 +#: netbox/dcim/tables/racks.py:154 msgid "Space" msgstr "" -#: dcim/tables/sites.py:30 dcim/tables/sites.py:57 -#: extras/forms/filtersets.py:351 extras/forms/model_forms.py:517 -#: ipam/forms/bulk_edit.py:131 ipam/forms/model_forms.py:153 -#: ipam/tables/asn.py:66 netbox/navigation/menu.py:15 -#: netbox/navigation/menu.py:17 +#: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 +#: netbox/extras/forms/filtersets.py:351 netbox/extras/forms/model_forms.py:517 +#: netbox/ipam/forms/bulk_edit.py:131 netbox/ipam/forms/model_forms.py:153 +#: netbox/ipam/tables/asn.py:66 netbox/netbox/navigation/menu.py:15 +#: netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "" -#: dcim/tests/test_api.py:47 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "" -#: dcim/views.py:140 +#: netbox/dcim/views.py:140 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "" -#: dcim/views.py:740 netbox/navigation/menu.py:51 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "" -#: dcim/views.py:759 templates/dcim/location.html:90 -#: templates/dcim/site.html:140 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 +#: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "" -#: dcim/views.py:2088 extras/forms/model_forms.py:577 -#: templates/extras/configcontext.html:10 -#: virtualization/forms/model_forms.py:225 virtualization/views.py:407 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 +#: netbox/templates/extras/configcontext.html:10 +#: netbox/virtualization/forms/model_forms.py:225 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "" -#: dcim/views.py:2098 virtualization/views.py:417 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "" -#: dcim/views.py:2131 virtualization/views.py:450 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "" -#: dcim/views.py:2149 extras/tables/tables.py:550 netbox/navigation/menu.py:247 -#: netbox/navigation/menu.py:249 virtualization/views.py:180 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "" -#: dcim/views.py:2897 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "" -#: dcim/views.py:2938 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "" -#: dcim/views.py:3044 ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "" -#: dcim/views.py:3510 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "" -#: dcim/views.py:3557 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" -#: dcim/views.py:3570 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "" -#: extras/api/customfields.py:89 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "" -#: extras/api/serializers_/customfields.py:73 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "" -#: extras/api/serializers_/scripts.py:70 extras/api/serializers_/scripts.py:75 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "" -#: extras/choices.py:30 extras/forms/misc.py:14 +#: netbox/extras/choices.py:30 netbox/extras/forms/misc.py:14 msgid "Text" msgstr "" -#: extras/choices.py:31 +#: netbox/extras/choices.py:31 msgid "Text (long)" msgstr "" -#: extras/choices.py:32 +#: netbox/extras/choices.py:32 msgid "Integer" msgstr "" -#: extras/choices.py:33 +#: netbox/extras/choices.py:33 msgid "Decimal" msgstr "" -#: extras/choices.py:34 +#: netbox/extras/choices.py:34 msgid "Boolean (true/false)" msgstr "" -#: extras/choices.py:35 +#: netbox/extras/choices.py:35 msgid "Date" msgstr "" -#: extras/choices.py:36 +#: netbox/extras/choices.py:36 msgid "Date & time" msgstr "" -#: extras/choices.py:38 +#: netbox/extras/choices.py:38 msgid "JSON" msgstr "" -#: extras/choices.py:39 +#: netbox/extras/choices.py:39 msgid "Selection" msgstr "" -#: extras/choices.py:40 +#: netbox/extras/choices.py:40 msgid "Multiple selection" msgstr "" -#: extras/choices.py:42 +#: netbox/extras/choices.py:42 msgid "Multiple objects" msgstr "" -#: extras/choices.py:53 netbox/preferences.py:21 -#: templates/extras/customfield.html:78 vpn/choices.py:20 -#: wireless/choices.py:27 +#: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 +#: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "" -#: extras/choices.py:54 +#: netbox/extras/choices.py:54 msgid "Loose" msgstr "" -#: extras/choices.py:55 +#: netbox/extras/choices.py:55 msgid "Exact" msgstr "" -#: extras/choices.py:66 +#: netbox/extras/choices.py:66 msgid "Always" msgstr "" -#: extras/choices.py:67 +#: netbox/extras/choices.py:67 msgid "If set" msgstr "" -#: extras/choices.py:68 extras/choices.py:81 +#: netbox/extras/choices.py:68 netbox/extras/choices.py:81 msgid "Hidden" msgstr "" -#: extras/choices.py:79 +#: netbox/extras/choices.py:79 msgid "Yes" msgstr "" -#: extras/choices.py:80 +#: netbox/extras/choices.py:80 msgid "No" msgstr "" -#: extras/choices.py:108 templates/tenancy/contact.html:57 -#: tenancy/forms/bulk_edit.py:118 wireless/forms/model_forms.py:168 +#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 +#: netbox/tenancy/forms/bulk_edit.py:118 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "" -#: extras/choices.py:124 +#: netbox/extras/choices.py:124 msgid "Newest" msgstr "" -#: extras/choices.py:125 +#: netbox/extras/choices.py:125 msgid "Oldest" msgstr "" -#: extras/choices.py:126 +#: netbox/extras/choices.py:126 msgid "Alphabetical (A-Z)" msgstr "" -#: extras/choices.py:127 +#: netbox/extras/choices.py:127 msgid "Alphabetical (Z-A)" msgstr "" -#: extras/choices.py:144 extras/choices.py:167 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "" -#: extras/choices.py:145 extras/choices.py:168 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "" -#: extras/choices.py:146 extras/choices.py:169 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "" -#: extras/choices.py:147 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "" -#: extras/choices.py:165 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "" -#: extras/choices.py:166 netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "" -#: extras/choices.py:170 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "" -#: extras/choices.py:186 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "" -#: extras/choices.py:187 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "" -#: extras/choices.py:188 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "" -#: extras/choices.py:189 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "" -#: extras/choices.py:190 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "" -#: extras/choices.py:226 templates/dcim/virtualchassis_edit.html:107 -#: templates/generic/bulk_add_component.html:68 -#: templates/generic/object_edit.html:47 templates/generic/object_edit.html:80 -#: templates/ipam/inc/ipaddress_edit_header.html:7 +#: netbox/extras/choices.py:226 +#: netbox/templates/dcim/virtualchassis_edit.html:107 +#: netbox/templates/generic/bulk_add_component.html:68 +#: netbox/templates/generic/object_edit.html:47 +#: netbox/templates/generic/object_edit.html:80 +#: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 msgid "Create" msgstr "" -#: extras/choices.py:227 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "" -#: extras/choices.py:228 templates/circuits/inc/circuit_termination.html:23 -#: templates/dcim/inc/panels/inventory_items.html:37 -#: templates/dcim/powerpanel.html:66 templates/extras/script_list.html:35 -#: templates/generic/bulk_delete.html:20 templates/generic/bulk_delete.html:66 -#: templates/generic/object_delete.html:19 templates/htmx/delete_form.html:57 -#: templates/ipam/inc/panels/fhrp_groups.html:48 -#: templates/users/objectpermission.html:46 -#: utilities/templates/buttons/delete.html:11 +#: netbox/extras/choices.py:228 +#: netbox/templates/circuits/inc/circuit_termination.html:23 +#: netbox/templates/dcim/inc/panels/inventory_items.html:37 +#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/extras/script_list.html:35 +#: netbox/templates/generic/bulk_delete.html:20 +#: netbox/templates/generic/bulk_delete.html:66 +#: netbox/templates/generic/object_delete.html:19 +#: netbox/templates/htmx/delete_form.html:57 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:48 +#: netbox/templates/users/objectpermission.html:46 +#: netbox/utilities/templates/buttons/delete.html:11 msgid "Delete" msgstr "" -#: extras/choices.py:252 netbox/choices.py:57 netbox/choices.py:102 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 +#: netbox/netbox/choices.py:102 msgid "Blue" msgstr "" -#: extras/choices.py:253 netbox/choices.py:56 netbox/choices.py:103 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 +#: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "" -#: extras/choices.py:254 netbox/choices.py:54 netbox/choices.py:104 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 +#: netbox/netbox/choices.py:104 msgid "Purple" msgstr "" -#: extras/choices.py:255 netbox/choices.py:51 netbox/choices.py:105 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 +#: netbox/netbox/choices.py:105 msgid "Pink" msgstr "" -#: extras/choices.py:256 netbox/choices.py:50 netbox/choices.py:106 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 +#: netbox/netbox/choices.py:106 msgid "Red" msgstr "" -#: extras/choices.py:257 netbox/choices.py:68 netbox/choices.py:107 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 +#: netbox/netbox/choices.py:107 msgid "Orange" msgstr "" -#: extras/choices.py:258 netbox/choices.py:66 netbox/choices.py:108 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 +#: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "" -#: extras/choices.py:259 netbox/choices.py:63 netbox/choices.py:109 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 +#: netbox/netbox/choices.py:109 msgid "Green" msgstr "" -#: extras/choices.py:260 netbox/choices.py:60 netbox/choices.py:110 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 +#: netbox/netbox/choices.py:110 msgid "Teal" msgstr "" -#: extras/choices.py:261 netbox/choices.py:59 netbox/choices.py:111 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 +#: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "" -#: extras/choices.py:262 netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "" -#: extras/choices.py:263 netbox/choices.py:74 netbox/choices.py:113 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 +#: netbox/netbox/choices.py:113 msgid "Black" msgstr "" -#: extras/choices.py:264 netbox/choices.py:75 netbox/choices.py:114 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 +#: netbox/netbox/choices.py:114 msgid "White" msgstr "" -#: extras/choices.py:279 extras/forms/model_forms.py:353 -#: extras/forms/model_forms.py:430 templates/extras/webhook.html:10 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 +#: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "" -#: extras/choices.py:280 extras/forms/model_forms.py:418 -#: templates/extras/script/base.html:29 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 +#: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "" -#: extras/choices.py:281 +#: netbox/extras/choices.py:281 msgid "Notification" msgstr "" -#: extras/conditions.py:54 +#: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" msgstr "" -#: extras/conditions.py:58 +#: netbox/extras/conditions.py:58 #, python-brace-format msgid "Unsupported value type: {value}" msgstr "" -#: extras/conditions.py:60 +#: netbox/extras/conditions.py:60 #, python-brace-format msgid "Invalid type for {op} operation: {value}" msgstr "" -#: extras/conditions.py:137 +#: netbox/extras/conditions.py:137 #, python-brace-format msgid "Ruleset must be a dictionary, not {ruleset}." msgstr "" -#: extras/conditions.py:142 +#: netbox/extras/conditions.py:142 msgid "Invalid logic type: must be 'AND' or 'OR'. Please check documentation." msgstr "" -#: extras/conditions.py:154 +#: netbox/extras/conditions.py:154 msgid "Incorrect key(s) informed. Please check documentation." msgstr "" -#: extras/dashboard/forms.py:38 +#: netbox/extras/dashboard/forms.py:38 msgid "Widget type" msgstr "" -#: extras/dashboard/utils.py:36 +#: netbox/extras/dashboard/utils.py:36 #, python-brace-format msgid "Unregistered widget class: {name}" msgstr "" -#: extras/dashboard/widgets.py:125 +#: netbox/extras/dashboard/widgets.py:125 #, python-brace-format msgid "{class_name} must define a render() method." msgstr "" -#: extras/dashboard/widgets.py:144 +#: netbox/extras/dashboard/widgets.py:144 msgid "Note" msgstr "" -#: extras/dashboard/widgets.py:145 +#: netbox/extras/dashboard/widgets.py:145 msgid "Display some arbitrary custom content. Markdown is supported." msgstr "" -#: extras/dashboard/widgets.py:158 +#: netbox/extras/dashboard/widgets.py:158 msgid "Object Counts" msgstr "" -#: extras/dashboard/widgets.py:159 +#: netbox/extras/dashboard/widgets.py:159 msgid "" "Display a set of NetBox models and the number of objects created for each " "type." msgstr "" -#: extras/dashboard/widgets.py:169 +#: netbox/extras/dashboard/widgets.py:169 msgid "Filters to apply when counting the number of objects" msgstr "" -#: extras/dashboard/widgets.py:177 +#: netbox/extras/dashboard/widgets.py:177 msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "" -#: extras/dashboard/widgets.py:208 +#: netbox/extras/dashboard/widgets.py:208 msgid "Object List" msgstr "" -#: extras/dashboard/widgets.py:209 +#: netbox/extras/dashboard/widgets.py:209 msgid "Display an arbitrary list of objects." msgstr "" -#: extras/dashboard/widgets.py:222 +#: netbox/extras/dashboard/widgets.py:222 msgid "The default number of objects to display" msgstr "" -#: extras/dashboard/widgets.py:234 +#: netbox/extras/dashboard/widgets.py:234 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" -#: extras/dashboard/widgets.py:274 +#: netbox/extras/dashboard/widgets.py:274 msgid "RSS Feed" msgstr "" -#: extras/dashboard/widgets.py:279 +#: netbox/extras/dashboard/widgets.py:279 msgid "Embed an RSS feed from an external website." msgstr "" -#: extras/dashboard/widgets.py:286 +#: netbox/extras/dashboard/widgets.py:286 msgid "Feed URL" msgstr "" -#: extras/dashboard/widgets.py:291 +#: netbox/extras/dashboard/widgets.py:291 msgid "The maximum number of objects to display" msgstr "" -#: extras/dashboard/widgets.py:296 +#: netbox/extras/dashboard/widgets.py:296 msgid "How long to stored the cached content (in seconds)" msgstr "" -#: extras/dashboard/widgets.py:348 templates/account/base.html:10 -#: templates/account/bookmarks.html:7 templates/inc/user_menu.html:48 +#: netbox/extras/dashboard/widgets.py:348 netbox/templates/account/base.html:10 +#: netbox/templates/account/bookmarks.html:7 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "" -#: extras/dashboard/widgets.py:352 +#: netbox/extras/dashboard/widgets.py:352 msgid "Show your personal bookmarks" msgstr "" -#: extras/events.py:147 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "" -#: extras/events.py:192 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "" -#: extras/filtersets.py:45 +#: netbox/extras/filtersets.py:45 msgid "Script module (ID)" msgstr "" -#: extras/filtersets.py:254 extras/filtersets.py:637 extras/filtersets.py:665 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "" -#: extras/filtersets.py:370 users/filtersets.py:68 users/filtersets.py:191 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 msgid "Group (name)" msgstr "" -#: extras/filtersets.py:574 virtualization/forms/filtersets.py:118 +#: netbox/extras/filtersets.py:574 +#: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "" -#: extras/filtersets.py:580 virtualization/filtersets.py:95 -#: virtualization/filtersets.py:147 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 +#: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "" -#: extras/filtersets.py:601 tenancy/forms/forms.py:16 tenancy/forms/forms.py:39 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 +#: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "" -#: extras/filtersets.py:607 tenancy/filtersets.py:188 tenancy/filtersets.py:208 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:188 +#: netbox/tenancy/filtersets.py:208 msgid "Tenant group (slug)" msgstr "" -#: extras/filtersets.py:623 extras/forms/model_forms.py:495 -#: templates/extras/tag.html:11 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 +#: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "" -#: extras/filtersets.py:629 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "" -#: extras/filtersets.py:689 extras/forms/filtersets.py:429 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "" -#: extras/forms/bulk_edit.py:35 extras/forms/filtersets.py:60 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "" -#: extras/forms/bulk_edit.py:43 extras/forms/filtersets.py:68 -#: extras/tables/tables.py:65 templates/extras/customfield.html:38 -#: templates/generic/bulk_import.html:118 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 +#: netbox/templates/extras/customfield.html:38 +#: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "" -#: extras/forms/bulk_edit.py:48 extras/forms/filtersets.py:75 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 msgid "Must be unique" msgstr "" -#: extras/forms/bulk_edit.py:61 extras/forms/bulk_import.py:60 -#: extras/forms/filtersets.py:89 extras/models/customfields.py:209 +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "" -#: extras/forms/bulk_edit.py:66 extras/forms/bulk_import.py:66 -#: extras/forms/filtersets.py:94 extras/models/customfields.py:216 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "" -#: extras/forms/bulk_edit.py:71 extras/forms/filtersets.py:97 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "" -#: extras/forms/bulk_edit.py:76 extras/forms/filtersets.py:104 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 msgid "Minimum value" msgstr "" -#: extras/forms/bulk_edit.py:80 extras/forms/filtersets.py:108 +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 msgid "Maximum value" msgstr "" -#: extras/forms/bulk_edit.py:84 extras/forms/filtersets.py:112 +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 msgid "Validation regex" msgstr "" -#: extras/forms/bulk_edit.py:91 extras/forms/filtersets.py:46 -#: extras/forms/model_forms.py:76 templates/extras/customfield.html:70 +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 msgid "Behavior" msgstr "" -#: extras/forms/bulk_edit.py:128 extras/forms/filtersets.py:149 +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "" -#: extras/forms/bulk_edit.py:137 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "" -#: extras/forms/bulk_edit.py:154 extras/forms/filtersets.py:187 -#: extras/models/models.py:409 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "" -#: extras/forms/bulk_edit.py:159 extras/forms/filtersets.py:190 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "" -#: extras/forms/bulk_edit.py:164 extras/forms/filtersets.py:194 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "" -#: extras/forms/bulk_edit.py:192 extras/forms/filtersets.py:236 -#: extras/tables/tables.py:256 templates/extras/savedfilter.html:29 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 +#: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "" -#: extras/forms/bulk_edit.py:215 extras/forms/filtersets.py:265 -#: extras/models/models.py:174 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "" -#: extras/forms/bulk_edit.py:219 extras/forms/filtersets.py:259 -#: templates/extras/webhook.html:30 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 +#: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "" -#: extras/forms/bulk_edit.py:224 extras/models/models.py:214 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "" -#: extras/forms/bulk_edit.py:227 templates/extras/webhook.html:38 +#: netbox/extras/forms/bulk_edit.py:227 netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "" -#: extras/forms/bulk_edit.py:232 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "" -#: extras/forms/bulk_edit.py:253 extras/forms/bulk_import.py:192 -#: extras/forms/model_forms.py:377 +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 msgid "Event types" msgstr "" -#: extras/forms/bulk_edit.py:293 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "" -#: extras/forms/bulk_import.py:37 extras/forms/bulk_import.py:118 -#: extras/forms/bulk_import.py:139 extras/forms/bulk_import.py:162 -#: extras/forms/bulk_import.py:186 extras/forms/filtersets.py:137 -#: extras/forms/filtersets.py:224 extras/forms/model_forms.py:47 -#: extras/forms/model_forms.py:205 extras/forms/model_forms.py:237 -#: extras/forms/model_forms.py:278 extras/forms/model_forms.py:372 -#: extras/forms/model_forms.py:489 users/forms/model_forms.py:276 +#: netbox/extras/forms/bulk_import.py:37 netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 netbox/extras/forms/filtersets.py:137 +#: netbox/extras/forms/filtersets.py:224 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 netbox/users/forms/model_forms.py:276 msgid "Object types" msgstr "" -#: extras/forms/bulk_import.py:39 extras/forms/bulk_import.py:120 -#: extras/forms/bulk_import.py:141 extras/forms/bulk_import.py:164 -#: extras/forms/bulk_import.py:188 tenancy/forms/bulk_import.py:96 +#: netbox/extras/forms/bulk_import.py:39 netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 +#: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "" -#: extras/forms/bulk_import.py:44 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "" -#: extras/forms/bulk_import.py:47 extras/forms/filtersets.py:208 -#: extras/forms/filtersets.py:281 extras/forms/model_forms.py:304 -#: extras/forms/model_forms.py:341 tenancy/forms/filtersets.py:92 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "" -#: extras/forms/bulk_import.py:50 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "" -#: extras/forms/bulk_import.py:53 extras/forms/filtersets.py:84 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "" -#: extras/forms/bulk_import.py:57 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "" -#: extras/forms/bulk_import.py:63 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "" -#: extras/forms/bulk_import.py:69 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "" -#: extras/forms/bulk_import.py:85 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "" -#: extras/forms/bulk_import.py:91 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" msgstr "" -#: extras/forms/bulk_import.py:123 extras/models/models.py:323 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "" -#: extras/forms/bulk_import.py:126 extras/models/models.py:327 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" -#: extras/forms/bulk_import.py:193 +#: netbox/extras/forms/bulk_import.py:193 msgid "The event type(s) which will trigger this rule" msgstr "" -#: extras/forms/bulk_import.py:196 +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "" -#: extras/forms/bulk_import.py:198 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "" -#: extras/forms/bulk_import.py:219 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "" -#: extras/forms/bulk_import.py:228 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "" -#: extras/forms/bulk_import.py:244 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "" -#: extras/forms/bulk_import.py:249 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "" -#: extras/forms/bulk_import.py:261 extras/forms/model_forms.py:320 -#: netbox/navigation/menu.py:390 templates/extras/notificationgroup.html:41 -#: templates/users/group.html:29 users/forms/model_forms.py:236 -#: users/forms/model_forms.py:248 users/forms/model_forms.py:300 -#: users/tables.py:102 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:236 +#: netbox/users/forms/model_forms.py:248 netbox/users/forms/model_forms.py:300 +#: netbox/users/tables.py:102 msgid "Users" msgstr "" -#: extras/forms/bulk_import.py:265 +#: netbox/extras/forms/bulk_import.py:265 msgid "User names separated by commas, encased with double quotes" msgstr "" -#: extras/forms/bulk_import.py:268 extras/forms/model_forms.py:315 -#: netbox/navigation/menu.py:410 templates/extras/notificationgroup.html:31 -#: users/forms/model_forms.py:181 users/forms/model_forms.py:193 -#: users/forms/model_forms.py:305 users/tables.py:35 users/tables.py:106 +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:181 netbox/users/forms/model_forms.py:193 +#: netbox/users/forms/model_forms.py:305 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 msgid "Groups" msgstr "" -#: extras/forms/bulk_import.py:272 +#: netbox/extras/forms/bulk_import.py:272 msgid "Group names separated by commas, encased with double quotes" msgstr "" -#: extras/forms/filtersets.py:52 extras/forms/model_forms.py:56 +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "" -#: extras/forms/filtersets.py:57 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "" -#: extras/forms/filtersets.py:120 extras/forms/model_forms.py:157 -#: extras/tables/tables.py:91 templates/generic/bulk_import.html:154 +#: netbox/extras/forms/filtersets.py:120 netbox/extras/forms/model_forms.py:157 +#: netbox/extras/tables/tables.py:91 +#: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "" -#: extras/forms/filtersets.py:164 extras/forms/filtersets.py:319 -#: extras/forms/filtersets.py:408 extras/forms/model_forms.py:572 -#: templates/core/job.html:96 templates/extras/eventrule.html:84 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 netbox/extras/forms/model_forms.py:572 +#: netbox/templates/core/job.html:96 netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "" -#: extras/forms/filtersets.py:175 extras/forms/filtersets.py:333 -#: extras/forms/filtersets.py:418 netbox/choices.py:130 -#: utilities/forms/bulk_import.py:26 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 +#: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "" -#: extras/forms/filtersets.py:183 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "" -#: extras/forms/filtersets.py:255 extras/models/models.py:179 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "" -#: extras/forms/filtersets.py:286 +#: netbox/extras/forms/filtersets.py:286 msgid "Event type" msgstr "" -#: extras/forms/filtersets.py:291 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "" -#: extras/forms/filtersets.py:307 +#: netbox/extras/forms/filtersets.py:307 msgid "Tagged object type" msgstr "" -#: extras/forms/filtersets.py:312 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "" -#: extras/forms/filtersets.py:341 extras/forms/model_forms.py:507 -#: netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 netbox/extras/forms/model_forms.py:507 +#: netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "" -#: extras/forms/filtersets.py:346 extras/forms/model_forms.py:512 +#: netbox/extras/forms/filtersets.py:346 netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "" -#: extras/forms/filtersets.py:356 extras/forms/model_forms.py:522 -#: netbox/navigation/menu.py:20 templates/dcim/site.html:127 +#: netbox/extras/forms/filtersets.py:356 netbox/extras/forms/model_forms.py:522 +#: netbox/netbox/navigation/menu.py:20 netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "" -#: extras/forms/filtersets.py:361 extras/forms/model_forms.py:527 +#: netbox/extras/forms/filtersets.py:361 netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "" -#: extras/forms/filtersets.py:366 extras/forms/model_forms.py:532 +#: netbox/extras/forms/filtersets.py:366 netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "" -#: extras/forms/filtersets.py:376 extras/forms/model_forms.py:542 +#: netbox/extras/forms/filtersets.py:376 netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "" -#: extras/forms/filtersets.py:381 extras/forms/model_forms.py:547 +#: netbox/extras/forms/filtersets.py:381 netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "" -#: extras/forms/filtersets.py:386 extras/forms/model_forms.py:552 -#: netbox/navigation/menu.py:255 netbox/navigation/menu.py:257 -#: templates/virtualization/clustertype.html:30 -#: virtualization/tables/clusters.py:23 virtualization/tables/clusters.py:45 +#: netbox/extras/forms/filtersets.py:386 netbox/extras/forms/model_forms.py:552 +#: netbox/netbox/navigation/menu.py:255 netbox/netbox/navigation/menu.py:257 +#: netbox/templates/virtualization/clustertype.html:30 +#: netbox/virtualization/tables/clusters.py:23 +#: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "" -#: extras/forms/filtersets.py:391 extras/forms/model_forms.py:557 +#: netbox/extras/forms/filtersets.py:391 netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "" -#: extras/forms/model_forms.py:49 +#: netbox/extras/forms/model_forms.py:49 msgid "The type(s) of object that have this custom field" msgstr "" -#: extras/forms/model_forms.py:52 +#: netbox/extras/forms/model_forms.py:52 msgid "Default value" msgstr "" -#: extras/forms/model_forms.py:58 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "" -#: extras/forms/model_forms.py:61 templates/extras/customfield.html:60 +#: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 msgid "Related object filter" msgstr "" -#: extras/forms/model_forms.py:63 +#: netbox/extras/forms/model_forms.py:63 msgid "Specify query parameters as a JSON object." msgstr "" -#: extras/forms/model_forms.py:73 templates/extras/customfield.html:10 +#: netbox/extras/forms/model_forms.py:73 +#: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "" -#: extras/forms/model_forms.py:85 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." msgstr "" -#: extras/forms/model_forms.py:88 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." msgstr "" -#: extras/forms/model_forms.py:143 +#: netbox/extras/forms/model_forms.py:143 msgid "Related Object" msgstr "" -#: extras/forms/model_forms.py:169 +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" msgstr "" -#: extras/forms/model_forms.py:212 templates/extras/customlink.html:10 +#: netbox/extras/forms/model_forms.py:212 +#: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "" -#: extras/forms/model_forms.py:214 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "" -#: extras/forms/model_forms.py:226 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " "Links which render as empty text will not be displayed." msgstr "" -#: extras/forms/model_forms.py:230 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." msgstr "" -#: extras/forms/model_forms.py:241 extras/forms/model_forms.py:624 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "" -#: extras/forms/model_forms.py:247 templates/extras/exporttemplate.html:12 +#: netbox/extras/forms/model_forms.py:247 +#: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "" -#: extras/forms/model_forms.py:249 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "" -#: extras/forms/model_forms.py:263 extras/forms/model_forms.py:649 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" -#: extras/forms/model_forms.py:270 extras/forms/model_forms.py:656 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "" -#: extras/forms/model_forms.py:284 netbox/forms/mixins.py:70 -#: templates/extras/savedfilter.html:10 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 +#: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "" -#: extras/forms/model_forms.py:334 +#: netbox/extras/forms/model_forms.py:334 msgid "A notification group specify at least one user or group." msgstr "" -#: extras/forms/model_forms.py:356 templates/extras/webhook.html:23 +#: netbox/extras/forms/model_forms.py:356 +#: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "" -#: extras/forms/model_forms.py:358 templates/extras/webhook.html:44 +#: netbox/extras/forms/model_forms.py:358 +#: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "" -#: extras/forms/model_forms.py:380 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "" -#: extras/forms/model_forms.py:385 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "" -#: extras/forms/model_forms.py:389 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." msgstr "" -#: extras/forms/model_forms.py:394 templates/extras/eventrule.html:10 +#: netbox/extras/forms/model_forms.py:394 +#: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "" -#: extras/forms/model_forms.py:395 +#: netbox/extras/forms/model_forms.py:395 msgid "Triggers" msgstr "" -#: extras/forms/model_forms.py:442 +#: netbox/extras/forms/model_forms.py:442 msgid "Notification group" msgstr "" -#: extras/forms/model_forms.py:562 netbox/navigation/menu.py:26 -#: tenancy/tables/tenants.py:22 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 +#: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "" -#: extras/forms/model_forms.py:606 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "" -#: extras/forms/model_forms.py:612 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "" -#: extras/forms/model_forms.py:631 templates/core/datafile.html:55 +#: netbox/extras/forms/model_forms.py:631 +#: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "" -#: extras/forms/reports.py:17 extras/forms/scripts.py:23 +#: netbox/extras/forms/reports.py:17 netbox/extras/forms/scripts.py:23 msgid "Schedule at" msgstr "" -#: extras/forms/reports.py:18 +#: netbox/extras/forms/reports.py:18 msgid "Schedule execution of report to a set time" msgstr "" -#: extras/forms/reports.py:23 extras/forms/scripts.py:29 +#: netbox/extras/forms/reports.py:23 netbox/extras/forms/scripts.py:29 msgid "Recurs every" msgstr "" -#: extras/forms/reports.py:27 +#: netbox/extras/forms/reports.py:27 msgid "Interval at which this report is re-run (in minutes)" msgstr "" -#: extras/forms/reports.py:35 extras/forms/scripts.py:41 +#: netbox/extras/forms/reports.py:35 netbox/extras/forms/scripts.py:41 #, python-brace-format msgid " (current time: {now})" msgstr "" -#: extras/forms/reports.py:45 extras/forms/scripts.py:51 +#: netbox/extras/forms/reports.py:45 netbox/extras/forms/scripts.py:51 msgid "Scheduled time must be in the future." msgstr "" -#: extras/forms/scripts.py:17 +#: netbox/extras/forms/scripts.py:17 msgid "Commit changes" msgstr "" -#: extras/forms/scripts.py:18 +#: netbox/extras/forms/scripts.py:18 msgid "Commit changes to the database (uncheck for a dry-run)" msgstr "" -#: extras/forms/scripts.py:24 +#: netbox/extras/forms/scripts.py:24 msgid "Schedule execution of script to a set time" msgstr "" -#: extras/forms/scripts.py:33 +#: netbox/extras/forms/scripts.py:33 msgid "Interval at which this script is re-run (in minutes)" msgstr "" -#: extras/jobs.py:49 +#: netbox/extras/jobs.py:49 msgid "Database changes have been reverted automatically." msgstr "" -#: extras/jobs.py:55 +#: netbox/extras/jobs.py:55 msgid "Script aborted with error: " msgstr "" -#: extras/jobs.py:65 +#: netbox/extras/jobs.py:65 msgid "An exception occurred: " msgstr "" -#: extras/jobs.py:70 +#: netbox/extras/jobs.py:70 msgid "Database changes have been reverted due to error." msgstr "" -#: extras/management/commands/reindex.py:66 +#: netbox/extras/management/commands/reindex.py:66 msgid "No indexers found!" msgstr "" -#: extras/models/configs.py:130 +#: netbox/extras/models/configs.py:130 msgid "config context" msgstr "" -#: extras/models/configs.py:131 +#: netbox/extras/models/configs.py:131 msgid "config contexts" msgstr "" -#: extras/models/configs.py:149 extras/models/configs.py:205 +#: netbox/extras/models/configs.py:149 netbox/extras/models/configs.py:205 msgid "JSON data must be in object form. Example:" msgstr "" -#: extras/models/configs.py:169 +#: netbox/extras/models/configs.py:169 msgid "" "Local config context data takes precedence over source contexts in the final " "rendered config context" msgstr "" -#: extras/models/configs.py:224 +#: netbox/extras/models/configs.py:224 msgid "template code" msgstr "" -#: extras/models/configs.py:225 +#: netbox/extras/models/configs.py:225 msgid "Jinja2 template code." msgstr "" -#: extras/models/configs.py:228 +#: netbox/extras/models/configs.py:228 msgid "environment parameters" msgstr "" -#: extras/models/configs.py:233 +#: netbox/extras/models/configs.py:233 msgid "" "Any additional parameters to pass when constructing the Jinja2 " "environment." msgstr "" -#: extras/models/configs.py:240 +#: netbox/extras/models/configs.py:240 msgid "config template" msgstr "" -#: extras/models/configs.py:241 +#: netbox/extras/models/configs.py:241 msgid "config templates" msgstr "" -#: extras/models/customfields.py:75 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "" -#: extras/models/customfields.py:82 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "" -#: extras/models/customfields.py:89 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" -#: extras/models/customfields.py:95 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "" -#: extras/models/customfields.py:99 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "" -#: extras/models/customfields.py:104 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" -#: extras/models/customfields.py:115 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" msgstr "" -#: extras/models/customfields.py:119 extras/models/models.py:317 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "" -#: extras/models/customfields.py:122 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "" -#: extras/models/customfields.py:130 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "" -#: extras/models/customfields.py:132 +#: netbox/extras/models/customfields.py:132 msgid "" "This field is required when creating new objects or editing an existing " "object." msgstr "" -#: extras/models/customfields.py:135 +#: netbox/extras/models/customfields.py:135 msgid "must be unique" msgstr "" -#: extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:137 msgid "The value of this field must be unique for the assigned object" msgstr "" -#: extras/models/customfields.py:140 +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "" -#: extras/models/customfields.py:143 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." msgstr "" -#: extras/models/customfields.py:148 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "" -#: extras/models/customfields.py:152 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire field." msgstr "" -#: extras/models/customfields.py:155 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "" -#: extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with " "double quotes (e.g. \"Foo\")." msgstr "" -#: extras/models/customfields.py:166 +#: netbox/extras/models/customfields.py:166 msgid "" "Filter the object selection choices using a query_params dict (must be a " "JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." msgstr "" -#: extras/models/customfields.py:172 +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "" -#: extras/models/customfields.py:173 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "" -#: extras/models/customfields.py:178 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "" -#: extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "" -#: extras/models/customfields.py:184 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "" -#: extras/models/customfields.py:185 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "" -#: extras/models/customfields.py:191 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "" -#: extras/models/customfields.py:193 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7555,259 +8075,261 @@ msgid "" "values to exactly three uppercase letters." msgstr "" -#: extras/models/customfields.py:201 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "" -#: extras/models/customfields.py:210 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" -#: extras/models/customfields.py:217 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" -#: extras/models/customfields.py:221 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "" -#: extras/models/customfields.py:222 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "" -#: extras/models/customfields.py:239 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "" -#: extras/models/customfields.py:240 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "" -#: extras/models/customfields.py:329 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "" -#: extras/models/customfields.py:336 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "" -#: extras/models/customfields.py:338 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "" -#: extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:348 msgid "Regular expression validation is supported only for text and URL fields" msgstr "" -#: extras/models/customfields.py:354 +#: netbox/extras/models/customfields.py:354 msgid "Uniqueness cannot be enforced for boolean fields" msgstr "" -#: extras/models/customfields.py:364 +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "" -#: extras/models/customfields.py:368 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "" -#: extras/models/customfields.py:375 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "" -#: extras/models/customfields.py:379 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "" -#: extras/models/customfields.py:386 +#: netbox/extras/models/customfields.py:386 msgid "A related object filter can be defined only for object fields." msgstr "" -#: extras/models/customfields.py:390 +#: netbox/extras/models/customfields.py:390 msgid "Filter must be defined as a dictionary mapping attributes to values." msgstr "" -#: extras/models/customfields.py:469 +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "" -#: extras/models/customfields.py:470 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "" -#: extras/models/customfields.py:560 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "" -#: extras/models/customfields.py:654 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "" -#: extras/models/customfields.py:656 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "" -#: extras/models/customfields.py:661 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "" -#: extras/models/customfields.py:664 extras/models/customfields.py:679 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "" -#: extras/models/customfields.py:668 extras/models/customfields.py:683 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "" -#: extras/models/customfields.py:676 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "" -#: extras/models/customfields.py:688 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "" -#: extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "" -#: extras/models/customfields.py:705 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" -#: extras/models/customfields.py:712 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "" -#: extras/models/customfields.py:722 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "" -#: extras/models/customfields.py:731 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "" -#: extras/models/customfields.py:737 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "" -#: extras/models/customfields.py:741 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "" -#: extras/models/customfields.py:744 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "" -#: extras/models/customfields.py:763 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "" -#: extras/models/customfields.py:775 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "" -#: extras/models/customfields.py:782 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "" -#: extras/models/customfields.py:783 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "" -#: extras/models/customfields.py:825 +#: netbox/extras/models/customfields.py:825 msgid "Must define base or extra choices." msgstr "" -#: extras/models/customfields.py:849 +#: netbox/extras/models/customfields.py:849 #, python-brace-format msgid "" "Cannot remove choice {choice} as there are {model} objects which reference " "it." msgstr "" -#: extras/models/dashboard.py:18 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "" -#: extras/models/dashboard.py:22 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "" -#: extras/models/dashboard.py:27 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "" -#: extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "" -#: extras/models/models.py:52 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "" -#: extras/models/models.py:53 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "" -#: extras/models/models.py:67 +#: netbox/extras/models/models.py:67 msgid "The types of event which will trigger this rule." msgstr "" -#: extras/models/models.py:74 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "" -#: extras/models/models.py:77 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "" -#: extras/models/models.py:85 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "" -#: extras/models/models.py:104 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "" -#: extras/models/models.py:116 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "" -#: extras/models/models.py:117 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "" -#: extras/models/models.py:166 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the " "request body." msgstr "" -#: extras/models/models.py:181 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available here." msgstr "" -#: extras/models/models.py:186 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "" -#: extras/models/models.py:189 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -7815,11 +8337,11 @@ msgid "" "as the request body (below)." msgstr "" -#: extras/models/models.py:195 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "" -#: extras/models/models.py:198 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -7827,4253 +8349,4386 @@ msgid "" "username, request_id, and data." msgstr "" -#: extras/models/models.py:204 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "" -#: extras/models/models.py:208 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " "the key. The secret is not transmitted in the request." msgstr "" -#: extras/models/models.py:215 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "" -#: extras/models/models.py:221 templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "" -#: extras/models/models.py:223 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to " "use the system defaults." msgstr "" -#: extras/models/models.py:234 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "" -#: extras/models/models.py:235 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "" -#: extras/models/models.py:253 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" -#: extras/models/models.py:293 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "" -#: extras/models/models.py:305 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "" -#: extras/models/models.py:306 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "" -#: extras/models/models.py:309 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "" -#: extras/models/models.py:310 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "" -#: extras/models/models.py:320 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "" -#: extras/models/models.py:330 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "" -#: extras/models/models.py:332 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "" -#: extras/models/models.py:341 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "" -#: extras/models/models.py:342 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "" -#: extras/models/models.py:389 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "" -#: extras/models/models.py:402 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." msgstr "" -#: extras/models/models.py:410 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "" -#: extras/models/models.py:413 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "" -#: extras/models/models.py:416 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "" -#: extras/models/models.py:419 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "" -#: extras/models/models.py:421 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "" -#: extras/models/models.py:430 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "" -#: extras/models/models.py:431 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "" -#: extras/models/models.py:448 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "" -#: extras/models/models.py:498 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "" -#: extras/models/models.py:530 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "" -#: extras/models/models.py:543 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "" -#: extras/models/models.py:544 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "" -#: extras/models/models.py:562 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" -#: extras/models/models.py:590 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "" -#: extras/models/models.py:593 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "" -#: extras/models/models.py:610 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "" -#: extras/models/models.py:611 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "" -#: extras/models/models.py:625 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "" -#: extras/models/models.py:688 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "" -#: extras/models/models.py:702 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "" -#: extras/models/models.py:703 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "" -#: extras/models/models.py:718 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "" -#: extras/models/models.py:760 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "" -#: extras/models/models.py:761 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "" -#: extras/models/models.py:774 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "" -#: extras/models/notifications.py:43 +#: netbox/extras/models/notifications.py:43 msgid "read" msgstr "" -#: extras/models/notifications.py:66 +#: netbox/extras/models/notifications.py:66 msgid "event" msgstr "" -#: extras/models/notifications.py:84 +#: netbox/extras/models/notifications.py:84 msgid "notification" msgstr "" -#: extras/models/notifications.py:85 +#: netbox/extras/models/notifications.py:85 msgid "notifications" msgstr "" -#: extras/models/notifications.py:99 extras/models/notifications.py:234 +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 #, python-brace-format msgid "Objects of this type ({type}) do not support notifications." msgstr "" -#: extras/models/notifications.py:137 users/models/users.py:58 -#: users/models/users.py:77 +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 msgid "groups" msgstr "" -#: extras/models/notifications.py:143 users/models/users.py:93 +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 msgid "users" msgstr "" -#: extras/models/notifications.py:152 +#: netbox/extras/models/notifications.py:152 msgid "notification group" msgstr "" -#: extras/models/notifications.py:153 +#: netbox/extras/models/notifications.py:153 msgid "notification groups" msgstr "" -#: extras/models/notifications.py:217 +#: netbox/extras/models/notifications.py:217 msgid "subscription" msgstr "" -#: extras/models/notifications.py:218 +#: netbox/extras/models/notifications.py:218 msgid "subscriptions" msgstr "" -#: extras/models/scripts.py:42 +#: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "" -#: extras/models/scripts.py:64 +#: netbox/extras/models/scripts.py:64 msgid "script" msgstr "" -#: extras/models/scripts.py:65 +#: netbox/extras/models/scripts.py:65 msgid "scripts" msgstr "" -#: extras/models/scripts.py:111 +#: netbox/extras/models/scripts.py:111 msgid "script module" msgstr "" -#: extras/models/scripts.py:112 +#: netbox/extras/models/scripts.py:112 msgid "script modules" msgstr "" -#: extras/models/search.py:22 +#: netbox/extras/models/search.py:22 msgid "timestamp" msgstr "" -#: extras/models/search.py:37 +#: netbox/extras/models/search.py:37 msgid "field" msgstr "" -#: extras/models/search.py:45 +#: netbox/extras/models/search.py:45 msgid "value" msgstr "" -#: extras/models/search.py:56 +#: netbox/extras/models/search.py:56 msgid "cached value" msgstr "" -#: extras/models/search.py:57 +#: netbox/extras/models/search.py:57 msgid "cached values" msgstr "" -#: extras/models/staging.py:44 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "" -#: extras/models/staging.py:45 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "" -#: extras/models/staging.py:97 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "" -#: extras/models/staging.py:98 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "" -#: extras/models/tags.py:40 +#: netbox/extras/models/tags.py:40 msgid "The object type(s) to which this tag can be applied." msgstr "" -#: extras/models/tags.py:49 +#: netbox/extras/models/tags.py:49 msgid "tag" msgstr "" -#: extras/models/tags.py:50 +#: netbox/extras/models/tags.py:50 msgid "tags" msgstr "" -#: extras/models/tags.py:78 +#: netbox/extras/models/tags.py:78 msgid "tagged item" msgstr "" -#: extras/models/tags.py:79 +#: netbox/extras/models/tags.py:79 msgid "tagged items" msgstr "" -#: extras/scripts.py:429 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "" -#: extras/scripts.py:433 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "" -#: extras/tables/columns.py:12 templates/htmx/notifications.html:18 +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 msgid "Dismiss" msgstr "" -#: extras/tables/tables.py:62 extras/tables/tables.py:159 -#: extras/tables/tables.py:184 extras/tables/tables.py:250 -#: extras/tables/tables.py:276 extras/tables/tables.py:412 -#: extras/tables/tables.py:446 templates/extras/customfield.html:105 -#: templates/extras/eventrule.html:27 templates/users/objectpermission.html:64 -#: users/tables.py:80 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 +#: netbox/templates/extras/eventrule.html:27 +#: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "" -#: extras/tables/tables.py:69 +#: netbox/extras/tables/tables.py:69 msgid "Validate Uniqueness" msgstr "" -#: extras/tables/tables.py:73 +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "" -#: extras/tables/tables.py:76 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "" -#: extras/tables/tables.py:82 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "" -#: extras/tables/tables.py:86 templates/extras/customfield.html:51 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "" -#: extras/tables/tables.py:94 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "" -#: extras/tables/tables.py:98 templates/extras/customfield.html:118 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 msgid "Minimum Value" msgstr "" -#: extras/tables/tables.py:101 templates/extras/customfield.html:122 +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 msgid "Maximum Value" msgstr "" -#: extras/tables/tables.py:104 +#: netbox/extras/tables/tables.py:104 msgid "Validation Regex" msgstr "" -#: extras/tables/tables.py:137 +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "" -#: extras/tables/tables.py:140 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "" -#: extras/tables/tables.py:165 templates/extras/customlink.html:33 +#: netbox/extras/tables/tables.py:165 +#: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "" -#: extras/tables/tables.py:187 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "" -#: extras/tables/tables.py:195 extras/tables/tables.py:487 -#: extras/tables/tables.py:522 templates/core/datafile.html:24 -#: templates/dcim/device/render_config.html:22 -#: templates/extras/configcontext.html:39 -#: templates/extras/configtemplate.html:31 -#: templates/extras/exporttemplate.html:45 -#: templates/generic/bulk_import.html:35 -#: templates/virtualization/virtualmachine/render_config.html:22 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 +#: netbox/templates/dcim/device/render_config.html:22 +#: netbox/templates/extras/configcontext.html:39 +#: netbox/templates/extras/configtemplate.html:31 +#: netbox/templates/extras/exporttemplate.html:45 +#: netbox/templates/generic/bulk_import.html:35 +#: netbox/templates/virtualization/virtualmachine/render_config.html:22 msgid "Data File" msgstr "" -#: extras/tables/tables.py:200 extras/tables/tables.py:499 -#: extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "" -#: extras/tables/tables.py:227 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "" -#: extras/tables/tables.py:232 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "" -#: extras/tables/tables.py:339 +#: netbox/extras/tables/tables.py:339 msgid "Read" msgstr "" -#: extras/tables/tables.py:382 +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "" -#: extras/tables/tables.py:418 templates/extras/eventrule.html:37 +#: netbox/extras/tables/tables.py:418 netbox/templates/extras/eventrule.html:37 msgid "Event Types" msgstr "" -#: extras/tables/tables.py:535 netbox/navigation/menu.py:77 -#: templates/dcim/devicerole.html:8 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 +#: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "" -#: extras/tables/tables.py:587 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "" -#: extras/tables/tables.py:606 extras/tables/tables.py:640 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "" -#: extras/tables/tables.py:613 extras/tables/tables.py:650 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "" -#: extras/tables/tables.py:619 extras/tables/tables.py:659 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "" -#: extras/tables/tables.py:643 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "" -#: extras/validators.py:15 +#: netbox/extras/validators.py:15 #, python-format msgid "Ensure this value is equal to %(limit_value)s." msgstr "" -#: extras/validators.py:26 +#: netbox/extras/validators.py:26 #, python-format msgid "Ensure this value does not equal %(limit_value)s." msgstr "" -#: extras/validators.py:37 +#: netbox/extras/validators.py:37 msgid "This field must be empty." msgstr "" -#: extras/validators.py:52 +#: netbox/extras/validators.py:52 msgid "This field must not be empty." msgstr "" -#: extras/validators.py:94 +#: netbox/extras/validators.py:94 msgid "Validation rules must be passed as a dictionary" msgstr "" -#: extras/validators.py:119 +#: netbox/extras/validators.py:119 #, python-brace-format msgid "Custom validation failed for {attribute}: {exception}" msgstr "" -#: extras/validators.py:133 +#: netbox/extras/validators.py:133 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "" -#: extras/validators.py:150 +#: netbox/extras/validators.py:150 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "" -#: extras/views.py:960 +#: netbox/extras/views.py:960 msgid "Your dashboard has been reset." msgstr "" -#: extras/views.py:1006 +#: netbox/extras/views.py:1006 msgid "Added widget: " msgstr "" -#: extras/views.py:1047 +#: netbox/extras/views.py:1047 msgid "Updated widget: " msgstr "" -#: extras/views.py:1083 +#: netbox/extras/views.py:1083 msgid "Deleted widget: " msgstr "" -#: extras/views.py:1085 +#: netbox/extras/views.py:1085 msgid "Error deleting widget: " msgstr "" -#: extras/views.py:1172 +#: netbox/extras/views.py:1172 msgid "Unable to run script: RQ worker process not running." msgstr "" -#: ipam/api/field_serializers.py:17 +#: netbox/ipam/api/field_serializers.py:17 msgid "Enter a valid IPv4 or IPv6 address with optional mask." msgstr "" -#: ipam/api/field_serializers.py:24 +#: netbox/ipam/api/field_serializers.py:24 #, python-brace-format msgid "Invalid IP address format: {data}" msgstr "" -#: ipam/api/field_serializers.py:37 +#: netbox/ipam/api/field_serializers.py:37 msgid "Enter a valid IPv4 or IPv6 prefix and mask in CIDR notation." msgstr "" -#: ipam/api/field_serializers.py:44 +#: netbox/ipam/api/field_serializers.py:44 #, python-brace-format msgid "Invalid IP prefix format: {data}" msgstr "" -#: ipam/api/views.py:358 +#: netbox/ipam/api/views.py:358 msgid "" "Insufficient space is available to accommodate the requested prefix size(s)" msgstr "" -#: ipam/choices.py:30 +#: netbox/ipam/choices.py:30 msgid "Container" msgstr "" -#: ipam/choices.py:72 +#: netbox/ipam/choices.py:72 msgid "DHCP" msgstr "" -#: ipam/choices.py:73 +#: netbox/ipam/choices.py:73 msgid "SLAAC" msgstr "" -#: ipam/choices.py:89 +#: netbox/ipam/choices.py:89 msgid "Loopback" msgstr "" -#: ipam/choices.py:91 +#: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "" -#: ipam/choices.py:115 +#: netbox/ipam/choices.py:115 msgid "Standard" msgstr "" -#: ipam/choices.py:120 +#: netbox/ipam/choices.py:120 msgid "CheckPoint" msgstr "" -#: ipam/choices.py:123 +#: netbox/ipam/choices.py:123 msgid "Cisco" msgstr "" -#: ipam/choices.py:137 +#: netbox/ipam/choices.py:137 msgid "Plaintext" msgstr "" -#: ipam/fields.py:36 +#: netbox/ipam/fields.py:36 #, python-brace-format msgid "Invalid IP address format: {address}" msgstr "" -#: ipam/filtersets.py:48 vpn/filtersets.py:304 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:304 msgid "Import target" msgstr "" -#: ipam/filtersets.py:54 vpn/filtersets.py:310 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:310 msgid "Import target (name)" msgstr "" -#: ipam/filtersets.py:59 vpn/filtersets.py:315 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:315 msgid "Export target" msgstr "" -#: ipam/filtersets.py:65 vpn/filtersets.py:321 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:321 msgid "Export target (name)" msgstr "" -#: ipam/filtersets.py:86 +#: netbox/ipam/filtersets.py:86 msgid "Importing VRF" msgstr "" -#: ipam/filtersets.py:92 +#: netbox/ipam/filtersets.py:92 msgid "Import VRF (RD)" msgstr "" -#: ipam/filtersets.py:97 +#: netbox/ipam/filtersets.py:97 msgid "Exporting VRF" msgstr "" -#: ipam/filtersets.py:103 +#: netbox/ipam/filtersets.py:103 msgid "Export VRF (RD)" msgstr "" -#: ipam/filtersets.py:108 +#: netbox/ipam/filtersets.py:108 msgid "Importing L2VPN" msgstr "" -#: ipam/filtersets.py:114 +#: netbox/ipam/filtersets.py:114 msgid "Importing L2VPN (identifier)" msgstr "" -#: ipam/filtersets.py:119 +#: netbox/ipam/filtersets.py:119 msgid "Exporting L2VPN" msgstr "" -#: ipam/filtersets.py:125 +#: netbox/ipam/filtersets.py:125 msgid "Exporting L2VPN (identifier)" msgstr "" -#: ipam/filtersets.py:155 ipam/filtersets.py:281 ipam/forms/model_forms.py:229 -#: ipam/tables/ip.py:212 templates/ipam/prefix.html:12 +#: netbox/ipam/filtersets.py:155 netbox/ipam/filtersets.py:281 +#: netbox/ipam/forms/model_forms.py:229 netbox/ipam/tables/ip.py:212 +#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "" -#: ipam/filtersets.py:159 ipam/filtersets.py:198 ipam/filtersets.py:221 +#: netbox/ipam/filtersets.py:159 netbox/ipam/filtersets.py:198 +#: netbox/ipam/filtersets.py:221 msgid "RIR (ID)" msgstr "" -#: ipam/filtersets.py:165 ipam/filtersets.py:204 ipam/filtersets.py:227 +#: netbox/ipam/filtersets.py:165 netbox/ipam/filtersets.py:204 +#: netbox/ipam/filtersets.py:227 msgid "RIR (slug)" msgstr "" -#: ipam/filtersets.py:285 +#: netbox/ipam/filtersets.py:285 msgid "Within prefix" msgstr "" -#: ipam/filtersets.py:289 +#: netbox/ipam/filtersets.py:289 msgid "Within and including prefix" msgstr "" -#: ipam/filtersets.py:293 +#: netbox/ipam/filtersets.py:293 msgid "Prefixes which contain this prefix or IP" msgstr "" -#: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:343 -#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 +#: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 +#: netbox/ipam/forms/bulk_edit.py:343 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "" -#: ipam/filtersets.py:373 vpn/filtersets.py:427 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:427 msgid "VLAN (ID)" msgstr "" -#: ipam/filtersets.py:377 vpn/filtersets.py:422 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:422 msgid "VLAN number (1-4094)" msgstr "" -#: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:463 templates/tenancy/contact.html:53 -#: tenancy/forms/bulk_edit.py:113 +#: netbox/ipam/filtersets.py:471 netbox/ipam/filtersets.py:475 +#: netbox/ipam/filtersets.py:567 netbox/ipam/forms/model_forms.py:463 +#: netbox/templates/tenancy/contact.html:53 +#: netbox/tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "" -#: ipam/filtersets.py:479 +#: netbox/ipam/filtersets.py:479 msgid "Ranges which contain this prefix or IP" msgstr "" -#: ipam/filtersets.py:507 ipam/filtersets.py:563 +#: netbox/ipam/filtersets.py:507 netbox/ipam/filtersets.py:563 msgid "Parent prefix" msgstr "" -#: ipam/filtersets.py:616 ipam/filtersets.py:856 ipam/filtersets.py:1131 -#: vpn/filtersets.py:385 +#: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 +#: netbox/ipam/filtersets.py:1131 netbox/vpn/filtersets.py:385 msgid "Virtual machine (name)" msgstr "" -#: ipam/filtersets.py:621 ipam/filtersets.py:861 ipam/filtersets.py:1125 -#: virtualization/filtersets.py:282 virtualization/filtersets.py:321 -#: vpn/filtersets.py:390 +#: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 +#: netbox/ipam/filtersets.py:1125 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:390 msgid "Virtual machine (ID)" msgstr "" -#: ipam/filtersets.py:627 vpn/filtersets.py:97 vpn/filtersets.py:396 +#: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 +#: netbox/vpn/filtersets.py:396 msgid "Interface (name)" msgstr "" -#: ipam/filtersets.py:638 vpn/filtersets.py:108 vpn/filtersets.py:407 +#: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 +#: netbox/vpn/filtersets.py:407 msgid "VM interface (name)" msgstr "" -#: ipam/filtersets.py:643 vpn/filtersets.py:113 +#: netbox/ipam/filtersets.py:643 netbox/vpn/filtersets.py:113 msgid "VM interface (ID)" msgstr "" -#: ipam/filtersets.py:648 +#: netbox/ipam/filtersets.py:648 msgid "FHRP group (ID)" msgstr "" -#: ipam/filtersets.py:652 +#: netbox/ipam/filtersets.py:652 msgid "Is assigned to an interface" msgstr "" -#: ipam/filtersets.py:656 +#: netbox/ipam/filtersets.py:656 msgid "Is assigned" msgstr "" -#: ipam/filtersets.py:668 +#: netbox/ipam/filtersets.py:668 msgid "Service (ID)" msgstr "" -#: ipam/filtersets.py:673 +#: netbox/ipam/filtersets.py:673 msgid "NAT inside IP address (ID)" msgstr "" -#: ipam/filtersets.py:1041 ipam/forms/bulk_import.py:322 +#: netbox/ipam/filtersets.py:1041 netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "" -#: ipam/filtersets.py:1046 +#: netbox/ipam/filtersets.py:1046 msgid "Assigned VM interface" msgstr "" -#: ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1136 msgid "IP address (ID)" msgstr "" -#: ipam/filtersets.py:1142 ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1142 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "" -#: ipam/filtersets.py:1167 +#: netbox/ipam/filtersets.py:1167 msgid "Primary IPv4 (ID)" msgstr "" -#: ipam/filtersets.py:1172 +#: netbox/ipam/filtersets.py:1172 msgid "Primary IPv6 (ID)" msgstr "" -#: ipam/formfields.py:14 +#: netbox/ipam/formfields.py:14 msgid "Enter a valid IPv4 or IPv6 address (without a mask)." msgstr "" -#: ipam/formfields.py:32 +#: netbox/ipam/formfields.py:32 #, python-brace-format msgid "Invalid IPv4/IPv6 address format: {address}" msgstr "" -#: ipam/formfields.py:37 +#: netbox/ipam/formfields.py:37 msgid "This field requires an IP address without a mask." msgstr "" -#: ipam/formfields.py:39 ipam/formfields.py:61 +#: netbox/ipam/formfields.py:39 netbox/ipam/formfields.py:61 msgid "Please specify a valid IPv4 or IPv6 address." msgstr "" -#: ipam/formfields.py:44 +#: netbox/ipam/formfields.py:44 msgid "Enter a valid IPv4 or IPv6 address (with CIDR mask)." msgstr "" -#: ipam/formfields.py:56 +#: netbox/ipam/formfields.py:56 msgid "CIDR mask (e.g. /24) is required." msgstr "" -#: ipam/forms/bulk_create.py:13 +#: netbox/ipam/forms/bulk_create.py:13 msgid "Address pattern" msgstr "" -#: ipam/forms/bulk_edit.py:50 +#: netbox/ipam/forms/bulk_edit.py:50 msgid "Enforce unique space" msgstr "" -#: ipam/forms/bulk_edit.py:88 +#: netbox/ipam/forms/bulk_edit.py:88 msgid "Is private" msgstr "" -#: ipam/forms/bulk_edit.py:109 ipam/forms/bulk_edit.py:138 -#: ipam/forms/bulk_edit.py:163 ipam/forms/bulk_import.py:89 -#: ipam/forms/bulk_import.py:109 ipam/forms/bulk_import.py:129 -#: ipam/forms/filtersets.py:110 ipam/forms/filtersets.py:125 -#: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:96 -#: ipam/forms/model_forms.py:109 ipam/forms/model_forms.py:131 -#: ipam/forms/model_forms.py:149 ipam/models/asns.py:31 ipam/models/asns.py:103 -#: ipam/models/ip.py:71 ipam/models/ip.py:90 ipam/tables/asn.py:20 -#: ipam/tables/asn.py:45 templates/ipam/aggregate.html:18 -#: templates/ipam/asn.html:27 templates/ipam/asnrange.html:19 -#: templates/ipam/rir.html:19 +#: netbox/ipam/forms/bulk_edit.py:109 netbox/ipam/forms/bulk_edit.py:138 +#: netbox/ipam/forms/bulk_edit.py:163 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 +#: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 +#: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 +#: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 +#: netbox/ipam/forms/model_forms.py:149 netbox/ipam/models/asns.py:31 +#: netbox/ipam/models/asns.py:103 netbox/ipam/models/ip.py:71 +#: netbox/ipam/models/ip.py:90 netbox/ipam/tables/asn.py:20 +#: netbox/ipam/tables/asn.py:45 netbox/templates/ipam/aggregate.html:18 +#: netbox/templates/ipam/asn.html:27 netbox/templates/ipam/asnrange.html:19 +#: netbox/templates/ipam/rir.html:19 msgid "RIR" msgstr "" -#: ipam/forms/bulk_edit.py:171 +#: netbox/ipam/forms/bulk_edit.py:171 msgid "Date added" msgstr "" -#: ipam/forms/bulk_edit.py:229 ipam/forms/model_forms.py:586 -#: ipam/forms/model_forms.py:633 ipam/tables/ip.py:251 -#: templates/ipam/vlan_edit.html:37 templates/ipam/vlangroup.html:27 +#: netbox/ipam/forms/bulk_edit.py:229 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 +#: netbox/templates/ipam/vlan_edit.html:37 +#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "" -#: ipam/forms/bulk_edit.py:234 ipam/forms/bulk_import.py:185 -#: ipam/forms/filtersets.py:256 ipam/forms/model_forms.py:218 -#: ipam/models/vlans.py:234 ipam/tables/ip.py:255 templates/ipam/prefix.html:60 -#: templates/ipam/vlan.html:12 templates/ipam/vlan/base.html:6 -#: templates/ipam/vlan_edit.html:10 templates/wireless/wirelesslan.html:30 -#: vpn/forms/bulk_import.py:304 vpn/forms/filtersets.py:284 -#: vpn/forms/model_forms.py:433 vpn/forms/model_forms.py:452 -#: wireless/forms/bulk_edit.py:55 wireless/forms/bulk_import.py:48 -#: wireless/forms/model_forms.py:48 wireless/models.py:102 +#: netbox/ipam/forms/bulk_edit.py:234 netbox/ipam/forms/bulk_import.py:185 +#: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 +#: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 +#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/templates/ipam/vlan_edit.html:10 +#: netbox/templates/wireless/wirelesslan.html:30 +#: netbox/vpn/forms/bulk_import.py:304 netbox/vpn/forms/filtersets.py:284 +#: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 +#: netbox/wireless/forms/bulk_edit.py:55 +#: netbox/wireless/forms/bulk_import.py:48 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "" -#: ipam/forms/bulk_edit.py:245 +#: netbox/ipam/forms/bulk_edit.py:245 msgid "Prefix length" msgstr "" -#: ipam/forms/bulk_edit.py:268 ipam/forms/filtersets.py:241 -#: templates/ipam/prefix.html:85 +#: netbox/ipam/forms/bulk_edit.py:268 netbox/ipam/forms/filtersets.py:241 +#: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "" -#: ipam/forms/bulk_edit.py:273 ipam/forms/bulk_edit.py:318 -#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 -#: ipam/models/ip.py:272 ipam/models/ip.py:539 +#: netbox/ipam/forms/bulk_edit.py:273 netbox/ipam/forms/bulk_edit.py:318 +#: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 +#: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "" -#: ipam/forms/bulk_edit.py:287 ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:287 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "" -#: ipam/forms/bulk_edit.py:366 ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:366 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "" -#: ipam/forms/bulk_edit.py:387 ipam/forms/bulk_edit.py:534 -#: ipam/forms/bulk_import.py:394 ipam/forms/bulk_import.py:469 -#: ipam/forms/bulk_import.py:495 ipam/forms/filtersets.py:390 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 -#: templates/ipam/inc/panels/fhrp_groups.html:24 templates/ipam/service.html:32 -#: templates/ipam/servicetemplate.html:19 +#: netbox/ipam/forms/bulk_edit.py:387 netbox/ipam/forms/bulk_edit.py:534 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 +#: netbox/templates/ipam/service.html:32 +#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "" -#: ipam/forms/bulk_edit.py:394 ipam/forms/filtersets.py:397 -#: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/forms/bulk_edit.py:394 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "" -#: ipam/forms/bulk_edit.py:399 ipam/forms/filtersets.py:402 -#: wireless/forms/bulk_edit.py:68 wireless/forms/bulk_edit.py:115 -#: wireless/forms/bulk_import.py:62 wireless/forms/bulk_import.py:65 -#: wireless/forms/bulk_import.py:104 wireless/forms/bulk_import.py:107 -#: wireless/forms/filtersets.py:54 wireless/forms/filtersets.py:88 +#: netbox/ipam/forms/bulk_edit.py:399 netbox/ipam/forms/filtersets.py:402 +#: netbox/wireless/forms/bulk_edit.py:68 netbox/wireless/forms/bulk_edit.py:115 +#: netbox/wireless/forms/bulk_import.py:62 +#: netbox/wireless/forms/bulk_import.py:65 +#: netbox/wireless/forms/bulk_import.py:104 +#: netbox/wireless/forms/bulk_import.py:107 +#: netbox/wireless/forms/filtersets.py:54 +#: netbox/wireless/forms/filtersets.py:88 msgid "Authentication type" msgstr "" -#: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:404 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "" -#: ipam/forms/bulk_edit.py:421 ipam/forms/filtersets.py:383 -#: ipam/forms/model_forms.py:474 netbox/navigation/menu.py:386 -#: templates/ipam/fhrpgroup.html:49 -#: templates/wireless/inc/authentication_attrs.html:5 -#: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:149 -#: wireless/forms/filtersets.py:36 wireless/forms/filtersets.py:76 -#: wireless/forms/model_forms.py:55 wireless/forms/model_forms.py:171 +#: netbox/ipam/forms/bulk_edit.py:421 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 +#: netbox/templates/ipam/fhrpgroup.html:49 +#: netbox/templates/wireless/inc/authentication_attrs.html:5 +#: netbox/wireless/forms/bulk_edit.py:91 netbox/wireless/forms/bulk_edit.py:149 +#: netbox/wireless/forms/filtersets.py:36 +#: netbox/wireless/forms/filtersets.py:76 +#: netbox/wireless/forms/model_forms.py:55 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "" -#: ipam/forms/bulk_edit.py:436 ipam/forms/model_forms.py:575 +#: netbox/ipam/forms/bulk_edit.py:436 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "" -#: ipam/forms/bulk_edit.py:439 ipam/forms/bulk_edit.py:453 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:588 -#: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 +#: netbox/ipam/forms/bulk_edit.py:439 netbox/ipam/forms/bulk_edit.py:453 +#: netbox/ipam/forms/model_forms.py:578 netbox/ipam/forms/model_forms.py:588 +#: netbox/ipam/tables/vlans.py:71 netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "" -#: ipam/forms/bulk_edit.py:446 ipam/models/vlans.py:60 +#: netbox/ipam/forms/bulk_edit.py:446 netbox/ipam/models/vlans.py:60 msgid "VLAN ID ranges" msgstr "" -#: ipam/forms/bulk_edit.py:525 +#: netbox/ipam/forms/bulk_edit.py:525 msgid "Site & Group" msgstr "" -#: ipam/forms/bulk_edit.py:539 ipam/forms/model_forms.py:659 -#: ipam/forms/model_forms.py:691 ipam/tables/services.py:19 -#: ipam/tables/services.py:49 templates/ipam/service.html:36 -#: templates/ipam/servicetemplate.html:23 +#: netbox/ipam/forms/bulk_edit.py:539 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 +#: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 +#: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "" -#: ipam/forms/bulk_import.py:48 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "" -#: ipam/forms/bulk_import.py:54 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "" -#: ipam/forms/bulk_import.py:92 ipam/forms/bulk_import.py:112 -#: ipam/forms/bulk_import.py:132 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "" -#: ipam/forms/bulk_import.py:182 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "" -#: ipam/forms/bulk_import.py:308 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "" -#: ipam/forms/bulk_import.py:311 ipam/forms/bulk_import.py:488 -#: ipam/forms/model_forms.py:685 virtualization/filtersets.py:288 -#: virtualization/filtersets.py:327 virtualization/forms/bulk_edit.py:200 -#: virtualization/forms/bulk_edit.py:326 -#: virtualization/forms/bulk_import.py:146 -#: virtualization/forms/bulk_import.py:207 -#: virtualization/forms/filtersets.py:212 -#: virtualization/forms/filtersets.py:248 -#: virtualization/forms/model_forms.py:288 vpn/forms/bulk_import.py:93 -#: vpn/forms/bulk_import.py:290 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 +#: netbox/virtualization/forms/bulk_edit.py:200 +#: netbox/virtualization/forms/bulk_edit.py:326 +#: netbox/virtualization/forms/bulk_import.py:146 +#: netbox/virtualization/forms/bulk_import.py:207 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 +#: netbox/virtualization/forms/model_forms.py:288 +#: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "" -#: ipam/forms/bulk_import.py:315 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "" -#: ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "" -#: ipam/forms/bulk_import.py:326 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "" -#: ipam/forms/bulk_import.py:365 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" -#: ipam/forms/bulk_import.py:369 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "" -#: ipam/forms/bulk_import.py:398 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "" -#: ipam/forms/bulk_import.py:413 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "" -#: ipam/forms/bulk_import.py:440 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "" -#: ipam/forms/bulk_import.py:471 ipam/forms/bulk_import.py:497 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "" -#: ipam/forms/bulk_import.py:485 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "" -#: ipam/forms/bulk_import.py:492 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "" -#: ipam/forms/bulk_import.py:517 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "" -#: ipam/forms/filtersets.py:47 ipam/forms/model_forms.py:63 -#: netbox/navigation/menu.py:189 vpn/forms/model_forms.py:410 +#: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "" -#: ipam/forms/filtersets.py:53 ipam/forms/model_forms.py:50 -#: vpn/forms/filtersets.py:224 vpn/forms/model_forms.py:397 +#: netbox/ipam/forms/filtersets.py:53 netbox/ipam/forms/model_forms.py:50 +#: netbox/vpn/forms/filtersets.py:224 netbox/vpn/forms/model_forms.py:397 msgid "Import targets" msgstr "" -#: ipam/forms/filtersets.py:58 ipam/forms/model_forms.py:55 -#: vpn/forms/filtersets.py:229 vpn/forms/model_forms.py:402 +#: netbox/ipam/forms/filtersets.py:58 netbox/ipam/forms/model_forms.py:55 +#: netbox/vpn/forms/filtersets.py:229 netbox/vpn/forms/model_forms.py:402 msgid "Export targets" msgstr "" -#: ipam/forms/filtersets.py:73 +#: netbox/ipam/forms/filtersets.py:73 msgid "Imported by VRF" msgstr "" -#: ipam/forms/filtersets.py:78 +#: netbox/ipam/forms/filtersets.py:78 msgid "Exported by VRF" msgstr "" -#: ipam/forms/filtersets.py:87 ipam/tables/ip.py:89 templates/ipam/rir.html:30 +#: netbox/ipam/forms/filtersets.py:87 netbox/ipam/tables/ip.py:89 +#: netbox/templates/ipam/rir.html:30 msgid "Private" msgstr "" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 -#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 +#: netbox/ipam/forms/filtersets.py:105 netbox/ipam/forms/filtersets.py:191 +#: netbox/ipam/forms/filtersets.py:272 netbox/ipam/forms/filtersets.py:326 msgid "Address family" msgstr "" -#: ipam/forms/filtersets.py:119 templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:119 netbox/templates/ipam/asnrange.html:25 msgid "Range" msgstr "" -#: ipam/forms/filtersets.py:128 +#: netbox/ipam/forms/filtersets.py:128 msgid "Start" msgstr "" -#: ipam/forms/filtersets.py:132 +#: netbox/ipam/forms/filtersets.py:132 msgid "End" msgstr "" -#: ipam/forms/filtersets.py:186 +#: netbox/ipam/forms/filtersets.py:186 msgid "Search within" msgstr "" -#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 +#: netbox/ipam/forms/filtersets.py:207 netbox/ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "" -#: ipam/forms/filtersets.py:311 +#: netbox/ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "" -#: ipam/forms/filtersets.py:321 +#: netbox/ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "" -#: ipam/forms/filtersets.py:347 +#: netbox/ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "" -#: ipam/forms/filtersets.py:352 +#: netbox/ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "" -#: ipam/forms/filtersets.py:366 +#: netbox/ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "" -#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:373 netbox/templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "" -#: ipam/forms/filtersets.py:416 ipam/models/vlans.py:235 ipam/tables/ip.py:176 -#: ipam/tables/vlans.py:82 ipam/views.py:971 netbox/navigation/menu.py:193 -#: netbox/navigation/menu.py:195 +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 msgid "VLANs" msgstr "" -#: ipam/forms/filtersets.py:457 +#: netbox/ipam/forms/filtersets.py:457 msgid "Contains VLAN ID" msgstr "" -#: ipam/forms/filtersets.py:513 ipam/models/vlans.py:176 -#: templates/ipam/vlan.html:31 +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:320 -#: ipam/forms/model_forms.py:713 ipam/forms/model_forms.py:739 -#: ipam/tables/vlans.py:195 templates/virtualization/virtualdisk.html:21 -#: templates/virtualization/virtualmachine.html:12 -#: templates/virtualization/vminterface.html:21 -#: templates/vpn/tunneltermination.html:25 -#: virtualization/forms/filtersets.py:197 -#: virtualization/forms/filtersets.py:242 -#: virtualization/forms/model_forms.py:220 -#: virtualization/tables/virtualmachines.py:135 -#: virtualization/tables/virtualmachines.py:190 vpn/choices.py:45 -#: vpn/forms/filtersets.py:293 vpn/forms/model_forms.py:160 -#: vpn/forms/model_forms.py:171 vpn/forms/model_forms.py:273 -#: vpn/forms/model_forms.py:454 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 +#: netbox/templates/virtualization/virtualdisk.html:21 +#: netbox/templates/virtualization/virtualmachine.html:12 +#: netbox/templates/virtualization/vminterface.html:21 +#: netbox/templates/vpn/tunneltermination.html:25 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 +#: netbox/virtualization/forms/model_forms.py:220 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 netbox/vpn/choices.py:45 +#: netbox/vpn/forms/filtersets.py:293 netbox/vpn/forms/model_forms.py:160 +#: netbox/vpn/forms/model_forms.py:171 netbox/vpn/forms/model_forms.py:273 +#: netbox/vpn/forms/model_forms.py:454 msgid "Virtual Machine" msgstr "" -#: ipam/forms/model_forms.py:80 templates/ipam/routetarget.html:10 +#: netbox/ipam/forms/model_forms.py:80 +#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "" -#: ipam/forms/model_forms.py:114 ipam/tables/ip.py:117 -#: templates/ipam/aggregate.html:11 templates/ipam/prefix.html:38 +#: netbox/ipam/forms/model_forms.py:114 netbox/ipam/tables/ip.py:117 +#: netbox/templates/ipam/aggregate.html:11 netbox/templates/ipam/prefix.html:38 msgid "Aggregate" msgstr "" -#: ipam/forms/model_forms.py:135 templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:135 netbox/templates/ipam/asnrange.html:12 msgid "ASN Range" msgstr "" -#: ipam/forms/model_forms.py:231 +#: netbox/ipam/forms/model_forms.py:231 msgid "Site/VLAN Assignment" msgstr "" -#: ipam/forms/model_forms.py:259 templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:259 netbox/templates/ipam/iprange.html:10 msgid "IP Range" msgstr "" -#: ipam/forms/model_forms.py:295 ipam/forms/model_forms.py:321 -#: ipam/forms/model_forms.py:473 templates/ipam/fhrpgroup.html:19 +#: netbox/ipam/forms/model_forms.py:295 netbox/ipam/forms/model_forms.py:321 +#: netbox/ipam/forms/model_forms.py:473 netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "" -#: ipam/forms/model_forms.py:310 +#: netbox/ipam/forms/model_forms.py:310 msgid "Make this the primary IP for the device/VM" msgstr "" -#: ipam/forms/model_forms.py:325 +#: netbox/ipam/forms/model_forms.py:325 msgid "NAT IP (Inside)" msgstr "" -#: ipam/forms/model_forms.py:384 +#: netbox/ipam/forms/model_forms.py:384 msgid "An IP address can only be assigned to a single object." msgstr "" -#: ipam/forms/model_forms.py:390 ipam/models/ip.py:897 +#: netbox/ipam/forms/model_forms.py:390 netbox/ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" msgstr "" -#: ipam/forms/model_forms.py:400 +#: netbox/ipam/forms/model_forms.py:400 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" -#: ipam/forms/model_forms.py:475 +#: netbox/ipam/forms/model_forms.py:475 msgid "Virtual IP Address" msgstr "" -#: ipam/forms/model_forms.py:560 +#: netbox/ipam/forms/model_forms.py:560 msgid "Assignment already exists" msgstr "" -#: ipam/forms/model_forms.py:569 templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:569 netbox/templates/ipam/vlangroup.html:42 msgid "VLAN IDs" msgstr "" -#: ipam/forms/model_forms.py:587 +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "" -#: ipam/forms/model_forms.py:664 ipam/forms/model_forms.py:696 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." msgstr "" -#: ipam/forms/model_forms.py:669 templates/ipam/servicetemplate.html:12 +#: netbox/ipam/forms/model_forms.py:669 +#: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "" -#: ipam/forms/model_forms.py:716 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "" -#: ipam/forms/model_forms.py:717 ipam/forms/model_forms.py:745 -#: templates/ipam/service.html:21 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 +#: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "" -#: ipam/forms/model_forms.py:730 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "" -#: ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "" -#: ipam/forms/model_forms.py:743 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "" -#: ipam/forms/model_forms.py:773 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" -#: ipam/models/asns.py:34 +#: netbox/ipam/models/asns.py:34 msgid "start" msgstr "" -#: ipam/models/asns.py:51 +#: netbox/ipam/models/asns.py:51 msgid "ASN range" msgstr "" -#: ipam/models/asns.py:52 +#: netbox/ipam/models/asns.py:52 msgid "ASN ranges" msgstr "" -#: ipam/models/asns.py:72 +#: netbox/ipam/models/asns.py:72 #, python-brace-format msgid "Starting ASN ({start}) must be lower than ending ASN ({end})." msgstr "" -#: ipam/models/asns.py:104 +#: netbox/ipam/models/asns.py:104 msgid "Regional Internet Registry responsible for this AS number space" msgstr "" -#: ipam/models/asns.py:109 +#: netbox/ipam/models/asns.py:109 msgid "16- or 32-bit autonomous system number" msgstr "" -#: ipam/models/fhrp.py:22 +#: netbox/ipam/models/fhrp.py:22 msgid "group ID" msgstr "" -#: ipam/models/fhrp.py:30 ipam/models/services.py:22 +#: netbox/ipam/models/fhrp.py:30 netbox/ipam/models/services.py:22 msgid "protocol" msgstr "" -#: ipam/models/fhrp.py:38 wireless/models.py:28 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "" -#: ipam/models/fhrp.py:43 +#: netbox/ipam/models/fhrp.py:43 msgid "authentication key" msgstr "" -#: ipam/models/fhrp.py:56 +#: netbox/ipam/models/fhrp.py:56 msgid "FHRP group" msgstr "" -#: ipam/models/fhrp.py:57 +#: netbox/ipam/models/fhrp.py:57 msgid "FHRP groups" msgstr "" -#: ipam/models/fhrp.py:113 +#: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "" -#: ipam/models/fhrp.py:114 +#: netbox/ipam/models/fhrp.py:114 msgid "FHRP group assignments" msgstr "" -#: ipam/models/ip.py:65 +#: netbox/ipam/models/ip.py:65 msgid "private" msgstr "" -#: ipam/models/ip.py:66 +#: netbox/ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "" -#: ipam/models/ip.py:72 netbox/navigation/menu.py:182 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "" -#: ipam/models/ip.py:84 +#: netbox/ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "" -#: ipam/models/ip.py:91 +#: netbox/ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "" -#: ipam/models/ip.py:101 +#: netbox/ipam/models/ip.py:101 msgid "date added" msgstr "" -#: ipam/models/ip.py:115 +#: netbox/ipam/models/ip.py:115 msgid "aggregate" msgstr "" -#: ipam/models/ip.py:116 +#: netbox/ipam/models/ip.py:116 msgid "aggregates" msgstr "" -#: ipam/models/ip.py:132 +#: netbox/ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "" -#: ipam/models/ip.py:144 +#: netbox/ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " "aggregate ({aggregate})." msgstr "" -#: ipam/models/ip.py:158 +#: netbox/ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " "({aggregate})." msgstr "" -#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 +#: netbox/ipam/models/ip.py:200 netbox/ipam/models/ip.py:737 +#: netbox/vpn/models/tunnels.py:114 msgid "role" msgstr "" -#: ipam/models/ip.py:201 +#: netbox/ipam/models/ip.py:201 msgid "roles" msgstr "" -#: ipam/models/ip.py:217 ipam/models/ip.py:293 +#: netbox/ipam/models/ip.py:217 netbox/ipam/models/ip.py:293 msgid "prefix" msgstr "" -#: ipam/models/ip.py:218 +#: netbox/ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "" -#: ipam/models/ip.py:254 +#: netbox/ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "" -#: ipam/models/ip.py:262 +#: netbox/ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "" -#: ipam/models/ip.py:265 +#: netbox/ipam/models/ip.py:265 msgid "is a pool" msgstr "" -#: ipam/models/ip.py:267 +#: netbox/ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "" -#: ipam/models/ip.py:270 ipam/models/ip.py:537 +#: netbox/ipam/models/ip.py:270 netbox/ipam/models/ip.py:537 msgid "mark utilized" msgstr "" -#: ipam/models/ip.py:294 +#: netbox/ipam/models/ip.py:294 msgid "prefixes" msgstr "" -#: ipam/models/ip.py:317 +#: netbox/ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "" -#: ipam/models/ip.py:324 ipam/models/ip.py:874 +#: netbox/ipam/models/ip.py:324 netbox/ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "" -#: ipam/models/ip.py:324 ipam/models/ip.py:874 +#: netbox/ipam/models/ip.py:324 netbox/ipam/models/ip.py:874 msgid "global table" msgstr "" -#: ipam/models/ip.py:326 +#: netbox/ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "" -#: ipam/models/ip.py:495 +#: netbox/ipam/models/ip.py:495 msgid "start address" msgstr "" -#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 +#: netbox/ipam/models/ip.py:496 netbox/ipam/models/ip.py:500 +#: netbox/ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "" -#: ipam/models/ip.py:499 +#: netbox/ipam/models/ip.py:499 msgid "end address" msgstr "" -#: ipam/models/ip.py:526 +#: netbox/ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "" -#: ipam/models/ip.py:534 +#: netbox/ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "" -#: ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:548 msgid "IP range" msgstr "" -#: ipam/models/ip.py:549 +#: netbox/ipam/models/ip.py:549 msgid "IP ranges" msgstr "" -#: ipam/models/ip.py:565 +#: netbox/ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "" -#: ipam/models/ip.py:571 +#: netbox/ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "" -#: ipam/models/ip.py:578 +#: netbox/ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" -#: ipam/models/ip.py:590 +#: netbox/ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" -#: ipam/models/ip.py:599 +#: netbox/ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" -#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 +#: netbox/ipam/models/ip.py:711 netbox/tenancy/models/contacts.py:82 msgid "address" msgstr "" -#: ipam/models/ip.py:734 +#: netbox/ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "" -#: ipam/models/ip.py:741 +#: netbox/ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "" -#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:765 netbox/templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "" -#: ipam/models/ip.py:766 +#: netbox/ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "" -#: ipam/models/ip.py:773 +#: netbox/ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "" -#: ipam/models/ip.py:789 ipam/models/services.py:94 +#: netbox/ipam/models/ip.py:789 netbox/ipam/models/services.py:94 msgid "IP addresses" msgstr "" -#: ipam/models/ip.py:845 +#: netbox/ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "" -#: ipam/models/ip.py:851 +#: netbox/ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" -#: ipam/models/ip.py:862 +#: netbox/ipam/models/ip.py:862 #, python-brace-format msgid "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "" -#: ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "" -#: ipam/models/ip.py:903 +#: netbox/ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "" -#: ipam/models/services.py:33 +#: netbox/ipam/models/services.py:33 msgid "port numbers" msgstr "" -#: ipam/models/services.py:59 +#: netbox/ipam/models/services.py:59 msgid "service template" msgstr "" -#: ipam/models/services.py:60 +#: netbox/ipam/models/services.py:60 msgid "service templates" msgstr "" -#: ipam/models/services.py:95 +#: netbox/ipam/models/services.py:95 msgid "The specific IP addresses (if any) to which this service is bound" msgstr "" -#: ipam/models/services.py:102 +#: netbox/ipam/models/services.py:102 msgid "service" msgstr "" -#: ipam/models/services.py:103 +#: netbox/ipam/models/services.py:103 msgid "services" msgstr "" -#: ipam/models/services.py:117 +#: netbox/ipam/models/services.py:117 msgid "" "A service cannot be associated with both a device and a virtual machine." msgstr "" -#: ipam/models/services.py:119 +#: netbox/ipam/models/services.py:119 msgid "A service must be associated with either a device or a virtual machine." msgstr "" -#: ipam/models/vlans.py:85 +#: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "" -#: ipam/models/vlans.py:95 +#: netbox/ipam/models/vlans.py:95 msgid "Cannot set scope_type without scope_id." msgstr "" -#: ipam/models/vlans.py:97 +#: netbox/ipam/models/vlans.py:97 msgid "Cannot set scope_id without scope_type." msgstr "" -#: ipam/models/vlans.py:101 +#: netbox/ipam/models/vlans.py:101 msgid "Ranges cannot overlap." msgstr "" -#: ipam/models/vlans.py:106 +#: netbox/ipam/models/vlans.py:106 #, python-brace-format msgid "" "Maximum child VID must be greater than or equal to minimum child VID " "({value})" msgstr "" -#: ipam/models/vlans.py:165 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "" -#: ipam/models/vlans.py:173 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "" -#: ipam/models/vlans.py:181 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "" -#: ipam/models/vlans.py:199 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "" -#: ipam/models/vlans.py:207 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "" -#: ipam/models/vlans.py:250 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " "site {site}." msgstr "" -#: ipam/models/vlans.py:259 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format msgid "VID must be in ranges {ranges} for VLANs in group {group}" msgstr "" -#: ipam/models/vrfs.py:30 +#: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" msgstr "" -#: ipam/models/vrfs.py:31 +#: netbox/ipam/models/vrfs.py:31 msgid "Unique route distinguisher (as defined in RFC 4364)" msgstr "" -#: ipam/models/vrfs.py:42 +#: netbox/ipam/models/vrfs.py:42 msgid "enforce unique space" msgstr "" -#: ipam/models/vrfs.py:43 +#: netbox/ipam/models/vrfs.py:43 msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "" -#: ipam/models/vrfs.py:63 netbox/navigation/menu.py:186 -#: netbox/navigation/menu.py:188 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "" -#: ipam/models/vrfs.py:82 +#: netbox/ipam/models/vrfs.py:82 msgid "Route target value (formatted in accordance with RFC 4360)" msgstr "" -#: ipam/models/vrfs.py:94 +#: netbox/ipam/models/vrfs.py:94 msgid "route target" msgstr "" -#: ipam/models/vrfs.py:95 +#: netbox/ipam/models/vrfs.py:95 msgid "route targets" msgstr "" -#: ipam/tables/asn.py:52 +#: netbox/ipam/tables/asn.py:52 msgid "ASDOT" msgstr "" -#: ipam/tables/asn.py:57 +#: netbox/ipam/tables/asn.py:57 msgid "Site Count" msgstr "" -#: ipam/tables/asn.py:62 +#: netbox/ipam/tables/asn.py:62 msgid "Provider Count" msgstr "" -#: ipam/tables/ip.py:95 netbox/navigation/menu.py:179 -#: netbox/navigation/menu.py:181 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "" -#: ipam/tables/ip.py:125 +#: netbox/ipam/tables/ip.py:125 msgid "Added" msgstr "" -#: ipam/tables/ip.py:128 ipam/tables/ip.py:166 ipam/tables/vlans.py:142 -#: ipam/views.py:346 netbox/navigation/menu.py:165 -#: netbox/navigation/menu.py:167 templates/ipam/vlan.html:84 +#: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 +#: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "" -#: ipam/tables/ip.py:131 ipam/tables/ip.py:270 ipam/tables/ip.py:324 -#: ipam/tables/vlans.py:86 templates/dcim/device.html:260 -#: templates/ipam/aggregate.html:24 templates/ipam/iprange.html:29 -#: templates/ipam/prefix.html:106 +#: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 +#: netbox/templates/dcim/device.html:260 +#: netbox/templates/ipam/aggregate.html:24 +#: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "" -#: ipam/tables/ip.py:171 netbox/navigation/menu.py:161 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "" -#: ipam/tables/ip.py:221 +#: netbox/ipam/tables/ip.py:221 msgid "Prefix (Flat)" msgstr "" -#: ipam/tables/ip.py:225 +#: netbox/ipam/tables/ip.py:225 msgid "Depth" msgstr "" -#: ipam/tables/ip.py:262 +#: netbox/ipam/tables/ip.py:262 msgid "Pool" msgstr "" -#: ipam/tables/ip.py:266 ipam/tables/ip.py:320 +#: netbox/ipam/tables/ip.py:266 netbox/ipam/tables/ip.py:320 msgid "Marked Utilized" msgstr "" -#: ipam/tables/ip.py:304 +#: netbox/ipam/tables/ip.py:304 msgid "Start address" msgstr "" -#: ipam/tables/ip.py:383 +#: netbox/ipam/tables/ip.py:383 msgid "NAT (Inside)" msgstr "" -#: ipam/tables/ip.py:388 +#: netbox/ipam/tables/ip.py:388 msgid "NAT (Outside)" msgstr "" -#: ipam/tables/ip.py:393 +#: netbox/ipam/tables/ip.py:393 msgid "Assigned" msgstr "" -#: ipam/tables/ip.py:429 templates/vpn/l2vpntermination.html:16 -#: vpn/forms/filtersets.py:240 +#: netbox/ipam/tables/ip.py:429 netbox/templates/vpn/l2vpntermination.html:16 +#: netbox/vpn/forms/filtersets.py:240 msgid "Assigned Object" msgstr "" -#: ipam/tables/vlans.py:68 +#: netbox/ipam/tables/vlans.py:68 msgid "Scope Type" msgstr "" -#: ipam/tables/vlans.py:76 +#: netbox/ipam/tables/vlans.py:76 msgid "VID Ranges" msgstr "" -#: ipam/tables/vlans.py:111 ipam/tables/vlans.py:214 -#: templates/dcim/inc/interface_vlans_table.html:4 +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 +#: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "" -#: ipam/tables/vrfs.py:30 +#: netbox/ipam/tables/vrfs.py:30 msgid "RD" msgstr "" -#: ipam/tables/vrfs.py:33 +#: netbox/ipam/tables/vrfs.py:33 msgid "Unique" msgstr "" -#: ipam/tables/vrfs.py:37 vpn/tables/l2vpn.py:27 +#: netbox/ipam/tables/vrfs.py:37 netbox/vpn/tables/l2vpn.py:27 msgid "Import Targets" msgstr "" -#: ipam/tables/vrfs.py:42 vpn/tables/l2vpn.py:32 +#: netbox/ipam/tables/vrfs.py:42 netbox/vpn/tables/l2vpn.py:32 msgid "Export Targets" msgstr "" -#: ipam/validators.py:9 +#: netbox/ipam/validators.py:9 #, python-brace-format msgid "{prefix} is not a valid prefix. Did you mean {suggested}?" msgstr "" -#: ipam/validators.py:16 +#: netbox/ipam/validators.py:16 #, python-format msgid "The prefix length must be less than or equal to %(limit_value)s." msgstr "" -#: ipam/validators.py:24 +#: netbox/ipam/validators.py:24 #, python-format msgid "The prefix length must be greater than or equal to %(limit_value)s." msgstr "" -#: ipam/validators.py:33 +#: netbox/ipam/validators.py:33 msgid "" "Only alphanumeric characters, asterisks, hyphens, periods, and underscores " "are allowed in DNS names" msgstr "" -#: ipam/views.py:533 +#: netbox/ipam/views.py:533 msgid "Child Prefixes" msgstr "" -#: ipam/views.py:569 +#: netbox/ipam/views.py:569 msgid "Child Ranges" msgstr "" -#: ipam/views.py:898 +#: netbox/ipam/views.py:898 msgid "Related IPs" msgstr "" -#: ipam/views.py:1127 +#: netbox/ipam/views.py:1127 msgid "Device Interfaces" msgstr "" -#: ipam/views.py:1145 +#: netbox/ipam/views.py:1145 msgid "VM Interfaces" msgstr "" -#: netbox/api/fields.py:65 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "" -#: netbox/api/fields.py:70 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." msgstr "" -#: netbox/api/fields.py:91 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "" -#: netbox/api/fields.py:104 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "" -#: netbox/api/fields.py:105 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" -#: netbox/api/fields.py:167 +#: netbox/netbox/api/fields.py:167 msgid "Ranges must be specified in the form (lower, upper)." msgstr "" -#: netbox/api/fields.py:169 +#: netbox/netbox/api/fields.py:169 msgid "Range boundaries must be defined as integers." msgstr "" -#: netbox/api/serializers/fields.py:40 +#: netbox/netbox/api/serializers/fields.py:40 #, python-brace-format msgid "{class_name} must implement get_view_name()" msgstr "" -#: netbox/authentication/__init__.py:138 +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "" -#: netbox/choices.py:49 +#: netbox/netbox/choices.py:49 msgid "Dark Red" msgstr "" -#: netbox/choices.py:52 +#: netbox/netbox/choices.py:52 msgid "Rose" msgstr "" -#: netbox/choices.py:53 +#: netbox/netbox/choices.py:53 msgid "Fuchsia" msgstr "" -#: netbox/choices.py:55 +#: netbox/netbox/choices.py:55 msgid "Dark Purple" msgstr "" -#: netbox/choices.py:58 +#: netbox/netbox/choices.py:58 msgid "Light Blue" msgstr "" -#: netbox/choices.py:61 +#: netbox/netbox/choices.py:61 msgid "Aqua" msgstr "" -#: netbox/choices.py:62 +#: netbox/netbox/choices.py:62 msgid "Dark Green" msgstr "" -#: netbox/choices.py:64 +#: netbox/netbox/choices.py:64 msgid "Light Green" msgstr "" -#: netbox/choices.py:65 +#: netbox/netbox/choices.py:65 msgid "Lime" msgstr "" -#: netbox/choices.py:67 +#: netbox/netbox/choices.py:67 msgid "Amber" msgstr "" -#: netbox/choices.py:69 +#: netbox/netbox/choices.py:69 msgid "Dark Orange" msgstr "" -#: netbox/choices.py:70 +#: netbox/netbox/choices.py:70 msgid "Brown" msgstr "" -#: netbox/choices.py:71 +#: netbox/netbox/choices.py:71 msgid "Light Grey" msgstr "" -#: netbox/choices.py:72 +#: netbox/netbox/choices.py:72 msgid "Grey" msgstr "" -#: netbox/choices.py:73 +#: netbox/netbox/choices.py:73 msgid "Dark Grey" msgstr "" -#: netbox/choices.py:128 +#: netbox/netbox/choices.py:128 msgid "Direct" msgstr "" -#: netbox/choices.py:129 +#: netbox/netbox/choices.py:129 msgid "Upload" msgstr "" -#: netbox/choices.py:141 netbox/choices.py:155 +#: netbox/netbox/choices.py:141 netbox/netbox/choices.py:155 msgid "Auto-detect" msgstr "" -#: netbox/choices.py:156 +#: netbox/netbox/choices.py:156 msgid "Comma" msgstr "" -#: netbox/choices.py:157 +#: netbox/netbox/choices.py:157 msgid "Semicolon" msgstr "" -#: netbox/choices.py:158 +#: netbox/netbox/choices.py:158 msgid "Tab" msgstr "" -#: netbox/config/__init__.py:67 +#: netbox/netbox/config/__init__.py:67 #, python-brace-format msgid "Invalid configuration parameter: {item}" msgstr "" -#: netbox/config/parameters.py:22 templates/core/inc/config_data.html:62 +#: netbox/netbox/config/parameters.py:22 +#: netbox/templates/core/inc/config_data.html:62 msgid "Login banner" msgstr "" -#: netbox/config/parameters.py:24 +#: netbox/netbox/config/parameters.py:24 msgid "Additional content to display on the login page" msgstr "" -#: netbox/config/parameters.py:33 templates/core/inc/config_data.html:66 +#: netbox/netbox/config/parameters.py:33 +#: netbox/templates/core/inc/config_data.html:66 msgid "Maintenance banner" msgstr "" -#: netbox/config/parameters.py:35 +#: netbox/netbox/config/parameters.py:35 msgid "Additional content to display when in maintenance mode" msgstr "" -#: netbox/config/parameters.py:44 templates/core/inc/config_data.html:70 +#: netbox/netbox/config/parameters.py:44 +#: netbox/templates/core/inc/config_data.html:70 msgid "Top banner" msgstr "" -#: netbox/config/parameters.py:46 +#: netbox/netbox/config/parameters.py:46 msgid "Additional content to display at the top of every page" msgstr "" -#: netbox/config/parameters.py:55 templates/core/inc/config_data.html:74 +#: netbox/netbox/config/parameters.py:55 +#: netbox/templates/core/inc/config_data.html:74 msgid "Bottom banner" msgstr "" -#: netbox/config/parameters.py:57 +#: netbox/netbox/config/parameters.py:57 msgid "Additional content to display at the bottom of every page" msgstr "" -#: netbox/config/parameters.py:68 +#: netbox/netbox/config/parameters.py:68 msgid "Globally unique IP space" msgstr "" -#: netbox/config/parameters.py:70 +#: netbox/netbox/config/parameters.py:70 msgid "Enforce unique IP addressing within the global table" msgstr "" -#: netbox/config/parameters.py:75 templates/core/inc/config_data.html:44 +#: netbox/netbox/config/parameters.py:75 +#: netbox/templates/core/inc/config_data.html:44 msgid "Prefer IPv4" msgstr "" -#: netbox/config/parameters.py:77 +#: netbox/netbox/config/parameters.py:77 msgid "Prefer IPv4 addresses over IPv6" msgstr "" -#: netbox/config/parameters.py:84 +#: netbox/netbox/config/parameters.py:84 msgid "Rack unit height" msgstr "" -#: netbox/config/parameters.py:86 +#: netbox/netbox/config/parameters.py:86 msgid "Default unit height for rendered rack elevations" msgstr "" -#: netbox/config/parameters.py:91 +#: netbox/netbox/config/parameters.py:91 msgid "Rack unit width" msgstr "" -#: netbox/config/parameters.py:93 +#: netbox/netbox/config/parameters.py:93 msgid "Default unit width for rendered rack elevations" msgstr "" -#: netbox/config/parameters.py:100 +#: netbox/netbox/config/parameters.py:100 msgid "Powerfeed voltage" msgstr "" -#: netbox/config/parameters.py:102 +#: netbox/netbox/config/parameters.py:102 msgid "Default voltage for powerfeeds" msgstr "" -#: netbox/config/parameters.py:107 +#: netbox/netbox/config/parameters.py:107 msgid "Powerfeed amperage" msgstr "" -#: netbox/config/parameters.py:109 +#: netbox/netbox/config/parameters.py:109 msgid "Default amperage for powerfeeds" msgstr "" -#: netbox/config/parameters.py:114 +#: netbox/netbox/config/parameters.py:114 msgid "Powerfeed max utilization" msgstr "" -#: netbox/config/parameters.py:116 +#: netbox/netbox/config/parameters.py:116 msgid "Default max utilization for powerfeeds" msgstr "" -#: netbox/config/parameters.py:123 templates/core/inc/config_data.html:53 +#: netbox/netbox/config/parameters.py:123 +#: netbox/templates/core/inc/config_data.html:53 msgid "Allowed URL schemes" msgstr "" -#: netbox/config/parameters.py:128 +#: netbox/netbox/config/parameters.py:128 msgid "Permitted schemes for URLs in user-provided content" msgstr "" -#: netbox/config/parameters.py:136 +#: netbox/netbox/config/parameters.py:136 msgid "Default page size" msgstr "" -#: netbox/config/parameters.py:142 +#: netbox/netbox/config/parameters.py:142 msgid "Maximum page size" msgstr "" -#: netbox/config/parameters.py:150 templates/core/inc/config_data.html:96 +#: netbox/netbox/config/parameters.py:150 +#: netbox/templates/core/inc/config_data.html:96 msgid "Custom validators" msgstr "" -#: netbox/config/parameters.py:152 +#: netbox/netbox/config/parameters.py:152 msgid "Custom validation rules (JSON)" msgstr "" -#: netbox/config/parameters.py:160 templates/core/inc/config_data.html:104 +#: netbox/netbox/config/parameters.py:160 +#: netbox/templates/core/inc/config_data.html:104 msgid "Protection rules" msgstr "" -#: netbox/config/parameters.py:162 +#: netbox/netbox/config/parameters.py:162 msgid "Deletion protection rules (JSON)" msgstr "" -#: netbox/config/parameters.py:172 templates/core/inc/config_data.html:117 +#: netbox/netbox/config/parameters.py:172 +#: netbox/templates/core/inc/config_data.html:117 msgid "Default preferences" msgstr "" -#: netbox/config/parameters.py:174 +#: netbox/netbox/config/parameters.py:174 msgid "Default preferences for new users" msgstr "" -#: netbox/config/parameters.py:181 templates/core/inc/config_data.html:129 +#: netbox/netbox/config/parameters.py:181 +#: netbox/templates/core/inc/config_data.html:129 msgid "Maintenance mode" msgstr "" -#: netbox/config/parameters.py:183 +#: netbox/netbox/config/parameters.py:183 msgid "Enable maintenance mode" msgstr "" -#: netbox/config/parameters.py:188 templates/core/inc/config_data.html:133 +#: netbox/netbox/config/parameters.py:188 +#: netbox/templates/core/inc/config_data.html:133 msgid "GraphQL enabled" msgstr "" -#: netbox/config/parameters.py:190 +#: netbox/netbox/config/parameters.py:190 msgid "Enable the GraphQL API" msgstr "" -#: netbox/config/parameters.py:195 templates/core/inc/config_data.html:137 +#: netbox/netbox/config/parameters.py:195 +#: netbox/templates/core/inc/config_data.html:137 msgid "Changelog retention" msgstr "" -#: netbox/config/parameters.py:197 +#: netbox/netbox/config/parameters.py:197 msgid "Days to retain changelog history (set to zero for unlimited)" msgstr "" -#: netbox/config/parameters.py:202 +#: netbox/netbox/config/parameters.py:202 msgid "Job result retention" msgstr "" -#: netbox/config/parameters.py:204 +#: netbox/netbox/config/parameters.py:204 msgid "Days to retain job result history (set to zero for unlimited)" msgstr "" -#: netbox/config/parameters.py:209 templates/core/inc/config_data.html:145 +#: netbox/netbox/config/parameters.py:209 +#: netbox/templates/core/inc/config_data.html:145 msgid "Maps URL" msgstr "" -#: netbox/config/parameters.py:211 +#: netbox/netbox/config/parameters.py:211 msgid "Base URL for mapping geographic locations" msgstr "" -#: netbox/forms/__init__.py:12 +#: netbox/netbox/forms/__init__.py:12 msgid "Partial match" msgstr "" -#: netbox/forms/__init__.py:13 +#: netbox/netbox/forms/__init__.py:13 msgid "Exact match" msgstr "" -#: netbox/forms/__init__.py:14 +#: netbox/netbox/forms/__init__.py:14 msgid "Starts with" msgstr "" -#: netbox/forms/__init__.py:15 +#: netbox/netbox/forms/__init__.py:15 msgid "Ends with" msgstr "" -#: netbox/forms/__init__.py:16 +#: netbox/netbox/forms/__init__.py:16 msgid "Regex" msgstr "" -#: netbox/forms/__init__.py:34 +#: netbox/netbox/forms/__init__.py:34 msgid "Object type(s)" msgstr "" -#: netbox/forms/__init__.py:40 +#: netbox/netbox/forms/__init__.py:40 msgid "Lookup" msgstr "" -#: netbox/forms/base.py:90 +#: netbox/netbox/forms/base.py:90 msgid "" "Tag slugs separated by commas, encased with double quotes (e.g. \"tag1,tag2," "tag3\")" msgstr "" -#: netbox/forms/base.py:120 +#: netbox/netbox/forms/base.py:120 msgid "Add tags" msgstr "" -#: netbox/forms/base.py:125 +#: netbox/netbox/forms/base.py:125 msgid "Remove tags" msgstr "" -#: netbox/forms/mixins.py:38 +#: netbox/netbox/forms/mixins.py:38 #, python-brace-format msgid "{class_name} must specify a model class." msgstr "" -#: netbox/models/features.py:280 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "" -#: netbox/models/features.py:286 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "" -#: netbox/models/features.py:295 +#: netbox/netbox/models/features.py:295 #, python-brace-format msgid "Custom field '{name}' must have a unique value." msgstr "" -#: netbox/models/features.py:302 +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "" -#: netbox/models/features.py:462 +#: netbox/netbox/models/features.py:462 msgid "Remote data source" msgstr "" -#: netbox/models/features.py:472 +#: netbox/netbox/models/features.py:472 msgid "data path" msgstr "" -#: netbox/models/features.py:476 +#: netbox/netbox/models/features.py:476 msgid "Path to remote file (relative to data source root)" msgstr "" -#: netbox/models/features.py:479 +#: netbox/netbox/models/features.py:479 msgid "auto sync enabled" msgstr "" -#: netbox/models/features.py:481 +#: netbox/netbox/models/features.py:481 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" -#: netbox/models/features.py:484 +#: netbox/netbox/models/features.py:484 msgid "date synced" msgstr "" -#: netbox/models/features.py:578 +#: netbox/netbox/models/features.py:578 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "" -#: netbox/navigation/menu.py:11 +#: netbox/netbox/navigation/menu.py:11 msgid "Organization" msgstr "" -#: netbox/navigation/menu.py:19 +#: netbox/netbox/navigation/menu.py:19 msgid "Site Groups" msgstr "" -#: netbox/navigation/menu.py:27 +#: netbox/netbox/navigation/menu.py:27 msgid "Tenant Groups" msgstr "" -#: netbox/navigation/menu.py:34 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "" -#: netbox/navigation/menu.py:35 templates/tenancy/contactrole.html:8 +#: netbox/netbox/navigation/menu.py:35 +#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "" -#: netbox/navigation/menu.py:36 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "" -#: netbox/navigation/menu.py:50 +#: netbox/netbox/navigation/menu.py:50 msgid "Rack Roles" msgstr "" -#: netbox/navigation/menu.py:54 +#: netbox/netbox/navigation/menu.py:54 msgid "Elevations" msgstr "" -#: netbox/navigation/menu.py:60 netbox/navigation/menu.py:62 +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 msgid "Rack Types" msgstr "" -#: netbox/navigation/menu.py:76 +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "" -#: netbox/navigation/menu.py:80 templates/dcim/device.html:160 -#: templates/dcim/virtualdevicecontext.html:8 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 +#: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "" -#: netbox/navigation/menu.py:88 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "" -#: netbox/navigation/menu.py:92 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "" -#: netbox/navigation/menu.py:104 templates/dcim/inventoryitemrole.html:8 +#: netbox/netbox/navigation/menu.py:104 +#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "" -#: netbox/navigation/menu.py:111 netbox/navigation/menu.py:115 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "" -#: netbox/navigation/menu.py:117 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "" -#: netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "" -#: netbox/navigation/menu.py:121 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "" -#: netbox/navigation/menu.py:126 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "" -#: netbox/navigation/menu.py:131 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "" -#: netbox/navigation/menu.py:147 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "" -#: netbox/navigation/menu.py:168 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "" -#: netbox/navigation/menu.py:174 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "" -#: netbox/navigation/menu.py:196 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "" -#: netbox/navigation/menu.py:203 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "" -#: netbox/navigation/menu.py:204 templates/dcim/device.html:302 -#: templates/ipam/ipaddress.html:118 -#: templates/virtualization/virtualmachine.html:154 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 +#: netbox/templates/ipam/ipaddress.html:118 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "" -#: netbox/navigation/menu.py:211 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "" -#: netbox/navigation/menu.py:215 netbox/navigation/menu.py:217 -#: vpn/tables/tunnels.py:24 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 +#: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "" -#: netbox/navigation/menu.py:218 templates/vpn/tunnelgroup.html:8 +#: netbox/netbox/navigation/menu.py:218 netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "" -#: netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "" -#: netbox/navigation/menu.py:223 netbox/navigation/menu.py:225 -#: vpn/models/l2vpn.py:64 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 +#: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "" -#: netbox/navigation/menu.py:226 templates/vpn/l2vpn.html:56 -#: templates/vpn/tunnel.html:72 vpn/tables/tunnels.py:58 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 +#: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "" -#: netbox/navigation/menu.py:232 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "" -#: netbox/navigation/menu.py:233 templates/vpn/ikeproposal.html:41 +#: netbox/netbox/navigation/menu.py:233 +#: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "" -#: netbox/navigation/menu.py:234 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "" -#: netbox/navigation/menu.py:235 templates/vpn/ipsecproposal.html:37 +#: netbox/netbox/navigation/menu.py:235 +#: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "" -#: netbox/navigation/menu.py:236 templates/vpn/ikepolicy.html:38 -#: templates/vpn/ipsecpolicy.html:25 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "" -#: netbox/navigation/menu.py:243 templates/dcim/device_edit.html:78 +#: netbox/netbox/navigation/menu.py:243 +#: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "" -#: netbox/navigation/menu.py:251 -#: templates/virtualization/virtualmachine.html:174 -#: templates/virtualization/virtualmachine/base.html:32 -#: templates/virtualization/virtualmachine_list.html:21 -#: virtualization/tables/virtualmachines.py:104 virtualization/views.py:388 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine/base.html:32 +#: netbox/templates/virtualization/virtualmachine_list.html:21 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "" -#: netbox/navigation/menu.py:258 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "" -#: netbox/navigation/menu.py:259 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "" -#: netbox/navigation/menu.py:273 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "" -#: netbox/navigation/menu.py:274 +#: netbox/netbox/navigation/menu.py:274 msgid "Circuit Groups" msgstr "" -#: netbox/navigation/menu.py:275 templates/circuits/circuit.html:66 +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 msgid "Group Assignments" msgstr "" -#: netbox/navigation/menu.py:276 +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "" -#: netbox/navigation/menu.py:280 netbox/navigation/menu.py:282 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "" -#: netbox/navigation/menu.py:283 templates/circuits/provider.html:51 +#: netbox/netbox/navigation/menu.py:283 +#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "" -#: netbox/navigation/menu.py:284 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "" -#: netbox/navigation/menu.py:298 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "" -#: netbox/navigation/menu.py:309 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "" -#: netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "" -#: netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "" -#: netbox/navigation/menu.py:319 netbox/navigation/menu.py:323 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "" -#: netbox/navigation/menu.py:325 templates/dcim/device_edit.html:103 -#: templates/dcim/htmx/cable_edit.html:81 -#: templates/dcim/virtualchassis_add.html:31 -#: templates/dcim/virtualchassis_edit.html:40 -#: templates/generic/bulk_edit.html:76 templates/htmx/form.html:19 -#: templates/inc/filter_list.html:30 templates/inc/panels/custom_fields.html:7 -#: templates/ipam/ipaddress_bulk_add.html:35 templates/ipam/vlan_edit.html:59 +#: netbox/netbox/navigation/menu.py:325 +#: netbox/templates/dcim/device_edit.html:103 +#: netbox/templates/dcim/htmx/cable_edit.html:81 +#: netbox/templates/dcim/virtualchassis_add.html:31 +#: netbox/templates/dcim/virtualchassis_edit.html:40 +#: netbox/templates/generic/bulk_edit.html:76 +#: netbox/templates/htmx/form.html:19 netbox/templates/inc/filter_list.html:30 +#: netbox/templates/inc/panels/custom_fields.html:7 +#: netbox/templates/ipam/ipaddress_bulk_add.html:35 +#: netbox/templates/ipam/vlan_edit.html:59 msgid "Custom Fields" msgstr "" -#: netbox/navigation/menu.py:326 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "" -#: netbox/navigation/menu.py:327 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "" -#: netbox/navigation/menu.py:328 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "" -#: netbox/navigation/menu.py:329 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "" -#: netbox/navigation/menu.py:331 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "" -#: netbox/navigation/menu.py:349 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "" -#: netbox/navigation/menu.py:353 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "" -#: netbox/navigation/menu.py:355 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "" -#: netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "" -#: netbox/navigation/menu.py:357 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "" -#: netbox/navigation/menu.py:361 netbox/navigation/menu.py:365 -#: netbox/views/generic/feature_views.py:153 -#: templates/extras/report/base.html:37 templates/extras/script/base.html:36 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 +#: netbox/templates/extras/report/base.html:37 +#: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "" -#: netbox/navigation/menu.py:371 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "" -#: netbox/navigation/menu.py:373 +#: netbox/netbox/navigation/menu.py:373 msgid "Notification Groups" msgstr "" -#: netbox/navigation/menu.py:374 +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "" -#: netbox/navigation/menu.py:375 templates/core/objectchange.html:9 -#: templates/core/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "" -#: netbox/navigation/menu.py:382 templates/inc/user_menu.html:29 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 msgid "Admin" msgstr "" -#: netbox/navigation/menu.py:430 templates/account/base.html:27 -#: templates/inc/user_menu.html:57 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "" -#: netbox/navigation/menu.py:437 users/forms/model_forms.py:187 -#: users/forms/model_forms.py:195 users/forms/model_forms.py:242 -#: users/forms/model_forms.py:249 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:187 +#: netbox/users/forms/model_forms.py:195 netbox/users/forms/model_forms.py:242 +#: netbox/users/forms/model_forms.py:249 msgid "Permissions" msgstr "" -#: netbox/navigation/menu.py:445 netbox/navigation/menu.py:449 -#: templates/core/system.html:7 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 +#: netbox/templates/core/system.html:7 msgid "System" msgstr "" -#: netbox/navigation/menu.py:454 netbox/navigation/menu.py:502 -#: templates/500.html:35 templates/account/preferences.html:22 -#: templates/core/plugin.html:13 templates/core/plugin_list.html:7 -#: templates/core/plugin_list.html:12 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:13 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 msgid "Plugins" msgstr "" -#: netbox/navigation/menu.py:459 +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "" -#: netbox/navigation/menu.py:465 templates/core/rq_task.html:8 -#: templates/core/rq_task_list.html:22 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 +#: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "" -#: netbox/plugins/navigation.py:47 netbox/plugins/navigation.py:69 +#: netbox/netbox/plugins/navigation.py:47 +#: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." msgstr "" -#: netbox/plugins/navigation.py:51 +#: netbox/netbox/plugins/navigation.py:51 msgid "Buttons must be passed as a tuple or list." msgstr "" -#: netbox/plugins/navigation.py:73 +#: netbox/netbox/plugins/navigation.py:73 msgid "Button color must be a choice within ButtonColorChoices." msgstr "" -#: netbox/plugins/registration.py:25 +#: netbox/netbox/plugins/registration.py:25 #, python-brace-format msgid "" "PluginTemplateExtension class {template_extension} was passed as an instance!" msgstr "" -#: netbox/plugins/registration.py:31 +#: netbox/netbox/plugins/registration.py:31 #, python-brace-format msgid "" "{template_extension} is not a subclass of netbox.plugins." "PluginTemplateExtension!" msgstr "" -#: netbox/plugins/registration.py:51 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "" -#: netbox/plugins/registration.py:62 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "" -#: netbox/plugins/registration.py:67 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "" -#: netbox/plugins/templates.py:37 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "" -#: netbox/preferences.py:19 +#: netbox/netbox/preferences.py:19 msgid "HTMX Navigation" msgstr "" -#: netbox/preferences.py:24 +#: netbox/netbox/preferences.py:24 msgid "Enable dynamic UI navigation" msgstr "" -#: netbox/preferences.py:26 +#: netbox/netbox/preferences.py:26 msgid "Experimental feature" msgstr "" -#: netbox/preferences.py:29 +#: netbox/netbox/preferences.py:29 msgid "Language" msgstr "" -#: netbox/preferences.py:34 +#: netbox/netbox/preferences.py:34 msgid "Forces UI translation to the specified language" msgstr "" -#: netbox/preferences.py:36 +#: netbox/netbox/preferences.py:36 msgid "Support for translation has been disabled locally" msgstr "" -#: netbox/preferences.py:42 +#: netbox/netbox/preferences.py:42 msgid "Page length" msgstr "" -#: netbox/preferences.py:44 +#: netbox/netbox/preferences.py:44 msgid "The default number of objects to display per page" msgstr "" -#: netbox/preferences.py:48 +#: netbox/netbox/preferences.py:48 msgid "Paginator placement" msgstr "" -#: netbox/preferences.py:50 +#: netbox/netbox/preferences.py:50 msgid "Bottom" msgstr "" -#: netbox/preferences.py:51 +#: netbox/netbox/preferences.py:51 msgid "Top" msgstr "" -#: netbox/preferences.py:52 +#: netbox/netbox/preferences.py:52 msgid "Both" msgstr "" -#: netbox/preferences.py:55 +#: netbox/netbox/preferences.py:55 msgid "Where the paginator controls will be displayed relative to a table" msgstr "" -#: netbox/preferences.py:60 +#: netbox/netbox/preferences.py:60 msgid "Data format" msgstr "" -#: netbox/preferences.py:65 +#: netbox/netbox/preferences.py:65 msgid "The preferred syntax for displaying generic data within the UI" msgstr "" -#: netbox/registry.py:14 +#: netbox/netbox/registry.py:14 #, python-brace-format msgid "Invalid store: {key}" msgstr "" -#: netbox/registry.py:17 +#: netbox/netbox/registry.py:17 msgid "Cannot add stores to registry after initialization" msgstr "" -#: netbox/registry.py:20 +#: netbox/netbox/registry.py:20 msgid "Cannot delete stores from registry" msgstr "" -#: netbox/settings.py:760 +#: netbox/netbox/settings.py:760 msgid "Czech" msgstr "" -#: netbox/settings.py:761 +#: netbox/netbox/settings.py:761 msgid "Danish" msgstr "" -#: netbox/settings.py:762 +#: netbox/netbox/settings.py:762 msgid "German" msgstr "" -#: netbox/settings.py:763 +#: netbox/netbox/settings.py:763 msgid "English" msgstr "" -#: netbox/settings.py:764 +#: netbox/netbox/settings.py:764 msgid "Spanish" msgstr "" -#: netbox/settings.py:765 +#: netbox/netbox/settings.py:765 msgid "French" msgstr "" -#: netbox/settings.py:766 +#: netbox/netbox/settings.py:766 msgid "Italian" msgstr "" -#: netbox/settings.py:767 +#: netbox/netbox/settings.py:767 msgid "Japanese" msgstr "" -#: netbox/settings.py:768 +#: netbox/netbox/settings.py:768 msgid "Dutch" msgstr "" -#: netbox/settings.py:769 +#: netbox/netbox/settings.py:769 msgid "Polish" msgstr "" -#: netbox/settings.py:770 +#: netbox/netbox/settings.py:770 msgid "Portuguese" msgstr "" -#: netbox/settings.py:771 +#: netbox/netbox/settings.py:771 msgid "Russian" msgstr "" -#: netbox/settings.py:772 +#: netbox/netbox/settings.py:772 msgid "Turkish" msgstr "" -#: netbox/settings.py:773 +#: netbox/netbox/settings.py:773 msgid "Ukrainian" msgstr "" -#: netbox/settings.py:774 +#: netbox/netbox/settings.py:774 msgid "Chinese" msgstr "" -#: netbox/tables/columns.py:176 +#: netbox/netbox/tables/columns.py:176 msgid "Select all" msgstr "" -#: netbox/tables/columns.py:189 +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "" -#: netbox/tables/columns.py:300 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "" -#: netbox/tables/columns.py:572 templates/core/job.html:53 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "" -#: netbox/tables/tables.py:58 +#: netbox/netbox/tables/tables.py:58 #, python-brace-format msgid "No {model_name} found" msgstr "" -#: netbox/tables/tables.py:249 templates/generic/bulk_import.html:117 +#: netbox/netbox/tables/tables.py:249 +#: netbox/templates/generic/bulk_import.html:117 msgid "Field" msgstr "" -#: netbox/tables/tables.py:252 +#: netbox/netbox/tables/tables.py:252 msgid "Value" msgstr "" -#: netbox/tests/dummy_plugin/navigation.py:29 +#: netbox/netbox/tests/dummy_plugin/navigation.py:29 msgid "Dummy Plugin" msgstr "" -#: netbox/views/generic/bulk_views.py:114 +#: netbox/netbox/views/generic/bulk_views.py:114 #, python-brace-format msgid "" "There was an error rendering the selected export template ({template}): " "{error}" msgstr "" -#: netbox/views/generic/bulk_views.py:416 +#: netbox/netbox/views/generic/bulk_views.py:416 #, python-brace-format msgid "Row {i}: Object with ID {id} does not exist" msgstr "" -#: netbox/views/generic/bulk_views.py:702 -#: netbox/views/generic/bulk_views.py:900 -#: netbox/views/generic/bulk_views.py:948 +#: netbox/netbox/views/generic/bulk_views.py:702 +#: netbox/netbox/views/generic/bulk_views.py:900 +#: netbox/netbox/views/generic/bulk_views.py:948 #, python-brace-format msgid "No {object_type} were selected." msgstr "" -#: netbox/views/generic/bulk_views.py:782 +#: netbox/netbox/views/generic/bulk_views.py:782 #, python-brace-format msgid "Renamed {count} {object_type}" msgstr "" -#: netbox/views/generic/bulk_views.py:878 +#: netbox/netbox/views/generic/bulk_views.py:878 #, python-brace-format msgid "Deleted {count} {object_type}" msgstr "" -#: netbox/views/generic/feature_views.py:40 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "" -#: netbox/views/generic/feature_views.py:93 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "" -#: netbox/views/generic/feature_views.py:207 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "" -#: netbox/views/generic/feature_views.py:211 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "" -#: netbox/views/generic/feature_views.py:236 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "" -#: netbox/views/generic/object_views.py:108 +#: netbox/netbox/views/generic/object_views.py:108 #, python-brace-format msgid "{class_name} must implement get_children()" msgstr "" -#: netbox/views/misc.py:44 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." msgstr "" -#: templates/403.html:4 +#: netbox/templates/403.html:4 msgid "Access Denied" msgstr "" -#: templates/403.html:9 +#: netbox/templates/403.html:9 msgid "You do not have permission to access this page" msgstr "" -#: templates/404.html:4 +#: netbox/templates/404.html:4 msgid "Page Not Found" msgstr "" -#: templates/404.html:9 +#: netbox/templates/404.html:9 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:7 templates/500.html:18 +#: netbox/templates/500.html:7 netbox/templates/500.html:18 msgid "Server Error" msgstr "" -#: templates/500.html:23 +#: netbox/templates/500.html:23 msgid "There was a problem with your request. Please contact an administrator" msgstr "" -#: templates/500.html:28 +#: netbox/templates/500.html:28 msgid "The complete exception is provided below" msgstr "" -#: templates/500.html:33 templates/core/system.html:40 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "" -#: templates/500.html:34 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "" -#: templates/500.html:36 +#: netbox/templates/500.html:36 msgid "None installed" msgstr "" -#: templates/500.html:39 +#: netbox/templates/500.html:39 msgid "If further assistance is required, please post to the" msgstr "" -#: templates/500.html:39 +#: netbox/templates/500.html:39 msgid "NetBox discussion forum" msgstr "" -#: templates/500.html:39 +#: netbox/templates/500.html:39 msgid "on GitHub" msgstr "" -#: templates/500.html:42 templates/base/40x.html:17 +#: netbox/templates/500.html:42 netbox/templates/base/40x.html:17 msgid "Home Page" msgstr "" -#: templates/account/base.html:7 templates/inc/user_menu.html:45 -#: vpn/forms/bulk_edit.py:255 vpn/forms/filtersets.py:189 -#: vpn/forms/model_forms.py:379 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 +#: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 +#: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "" -#: templates/account/base.html:13 templates/account/notifications.html:7 -#: templates/inc/user_menu.html:15 +#: netbox/templates/account/base.html:13 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 msgid "Notifications" msgstr "" -#: templates/account/base.html:16 templates/account/subscriptions.html:7 -#: templates/inc/user_menu.html:51 +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 msgid "Subscriptions" msgstr "" -#: templates/account/base.html:19 templates/inc/user_menu.html:54 +#: netbox/templates/account/base.html:19 netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "" -#: templates/account/password.html:5 +#: netbox/templates/account/password.html:5 msgid "Change Password" msgstr "" -#: templates/account/password.html:19 templates/account/preferences.html:77 -#: templates/core/configrevision_restore.html:63 -#: templates/dcim/devicebay_populate.html:34 -#: templates/dcim/virtualchassis_add_member.html:26 -#: templates/dcim/virtualchassis_edit.html:103 -#: templates/extras/object_journal.html:26 templates/extras/script.html:38 -#: templates/generic/bulk_add_component.html:67 -#: templates/generic/bulk_delete.html:65 templates/generic/bulk_edit.html:106 -#: templates/generic/bulk_import.html:56 templates/generic/bulk_import.html:78 -#: templates/generic/bulk_import.html:100 templates/generic/bulk_remove.html:62 -#: templates/generic/bulk_rename.html:63 -#: templates/generic/confirmation_form.html:19 -#: templates/generic/object_edit.html:72 templates/htmx/delete_form.html:53 -#: templates/htmx/delete_form.html:55 templates/ipam/ipaddress_assign.html:28 -#: templates/virtualization/cluster_add_devices.html:30 +#: netbox/templates/account/password.html:19 +#: netbox/templates/account/preferences.html:77 +#: netbox/templates/core/configrevision_restore.html:63 +#: netbox/templates/dcim/devicebay_populate.html:34 +#: netbox/templates/dcim/virtualchassis_add_member.html:26 +#: netbox/templates/dcim/virtualchassis_edit.html:103 +#: netbox/templates/extras/object_journal.html:26 +#: netbox/templates/extras/script.html:38 +#: netbox/templates/generic/bulk_add_component.html:67 +#: netbox/templates/generic/bulk_delete.html:65 +#: netbox/templates/generic/bulk_edit.html:106 +#: netbox/templates/generic/bulk_import.html:56 +#: netbox/templates/generic/bulk_import.html:78 +#: netbox/templates/generic/bulk_import.html:100 +#: netbox/templates/generic/bulk_remove.html:62 +#: netbox/templates/generic/bulk_rename.html:63 +#: netbox/templates/generic/confirmation_form.html:19 +#: netbox/templates/generic/object_edit.html:72 +#: netbox/templates/htmx/delete_form.html:53 +#: netbox/templates/htmx/delete_form.html:55 +#: netbox/templates/ipam/ipaddress_assign.html:28 +#: netbox/templates/virtualization/cluster_add_devices.html:30 msgid "Cancel" msgstr "" -#: templates/account/password.html:20 templates/account/preferences.html:78 -#: templates/dcim/devicebay_populate.html:35 -#: templates/dcim/virtualchassis_add_member.html:28 -#: templates/dcim/virtualchassis_edit.html:105 -#: templates/extras/dashboard/widget_add.html:26 -#: templates/extras/dashboard/widget_config.html:19 -#: templates/extras/object_journal.html:27 -#: templates/generic/object_edit.html:75 -#: utilities/templates/helpers/applied_filters.html:16 -#: utilities/templates/helpers/table_config_form.html:40 +#: netbox/templates/account/password.html:20 +#: netbox/templates/account/preferences.html:78 +#: netbox/templates/dcim/devicebay_populate.html:35 +#: netbox/templates/dcim/virtualchassis_add_member.html:28 +#: netbox/templates/dcim/virtualchassis_edit.html:105 +#: netbox/templates/extras/dashboard/widget_add.html:26 +#: netbox/templates/extras/dashboard/widget_config.html:19 +#: netbox/templates/extras/object_journal.html:27 +#: netbox/templates/generic/object_edit.html:75 +#: netbox/utilities/templates/helpers/applied_filters.html:16 +#: netbox/utilities/templates/helpers/table_config_form.html:40 msgid "Save" msgstr "" -#: templates/account/preferences.html:34 +#: netbox/templates/account/preferences.html:34 msgid "Table Configurations" msgstr "" -#: templates/account/preferences.html:39 +#: netbox/templates/account/preferences.html:39 msgid "Clear table preferences" msgstr "" -#: templates/account/preferences.html:47 +#: netbox/templates/account/preferences.html:47 msgid "Toggle All" msgstr "" -#: templates/account/preferences.html:49 +#: netbox/templates/account/preferences.html:49 msgid "Table" msgstr "" -#: templates/account/preferences.html:50 +#: netbox/templates/account/preferences.html:50 msgid "Ordering" msgstr "" -#: templates/account/preferences.html:51 +#: netbox/templates/account/preferences.html:51 msgid "Columns" msgstr "" -#: templates/account/preferences.html:71 templates/dcim/cable_trace.html:113 -#: templates/extras/object_configcontext.html:43 +#: netbox/templates/account/preferences.html:71 +#: netbox/templates/dcim/cable_trace.html:113 +#: netbox/templates/extras/object_configcontext.html:43 msgid "None found" msgstr "" -#: templates/account/profile.html:6 +#: netbox/templates/account/profile.html:6 msgid "User Profile" msgstr "" -#: templates/account/profile.html:12 +#: netbox/templates/account/profile.html:12 msgid "Account Details" msgstr "" -#: templates/account/profile.html:29 templates/tenancy/contact.html:43 -#: templates/users/user.html:25 tenancy/forms/bulk_edit.py:109 +#: netbox/templates/account/profile.html:29 +#: netbox/templates/tenancy/contact.html:43 netbox/templates/users/user.html:25 +#: netbox/tenancy/forms/bulk_edit.py:109 msgid "Email" msgstr "" -#: templates/account/profile.html:33 templates/users/user.html:29 +#: netbox/templates/account/profile.html:33 netbox/templates/users/user.html:29 msgid "Account Created" msgstr "" -#: templates/account/profile.html:37 templates/users/user.html:33 +#: netbox/templates/account/profile.html:37 netbox/templates/users/user.html:33 msgid "Last Login" msgstr "" -#: templates/account/profile.html:41 templates/users/user.html:45 +#: netbox/templates/account/profile.html:41 netbox/templates/users/user.html:45 msgid "Superuser" msgstr "" -#: templates/account/profile.html:45 templates/inc/user_menu.html:31 -#: templates/users/user.html:41 +#: netbox/templates/account/profile.html:45 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "" -#: templates/account/profile.html:53 templates/users/objectpermission.html:82 -#: templates/users/user.html:53 +#: netbox/templates/account/profile.html:53 +#: netbox/templates/users/objectpermission.html:82 +#: netbox/templates/users/user.html:53 msgid "Assigned Groups" msgstr "" -#: templates/account/profile.html:58 -#: templates/circuits/circuit_terminations_swap.html:18 -#: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/circuittermination.html:34 -#: templates/circuits/inc/circuit_termination.html:68 -#: templates/core/objectchange.html:124 templates/core/objectchange.html:142 -#: templates/dcim/devicebay.html:59 -#: templates/dcim/inc/panels/inventory_items.html:45 -#: templates/dcim/interface.html:296 templates/dcim/modulebay.html:80 -#: templates/extras/configcontext.html:70 templates/extras/eventrule.html:66 -#: templates/extras/htmx/script_result.html:60 templates/extras/webhook.html:65 -#: templates/extras/webhook.html:75 templates/inc/panel_table.html:13 -#: templates/inc/panels/comments.html:10 -#: templates/ipam/inc/panels/fhrp_groups.html:56 templates/users/group.html:34 -#: templates/users/group.html:44 templates/users/objectpermission.html:77 -#: templates/users/objectpermission.html:87 templates/users/user.html:58 -#: templates/users/user.html:68 +#: netbox/templates/account/profile.html:58 +#: netbox/templates/circuits/circuit_terminations_swap.html:18 +#: netbox/templates/circuits/circuit_terminations_swap.html:26 +#: netbox/templates/circuits/circuittermination.html:34 +#: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 +#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/dcim/inc/panels/inventory_items.html:45 +#: netbox/templates/dcim/interface.html:296 +#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/extras/configcontext.html:70 +#: netbox/templates/extras/eventrule.html:66 +#: netbox/templates/extras/htmx/script_result.html:60 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 +#: netbox/templates/inc/panel_table.html:13 +#: netbox/templates/inc/panels/comments.html:10 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 +#: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 +#: netbox/templates/users/objectpermission.html:77 +#: netbox/templates/users/objectpermission.html:87 +#: netbox/templates/users/user.html:58 netbox/templates/users/user.html:68 msgid "None" msgstr "" -#: templates/account/profile.html:68 templates/users/user.html:78 +#: netbox/templates/account/profile.html:68 netbox/templates/users/user.html:78 msgid "Recent Activity" msgstr "" -#: templates/account/token.html:8 templates/account/token_list.html:6 +#: netbox/templates/account/token.html:8 +#: netbox/templates/account/token_list.html:6 msgid "My API Tokens" msgstr "" -#: templates/account/token.html:11 templates/account/token.html:19 -#: templates/users/token.html:6 templates/users/token.html:14 -#: users/forms/filtersets.py:120 +#: netbox/templates/account/token.html:11 +#: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "" -#: templates/account/token.html:39 templates/users/token.html:31 -#: users/forms/bulk_edit.py:107 +#: netbox/templates/account/token.html:39 netbox/templates/users/token.html:31 +#: netbox/users/forms/bulk_edit.py:107 msgid "Write enabled" msgstr "" -#: templates/account/token.html:51 templates/users/token.html:43 +#: netbox/templates/account/token.html:51 netbox/templates/users/token.html:43 msgid "Last used" msgstr "" -#: templates/account/token_list.html:12 +#: netbox/templates/account/token_list.html:12 msgid "Add a Token" msgstr "" -#: templates/base/base.html:22 templates/home.html:27 +#: netbox/templates/base/base.html:22 netbox/templates/home.html:27 msgid "Home" msgstr "" -#: templates/base/layout.html:25 +#: netbox/templates/base/layout.html:25 msgid "NetBox Motif" msgstr "" -#: templates/base/layout.html:38 templates/base/layout.html:39 -#: templates/login.html:14 templates/login.html:15 +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "" -#: templates/base/layout.html:150 templates/base/layout.html:151 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "" -#: templates/base/layout.html:156 templates/base/layout.html:157 -#: templates/rest_framework/api.html:10 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 +#: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "" -#: templates/base/layout.html:162 templates/base/layout.html:163 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "" -#: templates/base/layout.html:169 templates/base/layout.html:170 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "" -#: templates/base/layout.html:185 templates/base/layout.html:186 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 msgid "NetBox Labs Support" msgstr "" -#: templates/base/layout.html:194 templates/base/layout.html:195 +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "" -#: templates/base/layout.html:200 templates/base/layout.html:201 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "" -#: templates/circuits/circuit.html:47 +#: netbox/templates/circuits/circuit.html:47 msgid "Install Date" msgstr "" -#: templates/circuits/circuit.html:51 +#: netbox/templates/circuits/circuit.html:51 msgid "Termination Date" msgstr "" -#: templates/circuits/circuit.html:70 -#: templates/ipam/inc/panels/fhrp_groups.html:15 +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 msgid "Assign Group" msgstr "" -#: templates/circuits/circuit_terminations_swap.html:4 +#: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "" -#: templates/circuits/circuit_terminations_swap.html:8 +#: netbox/templates/circuits/circuit_terminations_swap.html:8 #, python-format msgid "Swap these terminations for circuit %(circuit)s?" msgstr "" -#: templates/circuits/circuit_terminations_swap.html:14 +#: netbox/templates/circuits/circuit_terminations_swap.html:14 msgid "A side" msgstr "" -#: templates/circuits/circuit_terminations_swap.html:22 +#: netbox/templates/circuits/circuit_terminations_swap.html:22 msgid "Z side" msgstr "" -#: templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:16 msgid "Assign Circuit" msgstr "" -#: templates/circuits/circuitgroupassignment.html:19 +#: netbox/templates/circuits/circuitgroupassignment.html:19 msgid "Circuit Group Assignment" msgstr "" -#: templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "" -#: templates/circuits/circuittype.html:19 +#: netbox/templates/circuits/circuittype.html:19 msgid "Circuit Type" msgstr "" -#: templates/circuits/inc/circuit_termination.html:10 -#: templates/dcim/manufacturer.html:11 -#: templates/generic/bulk_add_component.html:22 -#: templates/users/objectpermission.html:38 -#: utilities/templates/buttons/add.html:4 -#: utilities/templates/helpers/table_config_form.html:20 +#: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/dcim/manufacturer.html:11 +#: netbox/templates/generic/bulk_add_component.html:22 +#: netbox/templates/users/objectpermission.html:38 +#: netbox/utilities/templates/buttons/add.html:4 +#: netbox/utilities/templates/helpers/table_config_form.html:20 msgid "Add" msgstr "" -#: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination_fields.html:36 -#: templates/dcim/inc/panels/inventory_items.html:32 -#: templates/dcim/powerpanel.html:56 templates/extras/script_list.html:30 -#: templates/generic/object_edit.html:47 -#: templates/ipam/inc/ipaddress_edit_header.html:7 -#: templates/ipam/inc/panels/fhrp_groups.html:43 -#: utilities/templates/buttons/edit.html:3 +#: netbox/templates/circuits/inc/circuit_termination.html:15 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:36 +#: netbox/templates/dcim/inc/panels/inventory_items.html:32 +#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/extras/script_list.html:30 +#: netbox/templates/generic/object_edit.html:47 +#: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 +#: netbox/utilities/templates/buttons/edit.html:3 msgid "Edit" msgstr "" -#: templates/circuits/inc/circuit_termination.html:18 +#: netbox/templates/circuits/inc/circuit_termination.html:18 msgid "Swap" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:19 -#: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 -#: templates/dcim/powerfeed.html:114 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:19 +#: netbox/templates/dcim/consoleport.html:59 +#: netbox/templates/dcim/consoleserverport.html:60 +#: netbox/templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:21 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:31 -#: templates/circuits/inc/circuit_termination_fields.html:32 -#: templates/dcim/frontport.html:80 -#: templates/dcim/inc/connection_endpoints.html:7 -#: templates/dcim/interface.html:154 templates/dcim/rearport.html:76 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:31 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:32 +#: netbox/templates/dcim/frontport.html:80 +#: netbox/templates/dcim/inc/connection_endpoints.html:7 +#: netbox/templates/dcim/interface.html:154 +#: netbox/templates/dcim/rearport.html:76 msgid "Trace" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:35 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:40 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:41 -#: templates/dcim/bulk_disconnect.html:5 -#: templates/dcim/device/consoleports.html:12 -#: templates/dcim/device/consoleserverports.html:12 -#: templates/dcim/device/frontports.html:12 -#: templates/dcim/device/interfaces.html:16 -#: templates/dcim/device/poweroutlets.html:12 -#: templates/dcim/device/powerports.html:12 -#: templates/dcim/device/rearports.html:12 templates/dcim/powerpanel.html:61 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:41 +#: netbox/templates/dcim/bulk_disconnect.html:5 +#: netbox/templates/dcim/device/consoleports.html:12 +#: netbox/templates/dcim/device/consoleserverports.html:12 +#: netbox/templates/dcim/device/frontports.html:12 +#: netbox/templates/dcim/device/interfaces.html:16 +#: netbox/templates/dcim/device/poweroutlets.html:12 +#: netbox/templates/dcim/device/powerports.html:12 +#: netbox/templates/dcim/device/rearports.html:12 +#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:48 -#: templates/dcim/consoleport.html:69 templates/dcim/consoleserverport.html:70 -#: templates/dcim/frontport.html:102 templates/dcim/interface.html:180 -#: templates/dcim/interface.html:200 templates/dcim/powerfeed.html:127 -#: templates/dcim/poweroutlet.html:71 templates/dcim/poweroutlet.html:72 -#: templates/dcim/powerport.html:73 templates/dcim/rearport.html:98 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:48 +#: netbox/templates/dcim/consoleport.html:69 +#: netbox/templates/dcim/consoleserverport.html:70 +#: netbox/templates/dcim/frontport.html:102 +#: netbox/templates/dcim/interface.html:180 +#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/powerfeed.html:127 +#: netbox/templates/dcim/poweroutlet.html:71 +#: netbox/templates/dcim/poweroutlet.html:72 +#: netbox/templates/dcim/powerport.html:73 +#: netbox/templates/dcim/rearport.html:98 msgid "Connect" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:70 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:71 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:80 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:84 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "" -#: templates/circuits/provider.html:11 +#: netbox/templates/circuits/provider.html:11 msgid "Add circuit" msgstr "" -#: templates/circuits/provideraccount.html:17 +#: netbox/templates/circuits/provideraccount.html:17 msgid "Provider Account" msgstr "" -#: templates/core/configrevision.html:35 +#: netbox/templates/core/configrevision.html:35 msgid "Configuration Data" msgstr "" -#: templates/core/configrevision.html:40 +#: netbox/templates/core/configrevision.html:40 msgid "Comment" msgstr "" -#: templates/core/configrevision_restore.html:8 -#: templates/core/configrevision_restore.html:25 -#: templates/core/configrevision_restore.html:64 +#: netbox/templates/core/configrevision_restore.html:8 +#: netbox/templates/core/configrevision_restore.html:25 +#: netbox/templates/core/configrevision_restore.html:64 msgid "Restore" msgstr "" -#: templates/core/configrevision_restore.html:36 +#: netbox/templates/core/configrevision_restore.html:36 msgid "Parameter" msgstr "" -#: templates/core/configrevision_restore.html:37 +#: netbox/templates/core/configrevision_restore.html:37 msgid "Current Value" msgstr "" -#: templates/core/configrevision_restore.html:38 +#: netbox/templates/core/configrevision_restore.html:38 msgid "New Value" msgstr "" -#: templates/core/configrevision_restore.html:50 +#: netbox/templates/core/configrevision_restore.html:50 msgid "Changed" msgstr "" -#: templates/core/datafile.html:42 templates/ipam/iprange.html:25 -#: templates/virtualization/virtualdisk.html:29 -#: virtualization/tables/virtualmachines.py:198 +#: netbox/templates/core/datafile.html:42 netbox/templates/ipam/iprange.html:25 +#: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "" -#: templates/core/datafile.html:43 +#: netbox/templates/core/datafile.html:43 msgid "bytes" msgstr "" -#: templates/core/datafile.html:46 +#: netbox/templates/core/datafile.html:46 msgid "SHA256 Hash" msgstr "" -#: templates/core/datasource.html:14 templates/core/datasource.html:20 -#: utilities/templates/buttons/sync.html:5 +#: netbox/templates/core/datasource.html:14 +#: netbox/templates/core/datasource.html:20 +#: netbox/utilities/templates/buttons/sync.html:5 msgid "Sync" msgstr "" -#: templates/core/datasource.html:50 +#: netbox/templates/core/datasource.html:50 msgid "Last synced" msgstr "" -#: templates/core/datasource.html:84 +#: netbox/templates/core/datasource.html:84 msgid "Backend" msgstr "" -#: templates/core/datasource.html:99 +#: netbox/templates/core/datasource.html:99 msgid "No parameters defined" msgstr "" -#: templates/core/datasource.html:114 +#: netbox/templates/core/datasource.html:114 msgid "Files" msgstr "" -#: templates/core/inc/config_data.html:7 +#: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "" -#: templates/core/inc/config_data.html:10 +#: netbox/templates/core/inc/config_data.html:10 msgid "Default unit height" msgstr "" -#: templates/core/inc/config_data.html:14 +#: netbox/templates/core/inc/config_data.html:14 msgid "Default unit width" msgstr "" -#: templates/core/inc/config_data.html:20 +#: netbox/templates/core/inc/config_data.html:20 msgid "Power feeds" msgstr "" -#: templates/core/inc/config_data.html:23 +#: netbox/templates/core/inc/config_data.html:23 msgid "Default voltage" msgstr "" -#: templates/core/inc/config_data.html:27 +#: netbox/templates/core/inc/config_data.html:27 msgid "Default amperage" msgstr "" -#: templates/core/inc/config_data.html:31 +#: netbox/templates/core/inc/config_data.html:31 msgid "Default max utilization" msgstr "" -#: templates/core/inc/config_data.html:40 +#: netbox/templates/core/inc/config_data.html:40 msgid "Enforce global unique" msgstr "" -#: templates/core/inc/config_data.html:83 +#: netbox/templates/core/inc/config_data.html:83 msgid "Paginate count" msgstr "" -#: templates/core/inc/config_data.html:87 +#: netbox/templates/core/inc/config_data.html:87 msgid "Max page size" msgstr "" -#: templates/core/inc/config_data.html:114 +#: netbox/templates/core/inc/config_data.html:114 msgid "User preferences" msgstr "" -#: templates/core/inc/config_data.html:141 +#: netbox/templates/core/inc/config_data.html:141 msgid "Job retention" msgstr "" -#: templates/core/job.html:35 templates/core/rq_task.html:12 -#: templates/core/rq_task.html:49 templates/core/rq_task.html:58 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "" -#: templates/core/job.html:58 templates/extras/journalentry.html:26 +#: netbox/templates/core/job.html:58 +#: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "" -#: templates/core/job.html:66 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "" -#: templates/core/job.html:77 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "" -#: templates/core/objectchange.html:29 templates/users/objectpermission.html:42 +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 msgid "Change" msgstr "" -#: templates/core/objectchange.html:79 +#: netbox/templates/core/objectchange.html:79 msgid "Difference" msgstr "" -#: templates/core/objectchange.html:82 +#: netbox/templates/core/objectchange.html:82 msgid "Previous" msgstr "" -#: templates/core/objectchange.html:85 +#: netbox/templates/core/objectchange.html:85 msgid "Next" msgstr "" -#: templates/core/objectchange.html:93 +#: netbox/templates/core/objectchange.html:93 msgid "Object Created" msgstr "" -#: templates/core/objectchange.html:95 +#: netbox/templates/core/objectchange.html:95 msgid "Object Deleted" msgstr "" -#: templates/core/objectchange.html:97 +#: netbox/templates/core/objectchange.html:97 msgid "No Changes" msgstr "" -#: templates/core/objectchange.html:111 +#: netbox/templates/core/objectchange.html:111 msgid "Pre-Change Data" msgstr "" -#: templates/core/objectchange.html:122 +#: netbox/templates/core/objectchange.html:122 msgid "Warning: Comparing non-atomic change to previous change record" msgstr "" -#: templates/core/objectchange.html:131 +#: netbox/templates/core/objectchange.html:131 msgid "Post-Change Data" msgstr "" -#: templates/core/objectchange.html:162 +#: netbox/templates/core/objectchange.html:162 #, python-format msgid "See All %(count)s Changes" msgstr "" -#: templates/core/objectchange_list.html:9 -#: templates/extras/object_changelog.html:15 +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" msgstr "" -#: templates/core/objectchange_list.html:9 -#: templates/extras/object_changelog.html:15 +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 msgid "days" msgstr "" -#: templates/core/objectchange_list.html:9 -#: templates/extras/object_changelog.html:15 +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 msgid "Indefinite" msgstr "" -#: templates/core/plugin.html:22 +#: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "" -#: templates/core/plugin.html:33 +#: netbox/templates/core/plugin.html:33 msgid "Overview" msgstr "" -#: templates/core/plugin.html:39 +#: netbox/templates/core/plugin.html:39 msgid "Install" msgstr "" -#: templates/core/plugin.html:51 +#: netbox/templates/core/plugin.html:51 msgid "Plugin Details" msgstr "" -#: templates/core/plugin.html:58 +#: netbox/templates/core/plugin.html:58 msgid "Summary" msgstr "" -#: templates/core/plugin.html:76 +#: netbox/templates/core/plugin.html:76 msgid "License" msgstr "" -#: templates/core/plugin.html:96 +#: netbox/templates/core/plugin.html:96 msgid "Version History" msgstr "" -#: templates/core/plugin.html:107 +#: netbox/templates/core/plugin.html:107 msgid "Local Installation Instructions" msgstr "" -#: templates/core/rq_queue_list.html:5 templates/core/rq_queue_list.html:13 -#: templates/core/rq_task_list.html:14 templates/core/rq_worker.html:7 +#: netbox/templates/core/rq_queue_list.html:5 +#: netbox/templates/core/rq_queue_list.html:13 +#: netbox/templates/core/rq_task_list.html:14 +#: netbox/templates/core/rq_worker.html:7 msgid "Background Queues" msgstr "" -#: templates/core/rq_queue_list.html:24 templates/core/rq_queue_list.html:25 -#: templates/core/rq_worker_list.html:49 templates/core/rq_worker_list.html:50 -#: templates/extras/script_result.html:67 -#: templates/extras/script_result.html:69 -#: templates/inc/table_controls_htmx.html:30 -#: templates/inc/table_controls_htmx.html:33 +#: netbox/templates/core/rq_queue_list.html:24 +#: netbox/templates/core/rq_queue_list.html:25 +#: netbox/templates/core/rq_worker_list.html:49 +#: netbox/templates/core/rq_worker_list.html:50 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 +#: netbox/templates/inc/table_controls_htmx.html:30 +#: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" msgstr "" -#: templates/core/rq_task.html:29 +#: netbox/templates/core/rq_task.html:29 msgid "Stop" msgstr "" -#: templates/core/rq_task.html:34 +#: netbox/templates/core/rq_task.html:34 msgid "Requeue" msgstr "" -#: templates/core/rq_task.html:39 +#: netbox/templates/core/rq_task.html:39 msgid "Enqueue" msgstr "" -#: templates/core/rq_task.html:61 +#: netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "" -#: templates/core/rq_task.html:65 +#: netbox/templates/core/rq_task.html:65 msgid "Timeout" msgstr "" -#: templates/core/rq_task.html:69 +#: netbox/templates/core/rq_task.html:69 msgid "Result TTL" msgstr "" -#: templates/core/rq_task.html:89 +#: netbox/templates/core/rq_task.html:89 msgid "Meta" msgstr "" -#: templates/core/rq_task.html:93 +#: netbox/templates/core/rq_task.html:93 msgid "Arguments" msgstr "" -#: templates/core/rq_task.html:97 +#: netbox/templates/core/rq_task.html:97 msgid "Keyword Arguments" msgstr "" -#: templates/core/rq_task.html:103 +#: netbox/templates/core/rq_task.html:103 msgid "Depends on" msgstr "" -#: templates/core/rq_task.html:109 +#: netbox/templates/core/rq_task.html:109 msgid "Exception" msgstr "" -#: templates/core/rq_task_list.html:28 +#: netbox/templates/core/rq_task_list.html:28 msgid "tasks in " msgstr "" -#: templates/core/rq_task_list.html:33 +#: netbox/templates/core/rq_task_list.html:33 msgid "Queued Jobs" msgstr "" -#: templates/core/rq_task_list.html:64 templates/extras/script_result.html:86 +#: netbox/templates/core/rq_task_list.html:64 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" msgstr "" -#: templates/core/rq_worker.html:10 +#: netbox/templates/core/rq_worker.html:10 msgid "Worker Info" msgstr "" -#: templates/core/rq_worker.html:31 templates/core/rq_worker.html:40 +#: netbox/templates/core/rq_worker.html:31 +#: netbox/templates/core/rq_worker.html:40 msgid "Worker" msgstr "" -#: templates/core/rq_worker.html:55 +#: netbox/templates/core/rq_worker.html:55 msgid "Queues" msgstr "" -#: templates/core/rq_worker.html:63 +#: netbox/templates/core/rq_worker.html:63 msgid "Curent Job" msgstr "" -#: templates/core/rq_worker.html:67 +#: netbox/templates/core/rq_worker.html:67 msgid "Successful job count" msgstr "" -#: templates/core/rq_worker.html:71 +#: netbox/templates/core/rq_worker.html:71 msgid "Failed job count" msgstr "" -#: templates/core/rq_worker.html:75 +#: netbox/templates/core/rq_worker.html:75 msgid "Total working time" msgstr "" -#: templates/core/rq_worker.html:76 +#: netbox/templates/core/rq_worker.html:76 msgid "seconds" msgstr "" -#: templates/core/rq_worker_list.html:13 templates/core/rq_worker_list.html:21 +#: netbox/templates/core/rq_worker_list.html:13 +#: netbox/templates/core/rq_worker_list.html:21 msgid "Background Workers" msgstr "" -#: templates/core/rq_worker_list.html:29 +#: netbox/templates/core/rq_worker_list.html:29 #, python-format msgid "Workers in %(queue_name)s" msgstr "" -#: templates/core/system.html:11 utilities/templates/buttons/export.html:4 +#: netbox/templates/core/system.html:11 +#: netbox/utilities/templates/buttons/export.html:4 msgid "Export" msgstr "" -#: templates/core/system.html:28 +#: netbox/templates/core/system.html:28 msgid "System Status" msgstr "" -#: templates/core/system.html:31 +#: netbox/templates/core/system.html:31 msgid "NetBox release" msgstr "" -#: templates/core/system.html:44 +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "" -#: templates/core/system.html:48 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "" -#: templates/core/system.html:52 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "" -#: templates/core/system.html:56 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "" -#: templates/core/system.html:61 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "" -#: templates/core/system.html:66 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "" -#: templates/core/system.html:69 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "" -#: templates/core/system.html:73 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "" -#: templates/core/system.html:85 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "" -#: templates/dcim/bulk_disconnect.html:9 +#: netbox/templates/dcim/bulk_disconnect.html:9 #, python-format msgid "" "Are you sure you want to disconnect these %(count)s %(obj_type_plural)s?" msgstr "" -#: templates/dcim/cable_trace.html:10 +#: netbox/templates/dcim/cable_trace.html:10 #, python-format msgid "Cable Trace for %(object_type)s %(object)s" msgstr "" -#: templates/dcim/cable_trace.html:24 templates/dcim/inc/rack_elevation.html:7 +#: netbox/templates/dcim/cable_trace.html:24 +#: netbox/templates/dcim/inc/rack_elevation.html:7 msgid "Download SVG" msgstr "" -#: templates/dcim/cable_trace.html:30 +#: netbox/templates/dcim/cable_trace.html:30 msgid "Asymmetric Path" msgstr "" -#: templates/dcim/cable_trace.html:31 +#: netbox/templates/dcim/cable_trace.html:31 msgid "The nodes below have no links and result in an asymmetric path" msgstr "" -#: templates/dcim/cable_trace.html:38 +#: netbox/templates/dcim/cable_trace.html:38 msgid "Path split" msgstr "" -#: templates/dcim/cable_trace.html:39 +#: netbox/templates/dcim/cable_trace.html:39 msgid "Select a node below to continue" msgstr "" -#: templates/dcim/cable_trace.html:55 +#: netbox/templates/dcim/cable_trace.html:55 msgid "Trace Completed" msgstr "" -#: templates/dcim/cable_trace.html:58 +#: netbox/templates/dcim/cable_trace.html:58 msgid "Total segments" msgstr "" -#: templates/dcim/cable_trace.html:62 +#: netbox/templates/dcim/cable_trace.html:62 msgid "Total length" msgstr "" -#: templates/dcim/cable_trace.html:77 +#: netbox/templates/dcim/cable_trace.html:77 msgid "No paths found" msgstr "" -#: templates/dcim/cable_trace.html:85 +#: netbox/templates/dcim/cable_trace.html:85 msgid "Related Paths" msgstr "" -#: templates/dcim/cable_trace.html:89 +#: netbox/templates/dcim/cable_trace.html:89 msgid "Origin" msgstr "" -#: templates/dcim/cable_trace.html:90 +#: netbox/templates/dcim/cable_trace.html:90 msgid "Destination" msgstr "" -#: templates/dcim/cable_trace.html:91 +#: netbox/templates/dcim/cable_trace.html:91 msgid "Segments" msgstr "" -#: templates/dcim/cable_trace.html:104 +#: netbox/templates/dcim/cable_trace.html:104 msgid "Incomplete" msgstr "" -#: templates/dcim/component_list.html:14 +#: netbox/templates/dcim/component_list.html:14 msgid "Rename Selected" msgstr "" -#: templates/dcim/consoleport.html:65 templates/dcim/consoleserverport.html:66 -#: templates/dcim/frontport.html:98 templates/dcim/interface.html:176 -#: templates/dcim/poweroutlet.html:69 templates/dcim/powerport.html:69 +#: netbox/templates/dcim/consoleport.html:65 +#: netbox/templates/dcim/consoleserverport.html:66 +#: netbox/templates/dcim/frontport.html:98 +#: netbox/templates/dcim/interface.html:176 +#: netbox/templates/dcim/poweroutlet.html:69 +#: netbox/templates/dcim/powerport.html:69 msgid "Not Connected" msgstr "" -#: templates/dcim/device.html:34 +#: netbox/templates/dcim/device.html:34 msgid "Highlight device in rack" msgstr "" -#: templates/dcim/device.html:55 +#: netbox/templates/dcim/device.html:55 msgid "Not racked" msgstr "" -#: templates/dcim/device.html:62 templates/dcim/site.html:94 +#: netbox/templates/dcim/device.html:62 netbox/templates/dcim/site.html:94 msgid "GPS Coordinates" msgstr "" -#: templates/dcim/device.html:68 templates/dcim/site.html:81 -#: templates/dcim/site.html:100 +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 msgid "Map" msgstr "" -#: templates/dcim/device.html:108 templates/dcim/inventoryitem.html:56 -#: templates/dcim/module.html:81 templates/dcim/modulebay.html:74 -#: templates/dcim/rack.html:61 +#: netbox/templates/dcim/device.html:108 +#: netbox/templates/dcim/inventoryitem.html:56 +#: netbox/templates/dcim/module.html:81 netbox/templates/dcim/modulebay.html:74 +#: netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "" -#: templates/dcim/device.html:123 +#: netbox/templates/dcim/device.html:123 msgid "View Virtual Chassis" msgstr "" -#: templates/dcim/device.html:164 +#: netbox/templates/dcim/device.html:164 msgid "Create VDC" msgstr "" -#: templates/dcim/device.html:175 templates/dcim/device_edit.html:64 -#: virtualization/forms/model_forms.py:223 +#: netbox/templates/dcim/device.html:175 +#: netbox/templates/dcim/device_edit.html:64 +#: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "" -#: templates/dcim/device.html:195 templates/dcim/device.html:211 -#: templates/dcim/device.html:227 -#: templates/virtualization/virtualmachine.html:57 -#: templates/virtualization/virtualmachine.html:73 +#: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 +#: netbox/templates/dcim/device.html:227 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "" -#: templates/dcim/device.html:197 templates/dcim/device.html:213 -#: templates/dcim/device.html:229 -#: templates/virtualization/virtualmachine.html:59 -#: templates/virtualization/virtualmachine.html:75 +#: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 +#: netbox/templates/dcim/device.html:229 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "" -#: templates/dcim/device.html:252 templates/dcim/rack.html:73 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "" -#: templates/dcim/device.html:256 +#: netbox/templates/dcim/device.html:256 msgid "Input" msgstr "" -#: templates/dcim/device.html:257 +#: netbox/templates/dcim/device.html:257 msgid "Outlets" msgstr "" -#: templates/dcim/device.html:258 +#: netbox/templates/dcim/device.html:258 msgid "Allocated" msgstr "" -#: templates/dcim/device.html:268 templates/dcim/device.html:270 -#: templates/dcim/device.html:286 templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/device.html:268 netbox/templates/dcim/device.html:270 +#: netbox/templates/dcim/device.html:286 +#: netbox/templates/dcim/powerfeed.html:67 msgid "VA" msgstr "" -#: templates/dcim/device.html:280 +#: netbox/templates/dcim/device.html:280 msgctxt "Leg of a power feed" msgid "Leg" msgstr "" -#: templates/dcim/device.html:306 -#: templates/virtualization/virtualmachine.html:158 +#: netbox/templates/dcim/device.html:306 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "" -#: templates/dcim/device/base.html:21 templates/dcim/device_list.html:9 -#: templates/dcim/devicetype/base.html:18 -#: templates/dcim/inc/moduletype_buttons.html:9 templates/dcim/module.html:18 -#: templates/virtualization/virtualmachine/base.html:22 -#: templates/virtualization/virtualmachine_list.html:8 +#: netbox/templates/dcim/device/base.html:21 +#: netbox/templates/dcim/device_list.html:9 +#: netbox/templates/dcim/devicetype/base.html:18 +#: netbox/templates/dcim/inc/moduletype_buttons.html:9 +#: netbox/templates/dcim/module.html:18 +#: netbox/templates/virtualization/virtualmachine/base.html:22 +#: netbox/templates/virtualization/virtualmachine_list.html:8 msgid "Add Components" msgstr "" -#: templates/dcim/device/consoleports.html:24 +#: netbox/templates/dcim/device/consoleports.html:24 msgid "Add Console Ports" msgstr "" -#: templates/dcim/device/consoleserverports.html:24 +#: netbox/templates/dcim/device/consoleserverports.html:24 msgid "Add Console Server Ports" msgstr "" -#: templates/dcim/device/devicebays.html:10 +#: netbox/templates/dcim/device/devicebays.html:10 msgid "Add Device Bays" msgstr "" -#: templates/dcim/device/frontports.html:24 +#: netbox/templates/dcim/device/frontports.html:24 msgid "Add Front Ports" msgstr "" -#: templates/dcim/device/inc/interface_table_controls.html:9 +#: netbox/templates/dcim/device/inc/interface_table_controls.html:9 msgid "Hide Enabled" msgstr "" -#: templates/dcim/device/inc/interface_table_controls.html:10 +#: netbox/templates/dcim/device/inc/interface_table_controls.html:10 msgid "Hide Disabled" msgstr "" -#: templates/dcim/device/inc/interface_table_controls.html:11 +#: netbox/templates/dcim/device/inc/interface_table_controls.html:11 msgid "Hide Virtual" msgstr "" -#: templates/dcim/device/inc/interface_table_controls.html:12 +#: netbox/templates/dcim/device/inc/interface_table_controls.html:12 msgid "Hide Disconnected" msgstr "" -#: templates/dcim/device/interfaces.html:27 +#: netbox/templates/dcim/device/interfaces.html:27 msgid "Add Interfaces" msgstr "" -#: templates/dcim/device/inventory.html:10 -#: templates/dcim/inc/panels/inventory_items.html:10 +#: netbox/templates/dcim/device/inventory.html:10 +#: netbox/templates/dcim/inc/panels/inventory_items.html:10 msgid "Add Inventory Item" msgstr "" -#: templates/dcim/device/modulebays.html:10 +#: netbox/templates/dcim/device/modulebays.html:10 msgid "Add Module Bays" msgstr "" -#: templates/dcim/device/poweroutlets.html:24 +#: netbox/templates/dcim/device/poweroutlets.html:24 msgid "Add Power Outlets" msgstr "" -#: templates/dcim/device/powerports.html:24 +#: netbox/templates/dcim/device/powerports.html:24 msgid "Add Power Port" msgstr "" -#: templates/dcim/device/rearports.html:24 +#: netbox/templates/dcim/device/rearports.html:24 msgid "Add Rear Ports" msgstr "" -#: templates/dcim/device/render_config.html:5 -#: templates/virtualization/virtualmachine/render_config.html:5 +#: netbox/templates/dcim/device/render_config.html:5 +#: netbox/templates/virtualization/virtualmachine/render_config.html:5 msgid "Config" msgstr "" -#: templates/dcim/device/render_config.html:35 -#: templates/virtualization/virtualmachine/render_config.html:35 +#: netbox/templates/dcim/device/render_config.html:35 +#: netbox/templates/virtualization/virtualmachine/render_config.html:35 msgid "Context Data" msgstr "" -#: templates/dcim/device/render_config.html:53 -#: templates/virtualization/virtualmachine/render_config.html:53 +#: netbox/templates/dcim/device/render_config.html:53 +#: netbox/templates/virtualization/virtualmachine/render_config.html:53 msgid "Rendered Config" msgstr "" -#: templates/dcim/device/render_config.html:55 -#: templates/virtualization/virtualmachine/render_config.html:55 +#: netbox/templates/dcim/device/render_config.html:55 +#: netbox/templates/virtualization/virtualmachine/render_config.html:55 msgid "Download" msgstr "" -#: templates/dcim/device/render_config.html:61 -#: templates/virtualization/virtualmachine/render_config.html:61 +#: netbox/templates/dcim/device/render_config.html:61 +#: netbox/templates/virtualization/virtualmachine/render_config.html:61 msgid "No configuration template found" msgstr "" -#: templates/dcim/device_edit.html:44 +#: netbox/templates/dcim/device_edit.html:44 msgid "Parent Bay" msgstr "" -#: templates/dcim/device_edit.html:48 -#: utilities/templates/form_helpers/render_field.html:22 +#: netbox/templates/dcim/device_edit.html:48 +#: netbox/utilities/templates/form_helpers/render_field.html:22 msgid "Regenerate Slug" msgstr "" -#: templates/dcim/device_edit.html:49 templates/generic/bulk_remove.html:21 -#: utilities/templates/helpers/table_config_form.html:23 +#: netbox/templates/dcim/device_edit.html:49 +#: netbox/templates/generic/bulk_remove.html:21 +#: netbox/utilities/templates/helpers/table_config_form.html:23 msgid "Remove" msgstr "" -#: templates/dcim/device_edit.html:110 +#: netbox/templates/dcim/device_edit.html:110 msgid "Local Config Context Data" msgstr "" -#: templates/dcim/device_list.html:82 templates/generic/bulk_rename.html:57 -#: templates/virtualization/virtualmachine/interfaces.html:11 -#: templates/virtualization/virtualmachine/virtual_disks.html:11 +#: netbox/templates/dcim/device_list.html:82 +#: netbox/templates/generic/bulk_rename.html:57 +#: netbox/templates/virtualization/virtualmachine/interfaces.html:11 +#: netbox/templates/virtualization/virtualmachine/virtual_disks.html:11 msgid "Rename" msgstr "" -#: templates/dcim/devicebay.html:17 +#: netbox/templates/dcim/devicebay.html:17 msgid "Device Bay" msgstr "" -#: templates/dcim/devicebay.html:43 +#: netbox/templates/dcim/devicebay.html:43 msgid "Installed Device" msgstr "" -#: templates/dcim/devicebay_depopulate.html:6 +#: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" msgstr "" -#: templates/dcim/devicebay_depopulate.html:13 +#: netbox/templates/dcim/devicebay_depopulate.html:13 #, python-format msgid "" "Are you sure you want to remove %(device)s from " "%(device_bay)s?" msgstr "" -#: templates/dcim/devicebay_populate.html:13 +#: netbox/templates/dcim/devicebay_populate.html:13 msgid "Populate" msgstr "" -#: templates/dcim/devicebay_populate.html:22 +#: netbox/templates/dcim/devicebay_populate.html:22 msgid "Bay" msgstr "" -#: templates/dcim/devicerole.html:14 templates/dcim/platform.html:17 +#: netbox/templates/dcim/devicerole.html:14 +#: netbox/templates/dcim/platform.html:17 msgid "Add Device" msgstr "" -#: templates/dcim/devicerole.html:40 +#: netbox/templates/dcim/devicerole.html:40 msgid "VM Role" msgstr "" -#: templates/dcim/devicetype.html:18 templates/dcim/moduletype.html:29 +#: netbox/templates/dcim/devicetype.html:18 +#: netbox/templates/dcim/moduletype.html:29 msgid "Model Name" msgstr "" -#: templates/dcim/devicetype.html:25 templates/dcim/moduletype.html:33 +#: netbox/templates/dcim/devicetype.html:25 +#: netbox/templates/dcim/moduletype.html:33 msgid "Part Number" msgstr "" -#: templates/dcim/devicetype.html:41 +#: netbox/templates/dcim/devicetype.html:41 msgid "Exclude From Utilization" msgstr "" -#: templates/dcim/devicetype.html:59 +#: netbox/templates/dcim/devicetype.html:59 msgid "Parent/Child" msgstr "" -#: templates/dcim/devicetype.html:71 +#: netbox/templates/dcim/devicetype.html:71 msgid "Front Image" msgstr "" -#: templates/dcim/devicetype.html:83 +#: netbox/templates/dcim/devicetype.html:83 msgid "Rear Image" msgstr "" -#: templates/dcim/frontport.html:54 +#: netbox/templates/dcim/frontport.html:54 msgid "Rear Port Position" msgstr "" -#: templates/dcim/frontport.html:72 templates/dcim/interface.html:144 -#: templates/dcim/poweroutlet.html:63 templates/dcim/powerport.html:63 -#: templates/dcim/rearport.html:68 +#: netbox/templates/dcim/frontport.html:72 +#: netbox/templates/dcim/interface.html:144 +#: netbox/templates/dcim/poweroutlet.html:63 +#: netbox/templates/dcim/powerport.html:63 +#: netbox/templates/dcim/rearport.html:68 msgid "Marked as Connected" msgstr "" -#: templates/dcim/frontport.html:86 templates/dcim/rearport.html:82 +#: netbox/templates/dcim/frontport.html:86 +#: netbox/templates/dcim/rearport.html:82 msgid "Connection Status" msgstr "" -#: templates/dcim/htmx/cable_edit.html:10 +#: netbox/templates/dcim/htmx/cable_edit.html:10 msgid "A Side" msgstr "" -#: templates/dcim/htmx/cable_edit.html:30 +#: netbox/templates/dcim/htmx/cable_edit.html:30 msgid "B Side" msgstr "" -#: templates/dcim/inc/cable_termination.html:65 +#: netbox/templates/dcim/inc/cable_termination.html:65 msgid "No termination" msgstr "" -#: templates/dcim/inc/cable_toggle_buttons.html:3 +#: netbox/templates/dcim/inc/cable_toggle_buttons.html:3 msgid "Mark Planned" msgstr "" -#: templates/dcim/inc/cable_toggle_buttons.html:6 +#: netbox/templates/dcim/inc/cable_toggle_buttons.html:6 msgid "Mark Installed" msgstr "" -#: templates/dcim/inc/connection_endpoints.html:13 +#: netbox/templates/dcim/inc/connection_endpoints.html:13 msgid "Path Status" msgstr "" -#: templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/inc/connection_endpoints.html:18 msgid "Not Reachable" msgstr "" -#: templates/dcim/inc/connection_endpoints.html:23 +#: netbox/templates/dcim/inc/connection_endpoints.html:23 msgid "Path Endpoints" msgstr "" -#: templates/dcim/inc/endpoint_connection.html:8 -#: templates/dcim/powerfeed.html:120 templates/dcim/rearport.html:94 +#: netbox/templates/dcim/inc/endpoint_connection.html:8 +#: netbox/templates/dcim/powerfeed.html:120 +#: netbox/templates/dcim/rearport.html:94 msgid "Not connected" msgstr "" -#: templates/dcim/inc/interface_vlans_table.html:6 +#: netbox/templates/dcim/inc/interface_vlans_table.html:6 msgid "Untagged" msgstr "" -#: templates/dcim/inc/interface_vlans_table.html:37 +#: netbox/templates/dcim/inc/interface_vlans_table.html:37 msgid "No VLANs Assigned" msgstr "" -#: templates/dcim/inc/interface_vlans_table.html:44 -#: templates/ipam/prefix_list.html:16 templates/ipam/prefix_list.html:33 +#: netbox/templates/dcim/inc/interface_vlans_table.html:44 +#: netbox/templates/ipam/prefix_list.html:16 +#: netbox/templates/ipam/prefix_list.html:33 msgid "Clear" msgstr "" -#: templates/dcim/inc/interface_vlans_table.html:47 +#: netbox/templates/dcim/inc/interface_vlans_table.html:47 msgid "Clear All" msgstr "" -#: templates/dcim/inc/panels/racktype_dimensions.html:38 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 msgid "Mounting Depth" msgstr "" -#: templates/dcim/inc/panels/racktype_numbering.html:6 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 msgid "Starting Unit" msgstr "" -#: templates/dcim/inc/panels/racktype_numbering.html:10 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 msgid "Descending Units" msgstr "" -#: templates/dcim/inc/rack_elevation.html:3 +#: netbox/templates/dcim/inc/rack_elevation.html:3 msgid "Rack elevation" msgstr "" -#: templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "" -#: templates/dcim/interface.html:50 +#: netbox/templates/dcim/interface.html:50 msgid "Speed/Duplex" msgstr "" -#: templates/dcim/interface.html:73 +#: netbox/templates/dcim/interface.html:73 msgid "PoE Mode" msgstr "" -#: templates/dcim/interface.html:77 +#: netbox/templates/dcim/interface.html:77 msgid "PoE Type" msgstr "" -#: templates/dcim/interface.html:81 -#: templates/virtualization/vminterface.html:63 +#: netbox/templates/dcim/interface.html:81 +#: netbox/templates/virtualization/vminterface.html:63 msgid "802.1Q Mode" msgstr "" -#: templates/dcim/interface.html:125 -#: templates/virtualization/vminterface.html:59 +#: netbox/templates/dcim/interface.html:125 +#: netbox/templates/virtualization/vminterface.html:59 msgid "MAC Address" msgstr "" -#: templates/dcim/interface.html:151 +#: netbox/templates/dcim/interface.html:151 msgid "Wireless Link" msgstr "" -#: templates/dcim/interface.html:218 vpn/choices.py:55 +#: netbox/templates/dcim/interface.html:218 netbox/vpn/choices.py:55 msgid "Peer" msgstr "" -#: templates/dcim/interface.html:230 -#: templates/wireless/inc/wirelesslink_interface.html:26 +#: netbox/templates/dcim/interface.html:230 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:26 msgid "Channel" msgstr "" -#: templates/dcim/interface.html:239 -#: templates/wireless/inc/wirelesslink_interface.html:32 +#: netbox/templates/dcim/interface.html:239 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:32 msgid "Channel Frequency" msgstr "" -#: templates/dcim/interface.html:242 templates/dcim/interface.html:250 -#: templates/dcim/interface.html:261 templates/dcim/interface.html:269 +#: netbox/templates/dcim/interface.html:242 +#: netbox/templates/dcim/interface.html:250 +#: netbox/templates/dcim/interface.html:261 +#: netbox/templates/dcim/interface.html:269 msgid "MHz" msgstr "" -#: templates/dcim/interface.html:258 -#: templates/wireless/inc/wirelesslink_interface.html:42 +#: netbox/templates/dcim/interface.html:258 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:42 msgid "Channel Width" msgstr "" -#: templates/dcim/interface.html:285 templates/wireless/wirelesslan.html:14 -#: templates/wireless/wirelesslink.html:21 wireless/forms/bulk_edit.py:60 -#: wireless/forms/bulk_edit.py:102 wireless/forms/filtersets.py:40 -#: wireless/forms/filtersets.py:80 wireless/models.py:82 wireless/models.py:156 -#: wireless/tables/wirelesslan.py:44 +#: netbox/templates/dcim/interface.html:285 +#: netbox/templates/wireless/wirelesslan.html:14 +#: netbox/templates/wireless/wirelesslink.html:21 +#: netbox/wireless/forms/bulk_edit.py:60 netbox/wireless/forms/bulk_edit.py:102 +#: netbox/wireless/forms/filtersets.py:40 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "" -#: templates/dcim/interface.html:305 +#: netbox/templates/dcim/interface.html:305 msgid "LAG Members" msgstr "" -#: templates/dcim/interface.html:323 +#: netbox/templates/dcim/interface.html:323 msgid "No member interfaces" msgstr "" -#: templates/dcim/interface.html:343 templates/ipam/fhrpgroup.html:73 -#: templates/ipam/iprange/ip_addresses.html:7 -#: templates/ipam/prefix/ip_addresses.html:7 -#: templates/virtualization/vminterface.html:89 +#: netbox/templates/dcim/interface.html:343 +#: netbox/templates/ipam/fhrpgroup.html:73 +#: netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +#: netbox/templates/virtualization/vminterface.html:89 msgid "Add IP Address" msgstr "" -#: templates/dcim/inventoryitem.html:24 +#: netbox/templates/dcim/inventoryitem.html:24 msgid "Parent Item" msgstr "" -#: templates/dcim/inventoryitem.html:48 +#: netbox/templates/dcim/inventoryitem.html:48 msgid "Part ID" msgstr "" -#: templates/dcim/location.html:17 +#: netbox/templates/dcim/location.html:17 msgid "Add Child Location" msgstr "" -#: templates/dcim/location.html:77 +#: netbox/templates/dcim/location.html:77 msgid "Child Locations" msgstr "" -#: templates/dcim/location.html:81 templates/dcim/site.html:131 +#: netbox/templates/dcim/location.html:81 netbox/templates/dcim/site.html:131 msgid "Add a Location" msgstr "" -#: templates/dcim/location.html:94 templates/dcim/site.html:144 +#: netbox/templates/dcim/location.html:94 netbox/templates/dcim/site.html:144 msgid "Add a Device" msgstr "" -#: templates/dcim/manufacturer.html:16 +#: netbox/templates/dcim/manufacturer.html:16 msgid "Add Device Type" msgstr "" -#: templates/dcim/manufacturer.html:21 +#: netbox/templates/dcim/manufacturer.html:21 msgid "Add Module Type" msgstr "" -#: templates/dcim/powerfeed.html:53 +#: netbox/templates/dcim/powerfeed.html:53 msgid "Connected Device" msgstr "" -#: templates/dcim/powerfeed.html:63 +#: netbox/templates/dcim/powerfeed.html:63 msgid "Utilization (Allocated" msgstr "" -#: templates/dcim/powerfeed.html:80 +#: netbox/templates/dcim/powerfeed.html:80 msgid "Electrical Characteristics" msgstr "" -#: templates/dcim/powerfeed.html:88 +#: netbox/templates/dcim/powerfeed.html:88 msgctxt "Abbreviation for volts" msgid "V" msgstr "" -#: templates/dcim/powerfeed.html:92 +#: netbox/templates/dcim/powerfeed.html:92 msgctxt "Abbreviation for amperes" msgid "A" msgstr "" -#: templates/dcim/poweroutlet.html:48 +#: netbox/templates/dcim/poweroutlet.html:48 msgid "Feed Leg" msgstr "" -#: templates/dcim/powerpanel.html:72 +#: netbox/templates/dcim/powerpanel.html:72 msgid "Add Power Feeds" msgstr "" -#: templates/dcim/powerport.html:44 +#: netbox/templates/dcim/powerport.html:44 msgid "Maximum Draw" msgstr "" -#: templates/dcim/powerport.html:48 +#: netbox/templates/dcim/powerport.html:48 msgid "Allocated Draw" msgstr "" -#: templates/dcim/rack.html:69 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "" -#: templates/dcim/rack.html:84 templates/dcim/racktype.html:44 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "" -#: templates/dcim/rack.html:94 templates/dcim/racktype.html:54 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "" -#: templates/dcim/rack.html:104 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "" -#: templates/dcim/rack.html:125 templates/dcim/rack_elevation_list.html:15 +#: netbox/templates/dcim/rack.html:125 +#: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "" -#: templates/dcim/rack.html:126 templates/dcim/rack_elevation_list.html:16 +#: netbox/templates/dcim/rack.html:126 +#: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "" -#: templates/dcim/rack.html:127 templates/dcim/rack_elevation_list.html:17 +#: netbox/templates/dcim/rack.html:127 +#: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "" -#: templates/dcim/rack/reservations.html:8 +#: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "" -#: templates/dcim/rack_elevation_list.html:12 +#: netbox/templates/dcim/rack_elevation_list.html:12 msgid "View List" msgstr "" -#: templates/dcim/rack_elevation_list.html:14 +#: netbox/templates/dcim/rack_elevation_list.html:14 msgid "Select rack view" msgstr "" -#: templates/dcim/rack_elevation_list.html:25 +#: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "" -#: templates/dcim/rack_elevation_list.html:74 +#: netbox/templates/dcim/rack_elevation_list.html:74 msgid "No Racks Found" msgstr "" -#: templates/dcim/rack_list.html:8 +#: netbox/templates/dcim/rack_list.html:8 msgid "View Elevations" msgstr "" -#: templates/dcim/rackreservation.html:42 +#: netbox/templates/dcim/rackreservation.html:42 msgid "Reservation Details" msgstr "" -#: templates/dcim/rackrole.html:10 +#: netbox/templates/dcim/rackrole.html:10 msgid "Add Rack" msgstr "" -#: templates/dcim/rearport.html:50 +#: netbox/templates/dcim/rearport.html:50 msgid "Positions" msgstr "" -#: templates/dcim/region.html:17 templates/dcim/sitegroup.html:17 +#: netbox/templates/dcim/region.html:17 netbox/templates/dcim/sitegroup.html:17 msgid "Add Site" msgstr "" -#: templates/dcim/region.html:55 +#: netbox/templates/dcim/region.html:55 msgid "Child Regions" msgstr "" -#: templates/dcim/region.html:59 +#: netbox/templates/dcim/region.html:59 msgid "Add Region" msgstr "" -#: templates/dcim/site.html:64 +#: netbox/templates/dcim/site.html:64 msgid "Time Zone" msgstr "" -#: templates/dcim/site.html:67 +#: netbox/templates/dcim/site.html:67 msgid "UTC" msgstr "" -#: templates/dcim/site.html:68 +#: netbox/templates/dcim/site.html:68 msgid "Site time" msgstr "" -#: templates/dcim/site.html:75 +#: netbox/templates/dcim/site.html:75 msgid "Physical Address" msgstr "" -#: templates/dcim/site.html:90 +#: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "" -#: templates/dcim/sitegroup.html:55 templates/tenancy/contactgroup.html:46 -#: templates/tenancy/tenantgroup.html:55 -#: templates/wireless/wirelesslangroup.html:55 +#: netbox/templates/dcim/sitegroup.html:55 +#: netbox/templates/tenancy/contactgroup.html:46 +#: netbox/templates/tenancy/tenantgroup.html:55 +#: netbox/templates/wireless/wirelesslangroup.html:55 msgid "Child Groups" msgstr "" -#: templates/dcim/sitegroup.html:59 +#: netbox/templates/dcim/sitegroup.html:59 msgid "Add Site Group" msgstr "" -#: templates/dcim/trace/attachment.html:5 -#: templates/extras/exporttemplate.html:31 +#: netbox/templates/dcim/trace/attachment.html:5 +#: netbox/templates/extras/exporttemplate.html:31 msgid "Attachment" msgstr "" -#: templates/dcim/virtualchassis.html:57 +#: netbox/templates/dcim/virtualchassis.html:57 msgid "Add Member" msgstr "" -#: templates/dcim/virtualchassis_add.html:18 +#: netbox/templates/dcim/virtualchassis_add.html:18 msgid "Member Devices" msgstr "" -#: templates/dcim/virtualchassis_add_member.html:10 +#: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" msgstr "" -#: templates/dcim/virtualchassis_add_member.html:19 +#: netbox/templates/dcim/virtualchassis_add_member.html:19 msgid "Add New Member" msgstr "" -#: templates/dcim/virtualchassis_add_member.html:27 -#: templates/generic/object_edit.html:78 -#: templates/users/objectpermission.html:31 users/forms/filtersets.py:67 -#: users/forms/model_forms.py:312 +#: netbox/templates/dcim/virtualchassis_add_member.html:27 +#: netbox/templates/generic/object_edit.html:78 +#: netbox/templates/users/objectpermission.html:31 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:312 msgid "Actions" msgstr "" -#: templates/dcim/virtualchassis_add_member.html:29 +#: netbox/templates/dcim/virtualchassis_add_member.html:29 msgid "Save & Add Another" msgstr "" -#: templates/dcim/virtualchassis_edit.html:7 +#: netbox/templates/dcim/virtualchassis_edit.html:7 #, python-format msgid "Editing Virtual Chassis %(name)s" msgstr "" -#: templates/dcim/virtualchassis_edit.html:53 +#: netbox/templates/dcim/virtualchassis_edit.html:53 msgid "Rack/Unit" msgstr "" -#: templates/dcim/virtualchassis_remove_member.html:5 +#: netbox/templates/dcim/virtualchassis_remove_member.html:5 msgid "Remove Virtual Chassis Member" msgstr "" -#: templates/dcim/virtualchassis_remove_member.html:9 +#: netbox/templates/dcim/virtualchassis_remove_member.html:9 #, python-format msgid "" "Are you sure you want to remove %(device)s from virtual " "chassis %(name)s?" msgstr "" -#: templates/dcim/virtualdevicecontext.html:26 templates/vpn/l2vpn.html:18 +#: netbox/templates/dcim/virtualdevicecontext.html:26 +#: netbox/templates/vpn/l2vpn.html:18 msgid "Identifier" msgstr "" -#: templates/exceptions/import_error.html:6 +#: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " "the following:" msgstr "" -#: templates/exceptions/import_error.html:10 +#: netbox/templates/exceptions/import_error.html:10 msgid "Missing required packages" msgstr "" -#: templates/exceptions/import_error.html:11 +#: netbox/templates/exceptions/import_error.html:11 msgid "" "This installation of NetBox might be missing one or more required Python " "packages. These packages are listed in requirements.txt and " @@ -12083,28 +12738,28 @@ msgid "" "of required packages." msgstr "" -#: templates/exceptions/import_error.html:20 +#: netbox/templates/exceptions/import_error.html:20 msgid "WSGI service not restarted after upgrade" msgstr "" -#: templates/exceptions/import_error.html:21 +#: netbox/templates/exceptions/import_error.html:21 msgid "" "If this installation has recently been upgraded, check that the WSGI service " "(e.g. gunicorn or uWSGI) has been restarted. This ensures that the new code " "is running." msgstr "" -#: templates/exceptions/permission_error.html:6 +#: netbox/templates/exceptions/permission_error.html:6 msgid "" "A file permission error was detected while processing this request. Common " "causes include the following:" msgstr "" -#: templates/exceptions/permission_error.html:10 +#: netbox/templates/exceptions/permission_error.html:10 msgid "Insufficient write permission to the media root" msgstr "" -#: templates/exceptions/permission_error.html:11 +#: netbox/templates/exceptions/permission_error.html:11 #, python-format msgid "" "The configured media root is %(media_root)s. Ensure that the " @@ -12112,367 +12767,377 @@ msgid "" "path." msgstr "" -#: templates/exceptions/programming_error.html:6 +#: netbox/templates/exceptions/programming_error.html:6 msgid "" "A database programming error was detected while processing this request. " "Common causes include the following:" msgstr "" -#: templates/exceptions/programming_error.html:10 +#: netbox/templates/exceptions/programming_error.html:10 msgid "Database migrations missing" msgstr "" -#: templates/exceptions/programming_error.html:11 +#: netbox/templates/exceptions/programming_error.html:11 msgid "" "When upgrading to a new NetBox release, the upgrade script must be run to " "apply any new database migrations. You can run migrations manually by " "executing python3 manage.py migrate from the command line." msgstr "" -#: templates/exceptions/programming_error.html:18 +#: netbox/templates/exceptions/programming_error.html:18 msgid "Unsupported PostgreSQL version" msgstr "" -#: templates/exceptions/programming_error.html:19 +#: netbox/templates/exceptions/programming_error.html:19 msgid "" "Ensure that PostgreSQL version 12 or later is in use. You can check this by " "connecting to the database using NetBox's credentials and issuing a query " "for SELECT VERSION()." msgstr "" -#: templates/extras/configcontext.html:45 -#: templates/extras/configtemplate.html:37 -#: templates/extras/exporttemplate.html:51 +#: netbox/templates/extras/configcontext.html:45 +#: netbox/templates/extras/configtemplate.html:37 +#: netbox/templates/extras/exporttemplate.html:51 msgid "The data file associated with this object has been deleted" msgstr "" -#: templates/extras/configcontext.html:54 -#: templates/extras/configtemplate.html:46 -#: templates/extras/exporttemplate.html:60 +#: netbox/templates/extras/configcontext.html:54 +#: netbox/templates/extras/configtemplate.html:46 +#: netbox/templates/extras/exporttemplate.html:60 msgid "Data Synced" msgstr "" -#: templates/extras/configcontext_list.html:7 -#: templates/extras/configtemplate_list.html:7 -#: templates/extras/exporttemplate_list.html:7 +#: netbox/templates/extras/configcontext_list.html:7 +#: netbox/templates/extras/configtemplate_list.html:7 +#: netbox/templates/extras/exporttemplate_list.html:7 msgid "Sync Data" msgstr "" -#: templates/extras/configtemplate.html:56 +#: netbox/templates/extras/configtemplate.html:56 msgid "Environment Parameters" msgstr "" -#: templates/extras/configtemplate.html:67 -#: templates/extras/exporttemplate.html:79 +#: netbox/templates/extras/configtemplate.html:67 +#: netbox/templates/extras/exporttemplate.html:79 msgid "Template" msgstr "" -#: templates/extras/customfield.html:30 templates/extras/customlink.html:21 +#: netbox/templates/extras/customfield.html:30 +#: netbox/templates/extras/customlink.html:21 msgid "Group Name" msgstr "" -#: templates/extras/customfield.html:42 +#: netbox/templates/extras/customfield.html:42 msgid "Must be Unique" msgstr "" -#: templates/extras/customfield.html:46 +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "" -#: templates/extras/customfield.html:56 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "" -#: templates/extras/customfield.html:73 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "" -#: templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "" -#: templates/extras/customfield.html:87 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "" -#: templates/extras/customfield.html:91 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "" -#: templates/extras/customfield.html:95 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "" -#: templates/extras/customfield.html:115 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "" -#: templates/extras/customfield.html:126 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "" -#: templates/extras/customlink.html:29 +#: netbox/templates/extras/customlink.html:29 msgid "Button Class" msgstr "" -#: templates/extras/customlink.html:39 templates/extras/exporttemplate.html:66 -#: templates/extras/savedfilter.html:39 +#: netbox/templates/extras/customlink.html:39 +#: netbox/templates/extras/exporttemplate.html:66 +#: netbox/templates/extras/savedfilter.html:39 msgid "Assigned Models" msgstr "" -#: templates/extras/customlink.html:52 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "" -#: templates/extras/customlink.html:58 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "" -#: templates/extras/dashboard/reset.html:4 templates/home.html:66 +#: netbox/templates/extras/dashboard/reset.html:4 netbox/templates/home.html:66 msgid "Reset Dashboard" msgstr "" -#: templates/extras/dashboard/reset.html:8 +#: netbox/templates/extras/dashboard/reset.html:8 msgid "" "This will remove all configured widgets and restore the " "default dashboard configuration." msgstr "" -#: templates/extras/dashboard/reset.html:13 +#: netbox/templates/extras/dashboard/reset.html:13 msgid "" "This change affects only your dashboard, and will not impact other " "users." msgstr "" -#: templates/extras/dashboard/widget.html:21 +#: netbox/templates/extras/dashboard/widget.html:21 msgid "widget configuration" msgstr "" -#: templates/extras/dashboard/widget.html:36 +#: netbox/templates/extras/dashboard/widget.html:36 msgid "Close widget" msgstr "" -#: templates/extras/dashboard/widget_add.html:7 +#: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "" -#: templates/extras/dashboard/widgets/bookmarks.html:14 +#: netbox/templates/extras/dashboard/widgets/bookmarks.html:14 msgid "No bookmarks have been added yet." msgstr "" -#: templates/extras/dashboard/widgets/objectcounts.html:10 +#: netbox/templates/extras/dashboard/widgets/objectcounts.html:10 msgid "No permission" msgstr "" -#: templates/extras/dashboard/widgets/objectlist.html:6 +#: netbox/templates/extras/dashboard/widgets/objectlist.html:6 msgid "No permission to view this content" msgstr "" -#: templates/extras/dashboard/widgets/objectlist.html:10 +#: netbox/templates/extras/dashboard/widgets/objectlist.html:10 msgid "Unable to load content. Invalid view name" msgstr "" -#: templates/extras/dashboard/widgets/rssfeed.html:12 +#: netbox/templates/extras/dashboard/widgets/rssfeed.html:12 msgid "No content found" msgstr "" -#: templates/extras/dashboard/widgets/rssfeed.html:18 +#: netbox/templates/extras/dashboard/widgets/rssfeed.html:18 msgid "There was a problem fetching the RSS feed" msgstr "" -#: templates/extras/dashboard/widgets/rssfeed.html:21 +#: netbox/templates/extras/dashboard/widgets/rssfeed.html:21 msgid "HTTP" msgstr "" -#: templates/extras/eventrule.html:61 +#: netbox/templates/extras/eventrule.html:61 msgid "Conditions" msgstr "" -#: templates/extras/exporttemplate.html:23 +#: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" msgstr "" -#: templates/extras/exporttemplate.html:27 +#: netbox/templates/extras/exporttemplate.html:27 msgid "File Extension" msgstr "" -#: templates/extras/htmx/script_result.html:10 +#: netbox/templates/extras/htmx/script_result.html:10 msgid "Scheduled for" msgstr "" -#: templates/extras/htmx/script_result.html:15 +#: netbox/templates/extras/htmx/script_result.html:15 msgid "Duration" msgstr "" -#: templates/extras/htmx/script_result.html:23 +#: netbox/templates/extras/htmx/script_result.html:23 msgid "Test Summary" msgstr "" -#: templates/extras/htmx/script_result.html:43 +#: netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "" -#: templates/extras/htmx/script_result.html:56 +#: netbox/templates/extras/htmx/script_result.html:56 msgid "Output" msgstr "" -#: templates/extras/inc/result_pending.html:4 +#: netbox/templates/extras/inc/result_pending.html:4 msgid "Loading" msgstr "" -#: templates/extras/inc/result_pending.html:6 +#: netbox/templates/extras/inc/result_pending.html:6 msgid "Results pending" msgstr "" -#: templates/extras/journalentry.html:15 +#: netbox/templates/extras/journalentry.html:15 msgid "Journal Entry" msgstr "" -#: templates/extras/notificationgroup.html:11 +#: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "" -#: templates/extras/notificationgroup.html:36 -#: templates/extras/notificationgroup.html:46 -#: utilities/templates/widgets/clearable_file_input.html:12 +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 msgid "None assigned" msgstr "" -#: templates/extras/object_configcontext.html:19 +#: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" msgstr "" -#: templates/extras/object_configcontext.html:25 +#: netbox/templates/extras/object_configcontext.html:25 msgid "Source Contexts" msgstr "" -#: templates/extras/object_journal.html:17 +#: netbox/templates/extras/object_journal.html:17 msgid "New Journal Entry" msgstr "" -#: templates/extras/report/base.html:30 +#: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "" -#: templates/extras/script.html:14 +#: netbox/templates/extras/script.html:14 msgid "You do not have permission to run scripts" msgstr "" -#: templates/extras/script.html:41 templates/extras/script.html:45 -#: templates/extras/script_list.html:86 +#: netbox/templates/extras/script.html:41 +#: netbox/templates/extras/script.html:45 +#: netbox/templates/extras/script_list.html:87 msgid "Run Script" msgstr "" -#: templates/extras/script.html:51 templates/extras/script/source.html:10 +#: netbox/templates/extras/script.html:51 +#: netbox/templates/extras/script/source.html:10 msgid "Error loading script" msgstr "" -#: templates/extras/script/jobs.html:16 +#: netbox/templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "" -#: templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:47 msgid "Last Run" msgstr "" -#: templates/extras/script_list.html:61 +#: netbox/templates/extras/script_list.html:62 msgid "Script is no longer present in the source file" msgstr "" -#: templates/extras/script_list.html:74 +#: netbox/templates/extras/script_list.html:75 msgid "Never" msgstr "" -#: templates/extras/script_list.html:84 +#: netbox/templates/extras/script_list.html:85 msgid "Run Again" msgstr "" -#: templates/extras/script_list.html:138 +#: netbox/templates/extras/script_list.html:133 +#, python-format +msgid "Could not load scripts from module %(module)s" +msgstr "" + +#: netbox/templates/extras/script_list.html:141 msgid "No Scripts Found" msgstr "" -#: templates/extras/script_list.html:141 +#: netbox/templates/extras/script_list.html:144 #, python-format msgid "" "Get started by creating a script from " "an uploaded file or data source." msgstr "" -#: templates/extras/script_result.html:35 templates/generic/object_list.html:50 -#: templates/search.html:13 +#: netbox/templates/extras/script_result.html:35 +#: netbox/templates/generic/object_list.html:50 netbox/templates/search.html:13 msgid "Results" msgstr "" -#: templates/extras/script_result.html:46 +#: netbox/templates/extras/script_result.html:46 msgid "Log threshold" msgstr "" -#: templates/extras/script_result.html:56 +#: netbox/templates/extras/script_result.html:56 msgid "All" msgstr "" -#: templates/extras/tag.html:32 +#: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "" -#: templates/extras/tag.html:43 +#: netbox/templates/extras/tag.html:43 msgid "Allowed Object Types" msgstr "" -#: templates/extras/tag.html:51 +#: netbox/templates/extras/tag.html:51 msgid "Any" msgstr "" -#: templates/extras/tag.html:57 +#: netbox/templates/extras/tag.html:57 msgid "Tagged Item Types" msgstr "" -#: templates/extras/tag.html:81 +#: netbox/templates/extras/tag.html:81 msgid "Tagged Objects" msgstr "" -#: templates/extras/webhook.html:26 +#: netbox/templates/extras/webhook.html:26 msgid "HTTP Method" msgstr "" -#: templates/extras/webhook.html:34 +#: netbox/templates/extras/webhook.html:34 msgid "HTTP Content Type" msgstr "" -#: templates/extras/webhook.html:47 +#: netbox/templates/extras/webhook.html:47 msgid "SSL Verification" msgstr "" -#: templates/extras/webhook.html:60 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "" -#: templates/extras/webhook.html:70 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "" -#: templates/generic/bulk_add_component.html:29 +#: netbox/templates/generic/bulk_add_component.html:29 msgid "Bulk Creation" msgstr "" -#: templates/generic/bulk_add_component.html:34 -#: templates/generic/bulk_delete.html:32 templates/generic/bulk_edit.html:33 +#: netbox/templates/generic/bulk_add_component.html:34 +#: netbox/templates/generic/bulk_delete.html:32 +#: netbox/templates/generic/bulk_edit.html:33 msgid "Selected Objects" msgstr "" -#: templates/generic/bulk_add_component.html:58 +#: netbox/templates/generic/bulk_add_component.html:58 msgid "to Add" msgstr "" -#: templates/generic/bulk_delete.html:27 +#: netbox/templates/generic/bulk_delete.html:27 msgid "Bulk Delete" msgstr "" -#: templates/generic/bulk_delete.html:49 +#: netbox/templates/generic/bulk_delete.html:49 msgid "Confirm Bulk Deletion" msgstr "" -#: templates/generic/bulk_delete.html:50 +#: netbox/templates/generic/bulk_delete.html:50 #, python-format msgid "" "The following operation will delete %(count)s " @@ -12480,79 +13145,82 @@ msgid "" "this action." msgstr "" -#: templates/generic/bulk_edit.html:21 templates/generic/object_edit.html:22 +#: netbox/templates/generic/bulk_edit.html:21 +#: netbox/templates/generic/object_edit.html:22 msgid "Editing" msgstr "" -#: templates/generic/bulk_edit.html:28 +#: netbox/templates/generic/bulk_edit.html:28 msgid "Bulk Edit" msgstr "" -#: templates/generic/bulk_edit.html:107 templates/generic/bulk_rename.html:66 +#: netbox/templates/generic/bulk_edit.html:107 +#: netbox/templates/generic/bulk_rename.html:66 msgid "Apply" msgstr "" -#: templates/generic/bulk_import.html:19 +#: netbox/templates/generic/bulk_import.html:19 msgid "Bulk Import" msgstr "" -#: templates/generic/bulk_import.html:25 +#: netbox/templates/generic/bulk_import.html:25 msgid "Direct Import" msgstr "" -#: templates/generic/bulk_import.html:30 +#: netbox/templates/generic/bulk_import.html:30 msgid "Upload File" msgstr "" -#: templates/generic/bulk_import.html:58 templates/generic/bulk_import.html:80 -#: templates/generic/bulk_import.html:102 +#: netbox/templates/generic/bulk_import.html:58 +#: netbox/templates/generic/bulk_import.html:80 +#: netbox/templates/generic/bulk_import.html:102 msgid "Submit" msgstr "" -#: templates/generic/bulk_import.html:113 +#: netbox/templates/generic/bulk_import.html:113 msgid "Field Options" msgstr "" -#: templates/generic/bulk_import.html:119 +#: netbox/templates/generic/bulk_import.html:119 msgid "Accessor" msgstr "" -#: templates/generic/bulk_import.html:148 +#: netbox/templates/generic/bulk_import.html:148 msgid "choices" msgstr "" -#: templates/generic/bulk_import.html:161 +#: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "" -#: templates/generic/bulk_import.html:181 +#: netbox/templates/generic/bulk_import.html:181 msgid "Format: YYYY-MM-DD" msgstr "" -#: templates/generic/bulk_import.html:183 +#: netbox/templates/generic/bulk_import.html:183 msgid "Specify true or false" msgstr "" -#: templates/generic/bulk_import.html:195 +#: netbox/templates/generic/bulk_import.html:195 msgid "Required fields must be specified for all objects." msgstr "" -#: templates/generic/bulk_import.html:201 +#: netbox/templates/generic/bulk_import.html:201 #, python-format msgid "" "Related objects may be referenced by any unique attribute. For example, " "%(example)s would identify a VRF by its route distinguisher." msgstr "" -#: templates/generic/bulk_remove.html:28 +#: netbox/templates/generic/bulk_remove.html:28 msgid "Bulk Remove" msgstr "" -#: templates/generic/bulk_remove.html:42 +#: netbox/templates/generic/bulk_remove.html:42 msgid "Confirm Bulk Removal" msgstr "" -#: templates/generic/bulk_remove.html:43 +#: netbox/templates/generic/bulk_remove.html:43 #, python-format msgid "" "The following operation will remove %(count)s %(obj_type_plural)s from " @@ -12560,440 +13228,442 @@ msgid "" "removed and confirm below." msgstr "" -#: templates/generic/bulk_remove.html:64 +#: netbox/templates/generic/bulk_remove.html:64 #, python-format msgid "Remove these %(count)s %(obj_type_plural)s" msgstr "" -#: templates/generic/bulk_rename.html:20 +#: netbox/templates/generic/bulk_rename.html:20 msgid "Renaming" msgstr "" -#: templates/generic/bulk_rename.html:27 +#: netbox/templates/generic/bulk_rename.html:27 msgid "Bulk Rename" msgstr "" -#: templates/generic/bulk_rename.html:39 +#: netbox/templates/generic/bulk_rename.html:39 msgid "Current Name" msgstr "" -#: templates/generic/bulk_rename.html:40 +#: netbox/templates/generic/bulk_rename.html:40 msgid "New Name" msgstr "" -#: templates/generic/bulk_rename.html:64 -#: utilities/templates/widgets/markdown_input.html:11 +#: netbox/templates/generic/bulk_rename.html:64 +#: netbox/utilities/templates/widgets/markdown_input.html:11 msgid "Preview" msgstr "" -#: templates/generic/confirmation_form.html:16 +#: netbox/templates/generic/confirmation_form.html:16 msgid "Are you sure" msgstr "" -#: templates/generic/confirmation_form.html:20 +#: netbox/templates/generic/confirmation_form.html:20 msgid "Confirm" msgstr "" -#: templates/generic/object_children.html:47 -#: utilities/templates/buttons/bulk_edit.html:4 +#: netbox/templates/generic/object_children.html:47 +#: netbox/utilities/templates/buttons/bulk_edit.html:4 msgid "Edit Selected" msgstr "" -#: templates/generic/object_children.html:61 -#: utilities/templates/buttons/bulk_delete.html:4 +#: netbox/templates/generic/object_children.html:61 +#: netbox/utilities/templates/buttons/bulk_delete.html:4 msgid "Delete Selected" msgstr "" -#: templates/generic/object_edit.html:24 +#: netbox/templates/generic/object_edit.html:24 #, python-format msgid "Add a new %(object_type)s" msgstr "" -#: templates/generic/object_edit.html:35 +#: netbox/templates/generic/object_edit.html:35 msgid "View model documentation" msgstr "" -#: templates/generic/object_edit.html:36 +#: netbox/templates/generic/object_edit.html:36 msgid "Help" msgstr "" -#: templates/generic/object_edit.html:83 +#: netbox/templates/generic/object_edit.html:83 msgid "Create & Add Another" msgstr "" -#: templates/generic/object_list.html:57 +#: netbox/templates/generic/object_list.html:57 msgid "Filters" msgstr "" -#: templates/generic/object_list.html:88 +#: netbox/templates/generic/object_list.html:88 #, python-format msgid "" "Select all %(count)s " "%(object_type_plural)s matching query" msgstr "" -#: templates/home.html:15 +#: netbox/templates/home.html:15 msgid "New Release Available" msgstr "" -#: templates/home.html:16 +#: netbox/templates/home.html:16 msgid "is available" msgstr "" -#: templates/home.html:18 +#: netbox/templates/home.html:18 msgctxt "Document title" msgid "Upgrade Instructions" msgstr "" -#: templates/home.html:40 +#: netbox/templates/home.html:40 msgid "Unlock Dashboard" msgstr "" -#: templates/home.html:49 +#: netbox/templates/home.html:49 msgid "Lock Dashboard" msgstr "" -#: templates/home.html:60 +#: netbox/templates/home.html:60 msgid "Add Widget" msgstr "" -#: templates/home.html:63 +#: netbox/templates/home.html:63 msgid "Save Layout" msgstr "" -#: templates/htmx/delete_form.html:7 +#: netbox/templates/htmx/delete_form.html:7 msgid "Confirm Deletion" msgstr "" -#: templates/htmx/delete_form.html:11 +#: netbox/templates/htmx/delete_form.html:11 #, python-format msgid "" "Are you sure you want to delete " "%(object_type)s %(object)s?" msgstr "" -#: templates/htmx/delete_form.html:17 +#: netbox/templates/htmx/delete_form.html:17 msgid "The following objects will be deleted as a result of this action." msgstr "" -#: templates/htmx/notifications.html:15 +#: netbox/templates/htmx/notifications.html:15 msgid "ago" msgstr "" -#: templates/htmx/notifications.html:26 +#: netbox/templates/htmx/notifications.html:26 msgid "No unread notifications" msgstr "" -#: templates/htmx/notifications.html:31 +#: netbox/templates/htmx/notifications.html:31 msgid "All notifications" msgstr "" -#: templates/htmx/object_selector.html:5 +#: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "" -#: templates/inc/filter_list.html:43 -#: utilities/templates/helpers/table_config_form.html:39 +#: netbox/templates/inc/filter_list.html:43 +#: netbox/utilities/templates/helpers/table_config_form.html:39 msgid "Reset" msgstr "" -#: templates/inc/light_toggle.html:4 +#: netbox/templates/inc/light_toggle.html:4 msgid "Enable dark mode" msgstr "" -#: templates/inc/light_toggle.html:7 +#: netbox/templates/inc/light_toggle.html:7 msgid "Enable light mode" msgstr "" -#: templates/inc/missing_prerequisites.html:8 +#: netbox/templates/inc/missing_prerequisites.html:8 #, python-format msgid "" "Before you can add a %(model)s you must first create a " "%(prerequisite_model)s." msgstr "" -#: templates/inc/paginator.html:15 +#: netbox/templates/inc/paginator.html:15 msgid "Page selection" msgstr "" -#: templates/inc/paginator.html:75 +#: netbox/templates/inc/paginator.html:75 #, python-format msgid "Showing %(start)s-%(end)s of %(total)s" msgstr "" -#: templates/inc/paginator.html:82 +#: netbox/templates/inc/paginator.html:82 msgid "Pagination options" msgstr "" -#: templates/inc/paginator.html:86 +#: netbox/templates/inc/paginator.html:86 msgid "Per Page" msgstr "" -#: templates/inc/panels/image_attachments.html:10 +#: netbox/templates/inc/panels/image_attachments.html:10 msgid "Attach an image" msgstr "" -#: templates/inc/panels/related_objects.html:5 +#: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "" -#: templates/inc/panels/tags.html:11 +#: netbox/templates/inc/panels/tags.html:11 msgid "No tags assigned" msgstr "" -#: templates/inc/sync_warning.html:10 +#: netbox/templates/inc/sync_warning.html:10 msgid "Data is out of sync with upstream file" msgstr "" -#: templates/inc/table_controls_htmx.html:7 +#: netbox/templates/inc/table_controls_htmx.html:7 msgid "Quick search" msgstr "" -#: templates/inc/table_controls_htmx.html:20 +#: netbox/templates/inc/table_controls_htmx.html:20 msgid "Saved filter" msgstr "" -#: templates/inc/table_htmx.html:18 +#: netbox/templates/inc/table_htmx.html:18 msgid "Clear ordering" msgstr "" -#: templates/inc/user_menu.html:6 +#: netbox/templates/inc/user_menu.html:6 msgid "Help center" msgstr "" -#: templates/inc/user_menu.html:41 +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "" -#: templates/inc/user_menu.html:61 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "" -#: templates/inc/user_menu.html:68 templates/login.html:38 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "" -#: templates/ipam/aggregate.html:14 templates/ipam/ipaddress.html:14 -#: templates/ipam/iprange.html:13 templates/ipam/prefix.html:15 +#: netbox/templates/ipam/aggregate.html:14 +#: netbox/templates/ipam/ipaddress.html:14 +#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 msgid "Family" msgstr "" -#: templates/ipam/aggregate.html:39 +#: netbox/templates/ipam/aggregate.html:39 msgid "Date Added" msgstr "" -#: templates/ipam/aggregate/prefixes.html:8 -#: templates/ipam/prefix/prefixes.html:8 templates/ipam/role.html:10 +#: netbox/templates/ipam/aggregate/prefixes.html:8 +#: netbox/templates/ipam/prefix/prefixes.html:8 +#: netbox/templates/ipam/role.html:10 msgid "Add Prefix" msgstr "" -#: templates/ipam/asn.html:23 +#: netbox/templates/ipam/asn.html:23 msgid "AS Number" msgstr "" -#: templates/ipam/fhrpgroup.html:52 +#: netbox/templates/ipam/fhrpgroup.html:52 msgid "Authentication Type" msgstr "" -#: templates/ipam/fhrpgroup.html:56 +#: netbox/templates/ipam/fhrpgroup.html:56 msgid "Authentication Key" msgstr "" -#: templates/ipam/fhrpgroup.html:69 +#: netbox/templates/ipam/fhrpgroup.html:69 msgid "Virtual IP Addresses" msgstr "" -#: templates/ipam/inc/ipaddress_edit_header.html:13 +#: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" msgstr "" -#: templates/ipam/inc/ipaddress_edit_header.html:19 +#: netbox/templates/ipam/inc/ipaddress_edit_header.html:19 msgid "Bulk Create" msgstr "" -#: templates/ipam/inc/panels/fhrp_groups.html:10 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "" -#: templates/ipam/inc/panels/fhrp_groups.html:25 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "" -#: templates/ipam/inc/toggle_available.html:7 +#: netbox/templates/ipam/inc/toggle_available.html:7 msgid "Show Assigned" msgstr "" -#: templates/ipam/inc/toggle_available.html:10 +#: netbox/templates/ipam/inc/toggle_available.html:10 msgid "Show Available" msgstr "" -#: templates/ipam/inc/toggle_available.html:13 +#: netbox/templates/ipam/inc/toggle_available.html:13 msgid "Show All" msgstr "" -#: templates/ipam/ipaddress.html:23 templates/ipam/iprange.html:45 -#: templates/ipam/prefix.html:24 +#: netbox/templates/ipam/ipaddress.html:23 +#: netbox/templates/ipam/iprange.html:45 netbox/templates/ipam/prefix.html:24 msgid "Global" msgstr "" -#: templates/ipam/ipaddress.html:85 +#: netbox/templates/ipam/ipaddress.html:85 msgid "NAT (outside)" msgstr "" -#: templates/ipam/ipaddress_assign.html:8 +#: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "" -#: templates/ipam/ipaddress_assign.html:22 +#: netbox/templates/ipam/ipaddress_assign.html:22 msgid "Select IP Address" msgstr "" -#: templates/ipam/ipaddress_assign.html:35 +#: netbox/templates/ipam/ipaddress_assign.html:35 msgid "Search Results" msgstr "" -#: templates/ipam/ipaddress_bulk_add.html:6 +#: netbox/templates/ipam/ipaddress_bulk_add.html:6 msgid "Bulk Add IP Addresses" msgstr "" -#: templates/ipam/iprange.html:17 +#: netbox/templates/ipam/iprange.html:17 msgid "Starting Address" msgstr "" -#: templates/ipam/iprange.html:21 +#: netbox/templates/ipam/iprange.html:21 msgid "Ending Address" msgstr "" -#: templates/ipam/iprange.html:33 templates/ipam/prefix.html:110 +#: netbox/templates/ipam/iprange.html:33 netbox/templates/ipam/prefix.html:110 msgid "Marked fully utilized" msgstr "" -#: templates/ipam/prefix.html:99 +#: netbox/templates/ipam/prefix.html:99 msgid "Addressing Details" msgstr "" -#: templates/ipam/prefix.html:118 +#: netbox/templates/ipam/prefix.html:118 msgid "Child IPs" msgstr "" -#: templates/ipam/prefix.html:126 +#: netbox/templates/ipam/prefix.html:126 msgid "Available IPs" msgstr "" -#: templates/ipam/prefix.html:138 +#: netbox/templates/ipam/prefix.html:138 msgid "First available IP" msgstr "" -#: templates/ipam/prefix.html:179 +#: netbox/templates/ipam/prefix.html:179 msgid "Prefix Details" msgstr "" -#: templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix.html:185 msgid "Network Address" msgstr "" -#: templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix.html:189 msgid "Network Mask" msgstr "" -#: templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix.html:193 msgid "Wildcard Mask" msgstr "" -#: templates/ipam/prefix.html:197 +#: netbox/templates/ipam/prefix.html:197 msgid "Broadcast Address" msgstr "" -#: templates/ipam/prefix/ip_ranges.html:7 +#: netbox/templates/ipam/prefix/ip_ranges.html:7 msgid "Add IP Range" msgstr "" -#: templates/ipam/prefix_list.html:7 +#: netbox/templates/ipam/prefix_list.html:7 msgid "Hide Depth Indicators" msgstr "" -#: templates/ipam/prefix_list.html:11 +#: netbox/templates/ipam/prefix_list.html:11 msgid "Max Depth" msgstr "" -#: templates/ipam/prefix_list.html:28 +#: netbox/templates/ipam/prefix_list.html:28 msgid "Max Length" msgstr "" -#: templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:10 msgid "Add Aggregate" msgstr "" -#: templates/ipam/routetarget.html:38 +#: netbox/templates/ipam/routetarget.html:38 msgid "Importing VRFs" msgstr "" -#: templates/ipam/routetarget.html:44 +#: netbox/templates/ipam/routetarget.html:44 msgid "Exporting VRFs" msgstr "" -#: templates/ipam/routetarget.html:52 +#: netbox/templates/ipam/routetarget.html:52 msgid "Importing L2VPNs" msgstr "" -#: templates/ipam/routetarget.html:58 +#: netbox/templates/ipam/routetarget.html:58 msgid "Exporting L2VPNs" msgstr "" -#: templates/ipam/vlan.html:88 +#: netbox/templates/ipam/vlan.html:88 msgid "Add a Prefix" msgstr "" -#: templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:18 msgid "Add VLAN" msgstr "" -#: templates/ipam/vrf.html:16 +#: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "" -#: templates/ipam/vrf.html:29 +#: netbox/templates/ipam/vrf.html:29 msgid "Unique IP Space" msgstr "" -#: templates/login.html:29 -#: utilities/templates/form_helpers/render_errors.html:7 +#: netbox/templates/login.html:29 +#: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "" -#: templates/login.html:69 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "" -#: templates/login.html:77 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "" -#: templates/media_failure.html:7 +#: netbox/templates/media_failure.html:7 msgid "Static Media Failure - NetBox" msgstr "" -#: templates/media_failure.html:21 +#: netbox/templates/media_failure.html:21 msgid "Static Media Failure" msgstr "" -#: templates/media_failure.html:23 +#: netbox/templates/media_failure.html:23 msgid "The following static media file failed to load" msgstr "" -#: templates/media_failure.html:26 +#: netbox/templates/media_failure.html:26 msgid "Check the following" msgstr "" -#: templates/media_failure.html:29 +#: netbox/templates/media_failure.html:29 msgid "" "manage.py collectstatic was run during the most recent upgrade. " "This installs the most recent iteration of each static file into the static " "root path." msgstr "" -#: templates/media_failure.html:35 +#: netbox/templates/media_failure.html:35 #, python-format msgid "" "The HTTP service (e.g. nginx or Apache) is configured to serve files from " @@ -13001,1879 +13671,1914 @@ msgid "" "installation documentation for further guidance." msgstr "" -#: templates/media_failure.html:47 +#: netbox/templates/media_failure.html:47 #, python-format msgid "" "The file %(filename)s exists in the static root directory and " "is readable by the HTTP server." msgstr "" -#: templates/media_failure.html:55 +#: netbox/templates/media_failure.html:55 #, python-format msgid "" "Click here to attempt loading NetBox again." msgstr "" -#: templates/tenancy/contact.html:18 tenancy/filtersets.py:147 -#: tenancy/forms/bulk_edit.py:137 tenancy/forms/filtersets.py:102 -#: tenancy/forms/forms.py:56 tenancy/forms/model_forms.py:106 -#: tenancy/forms/model_forms.py:130 tenancy/tables/contacts.py:98 +#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:147 +#: netbox/tenancy/forms/bulk_edit.py:137 netbox/tenancy/forms/filtersets.py:102 +#: netbox/tenancy/forms/forms.py:56 netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 netbox/tenancy/tables/contacts.py:98 msgid "Contact" msgstr "" -#: templates/tenancy/contact.html:29 tenancy/forms/bulk_edit.py:99 +#: netbox/templates/tenancy/contact.html:29 +#: netbox/tenancy/forms/bulk_edit.py:99 msgid "Title" msgstr "" -#: templates/tenancy/contact.html:33 tenancy/forms/bulk_edit.py:104 -#: tenancy/tables/contacts.py:64 +#: netbox/templates/tenancy/contact.html:33 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/tables/contacts.py:64 msgid "Phone" msgstr "" -#: templates/tenancy/contactgroup.html:18 tenancy/forms/forms.py:66 -#: tenancy/forms/model_forms.py:75 +#: netbox/templates/tenancy/contactgroup.html:18 +#: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" msgstr "" -#: templates/tenancy/contactgroup.html:50 +#: netbox/templates/tenancy/contactgroup.html:50 msgid "Add Contact Group" msgstr "" -#: templates/tenancy/contactrole.html:15 tenancy/filtersets.py:152 -#: tenancy/forms/forms.py:61 tenancy/forms/model_forms.py:87 +#: netbox/templates/tenancy/contactrole.html:15 +#: netbox/tenancy/filtersets.py:152 netbox/tenancy/forms/forms.py:61 +#: netbox/tenancy/forms/model_forms.py:87 msgid "Contact Role" msgstr "" -#: templates/tenancy/object_contacts.html:9 +#: netbox/templates/tenancy/object_contacts.html:9 msgid "Add a contact" msgstr "" -#: templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:17 msgid "Add Tenant" msgstr "" -#: templates/tenancy/tenantgroup.html:26 tenancy/forms/model_forms.py:32 -#: tenancy/tables/columns.py:51 tenancy/tables/columns.py:61 +#: netbox/templates/tenancy/tenantgroup.html:26 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:51 +#: netbox/tenancy/tables/columns.py:61 msgid "Tenant Group" msgstr "" -#: templates/tenancy/tenantgroup.html:59 +#: netbox/templates/tenancy/tenantgroup.html:59 msgid "Add Tenant Group" msgstr "" -#: templates/users/group.html:39 templates/users/user.html:63 +#: netbox/templates/users/group.html:39 netbox/templates/users/user.html:63 msgid "Assigned Permissions" msgstr "" -#: templates/users/objectpermission.html:6 -#: templates/users/objectpermission.html:14 users/forms/filtersets.py:66 +#: netbox/templates/users/objectpermission.html:6 +#: netbox/templates/users/objectpermission.html:14 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "" -#: templates/users/objectpermission.html:34 +#: netbox/templates/users/objectpermission.html:34 msgid "View" msgstr "" -#: templates/users/objectpermission.html:52 users/forms/model_forms.py:315 +#: netbox/templates/users/objectpermission.html:52 +#: netbox/users/forms/model_forms.py:315 msgid "Constraints" msgstr "" -#: templates/users/objectpermission.html:72 +#: netbox/templates/users/objectpermission.html:72 msgid "Assigned Users" msgstr "" -#: templates/virtualization/cluster.html:52 +#: netbox/templates/virtualization/cluster.html:52 msgid "Allocated Resources" msgstr "" -#: templates/virtualization/cluster.html:55 -#: templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/cluster.html:55 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "" -#: templates/virtualization/cluster.html:59 -#: templates/virtualization/virtualmachine.html:129 +#: netbox/templates/virtualization/cluster.html:59 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "" -#: templates/virtualization/cluster.html:69 -#: templates/virtualization/virtualmachine.html:140 +#: netbox/templates/virtualization/cluster.html:69 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "" -#: templates/virtualization/cluster/base.html:18 +#: netbox/templates/virtualization/cluster/base.html:18 msgid "Add Virtual Machine" msgstr "" -#: templates/virtualization/cluster/base.html:24 +#: netbox/templates/virtualization/cluster/base.html:24 msgid "Assign Device" msgstr "" -#: templates/virtualization/cluster/devices.html:10 +#: netbox/templates/virtualization/cluster/devices.html:10 msgid "Remove Selected" msgstr "" -#: templates/virtualization/cluster_add_devices.html:9 +#: netbox/templates/virtualization/cluster_add_devices.html:9 #, python-format msgid "Add Device to Cluster %(cluster)s" msgstr "" -#: templates/virtualization/cluster_add_devices.html:23 +#: netbox/templates/virtualization/cluster_add_devices.html:23 msgid "Device Selection" msgstr "" -#: templates/virtualization/cluster_add_devices.html:31 +#: netbox/templates/virtualization/cluster_add_devices.html:31 msgid "Add Devices" msgstr "" -#: templates/virtualization/clustergroup.html:10 -#: templates/virtualization/clustertype.html:10 +#: netbox/templates/virtualization/clustergroup.html:10 +#: netbox/templates/virtualization/clustertype.html:10 msgid "Add Cluster" msgstr "" -#: templates/virtualization/clustergroup.html:19 -#: virtualization/forms/model_forms.py:50 +#: netbox/templates/virtualization/clustergroup.html:19 +#: netbox/virtualization/forms/model_forms.py:50 msgid "Cluster Group" msgstr "" -#: templates/virtualization/clustertype.html:19 -#: templates/virtualization/virtualmachine.html:110 -#: virtualization/forms/model_forms.py:36 +#: netbox/templates/virtualization/clustertype.html:19 +#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "" -#: templates/virtualization/virtualdisk.html:18 +#: netbox/templates/virtualization/virtualdisk.html:18 msgid "Virtual Disk" msgstr "" -#: templates/virtualization/virtualmachine.html:122 -#: virtualization/forms/bulk_edit.py:190 -#: virtualization/forms/model_forms.py:224 +#: netbox/templates/virtualization/virtualmachine.html:122 +#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "" -#: templates/virtualization/virtualmachine.html:178 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "" -#: templates/vpn/ikepolicy.html:10 templates/vpn/ipsecprofile.html:33 -#: vpn/tables/crypto.py:166 +#: netbox/templates/vpn/ikepolicy.html:10 +#: netbox/templates/vpn/ipsecprofile.html:33 netbox/vpn/tables/crypto.py:166 msgid "IKE Policy" msgstr "" -#: templates/vpn/ikepolicy.html:21 +#: netbox/templates/vpn/ikepolicy.html:21 msgid "IKE Version" msgstr "" -#: templates/vpn/ikepolicy.html:29 +#: netbox/templates/vpn/ikepolicy.html:29 msgid "Pre-Shared Key" msgstr "" -#: templates/vpn/ikepolicy.html:33 -#: templates/wireless/inc/authentication_attrs.html:20 +#: netbox/templates/vpn/ikepolicy.html:33 +#: netbox/templates/wireless/inc/authentication_attrs.html:20 msgid "Show Secret" msgstr "" -#: templates/vpn/ikepolicy.html:57 templates/vpn/ipsecpolicy.html:45 -#: templates/vpn/ipsecprofile.html:52 templates/vpn/ipsecprofile.html:77 -#: vpn/forms/model_forms.py:316 vpn/forms/model_forms.py:352 -#: vpn/tables/crypto.py:68 vpn/tables/crypto.py:134 +#: netbox/templates/vpn/ikepolicy.html:57 +#: netbox/templates/vpn/ipsecpolicy.html:45 +#: netbox/templates/vpn/ipsecprofile.html:52 +#: netbox/templates/vpn/ipsecprofile.html:77 +#: netbox/vpn/forms/model_forms.py:316 netbox/vpn/forms/model_forms.py:352 +#: netbox/vpn/tables/crypto.py:68 netbox/vpn/tables/crypto.py:134 msgid "Proposals" msgstr "" -#: templates/vpn/ikeproposal.html:10 +#: netbox/templates/vpn/ikeproposal.html:10 msgid "IKE Proposal" msgstr "" -#: templates/vpn/ikeproposal.html:21 vpn/forms/bulk_edit.py:97 -#: vpn/forms/bulk_import.py:145 vpn/forms/filtersets.py:101 +#: netbox/templates/vpn/ikeproposal.html:21 netbox/vpn/forms/bulk_edit.py:97 +#: netbox/vpn/forms/bulk_import.py:145 netbox/vpn/forms/filtersets.py:101 msgid "Authentication method" msgstr "" -#: templates/vpn/ikeproposal.html:25 templates/vpn/ipsecproposal.html:21 -#: vpn/forms/bulk_edit.py:102 vpn/forms/bulk_edit.py:172 -#: vpn/forms/bulk_import.py:149 vpn/forms/bulk_import.py:195 -#: vpn/forms/filtersets.py:106 vpn/forms/filtersets.py:154 +#: netbox/templates/vpn/ikeproposal.html:25 +#: netbox/templates/vpn/ipsecproposal.html:21 netbox/vpn/forms/bulk_edit.py:102 +#: netbox/vpn/forms/bulk_edit.py:172 netbox/vpn/forms/bulk_import.py:149 +#: netbox/vpn/forms/bulk_import.py:195 netbox/vpn/forms/filtersets.py:106 +#: netbox/vpn/forms/filtersets.py:154 msgid "Encryption algorithm" msgstr "" -#: templates/vpn/ikeproposal.html:29 templates/vpn/ipsecproposal.html:25 -#: vpn/forms/bulk_edit.py:107 vpn/forms/bulk_edit.py:177 -#: vpn/forms/bulk_import.py:153 vpn/forms/bulk_import.py:200 -#: vpn/forms/filtersets.py:111 vpn/forms/filtersets.py:159 +#: netbox/templates/vpn/ikeproposal.html:29 +#: netbox/templates/vpn/ipsecproposal.html:25 netbox/vpn/forms/bulk_edit.py:107 +#: netbox/vpn/forms/bulk_edit.py:177 netbox/vpn/forms/bulk_import.py:153 +#: netbox/vpn/forms/bulk_import.py:200 netbox/vpn/forms/filtersets.py:111 +#: netbox/vpn/forms/filtersets.py:159 msgid "Authentication algorithm" msgstr "" -#: templates/vpn/ikeproposal.html:33 +#: netbox/templates/vpn/ikeproposal.html:33 msgid "DH group" msgstr "" -#: templates/vpn/ikeproposal.html:37 templates/vpn/ipsecproposal.html:29 -#: vpn/forms/bulk_edit.py:182 vpn/models/crypto.py:146 +#: netbox/templates/vpn/ikeproposal.html:37 +#: netbox/templates/vpn/ipsecproposal.html:29 netbox/vpn/forms/bulk_edit.py:182 +#: netbox/vpn/models/crypto.py:146 msgid "SA lifetime (seconds)" msgstr "" -#: templates/vpn/ipsecpolicy.html:10 templates/vpn/ipsecprofile.html:66 -#: vpn/tables/crypto.py:170 +#: netbox/templates/vpn/ipsecpolicy.html:10 +#: netbox/templates/vpn/ipsecprofile.html:66 netbox/vpn/tables/crypto.py:170 msgid "IPSec Policy" msgstr "" -#: templates/vpn/ipsecpolicy.html:21 vpn/forms/bulk_edit.py:210 -#: vpn/models/crypto.py:193 +#: netbox/templates/vpn/ipsecpolicy.html:21 netbox/vpn/forms/bulk_edit.py:210 +#: netbox/vpn/models/crypto.py:193 msgid "PFS group" msgstr "" -#: templates/vpn/ipsecprofile.html:10 vpn/forms/model_forms.py:54 +#: netbox/templates/vpn/ipsecprofile.html:10 netbox/vpn/forms/model_forms.py:54 msgid "IPSec Profile" msgstr "" -#: templates/vpn/ipsecprofile.html:89 vpn/tables/crypto.py:137 +#: netbox/templates/vpn/ipsecprofile.html:89 netbox/vpn/tables/crypto.py:137 msgid "PFS Group" msgstr "" -#: templates/vpn/ipsecproposal.html:10 +#: netbox/templates/vpn/ipsecproposal.html:10 msgid "IPSec Proposal" msgstr "" -#: templates/vpn/ipsecproposal.html:33 vpn/forms/bulk_edit.py:186 -#: vpn/models/crypto.py:152 +#: netbox/templates/vpn/ipsecproposal.html:33 netbox/vpn/forms/bulk_edit.py:186 +#: netbox/vpn/models/crypto.py:152 msgid "SA lifetime (KB)" msgstr "" -#: templates/vpn/l2vpn.html:11 templates/vpn/l2vpntermination.html:9 +#: netbox/templates/vpn/l2vpn.html:11 +#: netbox/templates/vpn/l2vpntermination.html:9 msgid "L2VPN Attributes" msgstr "" -#: templates/vpn/l2vpn.html:60 templates/vpn/tunnel.html:76 +#: netbox/templates/vpn/l2vpn.html:60 netbox/templates/vpn/tunnel.html:76 msgid "Add a Termination" msgstr "" -#: templates/vpn/tunnel.html:9 +#: netbox/templates/vpn/tunnel.html:9 msgid "Add Termination" msgstr "" -#: templates/vpn/tunnel.html:37 vpn/forms/bulk_edit.py:49 -#: vpn/forms/bulk_import.py:48 vpn/forms/filtersets.py:57 +#: netbox/templates/vpn/tunnel.html:37 netbox/vpn/forms/bulk_edit.py:49 +#: netbox/vpn/forms/bulk_import.py:48 netbox/vpn/forms/filtersets.py:57 msgid "Encapsulation" msgstr "" -#: templates/vpn/tunnel.html:41 vpn/forms/bulk_edit.py:55 -#: vpn/forms/bulk_import.py:53 vpn/forms/filtersets.py:64 -#: vpn/models/crypto.py:250 vpn/tables/tunnels.py:51 +#: netbox/templates/vpn/tunnel.html:41 netbox/vpn/forms/bulk_edit.py:55 +#: netbox/vpn/forms/bulk_import.py:53 netbox/vpn/forms/filtersets.py:64 +#: netbox/vpn/models/crypto.py:250 netbox/vpn/tables/tunnels.py:51 msgid "IPSec profile" msgstr "" -#: templates/vpn/tunnel.html:45 vpn/forms/bulk_edit.py:69 -#: vpn/forms/filtersets.py:68 +#: netbox/templates/vpn/tunnel.html:45 netbox/vpn/forms/bulk_edit.py:69 +#: netbox/vpn/forms/filtersets.py:68 msgid "Tunnel ID" msgstr "" -#: templates/vpn/tunnelgroup.html:14 +#: netbox/templates/vpn/tunnelgroup.html:14 msgid "Add Tunnel" msgstr "" -#: templates/vpn/tunnelgroup.html:23 vpn/forms/model_forms.py:36 -#: vpn/forms/model_forms.py:49 +#: netbox/templates/vpn/tunnelgroup.html:23 netbox/vpn/forms/model_forms.py:36 +#: netbox/vpn/forms/model_forms.py:49 msgid "Tunnel Group" msgstr "" -#: templates/vpn/tunneltermination.html:10 +#: netbox/templates/vpn/tunneltermination.html:10 msgid "Tunnel Termination" msgstr "" -#: templates/vpn/tunneltermination.html:35 vpn/forms/bulk_import.py:107 -#: vpn/forms/model_forms.py:102 vpn/forms/model_forms.py:138 -#: vpn/forms/model_forms.py:247 vpn/tables/tunnels.py:101 +#: netbox/templates/vpn/tunneltermination.html:35 +#: netbox/vpn/forms/bulk_import.py:107 netbox/vpn/forms/model_forms.py:102 +#: netbox/vpn/forms/model_forms.py:138 netbox/vpn/forms/model_forms.py:247 +#: netbox/vpn/tables/tunnels.py:101 msgid "Outside IP" msgstr "" -#: templates/vpn/tunneltermination.html:51 +#: netbox/templates/vpn/tunneltermination.html:51 msgid "Peer Terminations" msgstr "" -#: templates/wireless/inc/authentication_attrs.html:12 +#: netbox/templates/wireless/inc/authentication_attrs.html:12 msgid "Cipher" msgstr "" -#: templates/wireless/inc/authentication_attrs.html:16 +#: netbox/templates/wireless/inc/authentication_attrs.html:16 msgid "PSK" msgstr "" -#: templates/wireless/inc/wirelesslink_interface.html:35 -#: templates/wireless/inc/wirelesslink_interface.html:45 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:35 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:45 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "" -#: templates/wireless/wirelesslan.html:57 +#: netbox/templates/wireless/wirelesslan.html:57 msgid "Attached Interfaces" msgstr "" -#: templates/wireless/wirelesslangroup.html:17 +#: netbox/templates/wireless/wirelesslangroup.html:17 msgid "Add Wireless LAN" msgstr "" -#: templates/wireless/wirelesslangroup.html:26 wireless/forms/model_forms.py:28 +#: netbox/templates/wireless/wirelesslangroup.html:26 +#: netbox/wireless/forms/model_forms.py:28 msgid "Wireless LAN Group" msgstr "" -#: templates/wireless/wirelesslangroup.html:59 +#: netbox/templates/wireless/wirelesslangroup.html:59 msgid "Add Wireless LAN Group" msgstr "" -#: templates/wireless/wirelesslink.html:14 +#: netbox/templates/wireless/wirelesslink.html:14 msgid "Link Properties" msgstr "" -#: templates/wireless/wirelesslink.html:38 wireless/forms/bulk_edit.py:129 -#: wireless/forms/filtersets.py:102 wireless/forms/model_forms.py:165 +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 msgid "Distance" msgstr "" -#: tenancy/filtersets.py:28 +#: netbox/tenancy/filtersets.py:28 msgid "Parent contact group (ID)" msgstr "" -#: tenancy/filtersets.py:34 +#: netbox/tenancy/filtersets.py:34 msgid "Parent contact group (slug)" msgstr "" -#: tenancy/filtersets.py:40 tenancy/filtersets.py:67 tenancy/filtersets.py:110 +#: netbox/tenancy/filtersets.py:40 netbox/tenancy/filtersets.py:67 +#: netbox/tenancy/filtersets.py:110 msgid "Contact group (ID)" msgstr "" -#: tenancy/filtersets.py:47 tenancy/filtersets.py:74 tenancy/filtersets.py:117 +#: netbox/tenancy/filtersets.py:47 netbox/tenancy/filtersets.py:74 +#: netbox/tenancy/filtersets.py:117 msgid "Contact group (slug)" msgstr "" -#: tenancy/filtersets.py:104 +#: netbox/tenancy/filtersets.py:104 msgid "Contact (ID)" msgstr "" -#: tenancy/filtersets.py:121 +#: netbox/tenancy/filtersets.py:121 msgid "Contact role (ID)" msgstr "" -#: tenancy/filtersets.py:127 +#: netbox/tenancy/filtersets.py:127 msgid "Contact role (slug)" msgstr "" -#: tenancy/filtersets.py:158 +#: netbox/tenancy/filtersets.py:158 msgid "Contact group" msgstr "" -#: tenancy/filtersets.py:169 +#: netbox/tenancy/filtersets.py:169 msgid "Parent tenant group (ID)" msgstr "" -#: tenancy/filtersets.py:175 +#: netbox/tenancy/filtersets.py:175 msgid "Parent tenant group (slug)" msgstr "" -#: tenancy/filtersets.py:181 tenancy/filtersets.py:201 +#: netbox/tenancy/filtersets.py:181 netbox/tenancy/filtersets.py:201 msgid "Tenant group (ID)" msgstr "" -#: tenancy/filtersets.py:234 +#: netbox/tenancy/filtersets.py:234 msgid "Tenant Group (ID)" msgstr "" -#: tenancy/filtersets.py:241 +#: netbox/tenancy/filtersets.py:241 msgid "Tenant Group (slug)" msgstr "" -#: tenancy/forms/bulk_edit.py:66 +#: netbox/tenancy/forms/bulk_edit.py:66 msgid "Desciption" msgstr "" -#: tenancy/forms/bulk_import.py:101 +#: netbox/tenancy/forms/bulk_import.py:101 msgid "Assigned contact" msgstr "" -#: tenancy/models/contacts.py:32 +#: netbox/tenancy/models/contacts.py:32 msgid "contact group" msgstr "" -#: tenancy/models/contacts.py:33 +#: netbox/tenancy/models/contacts.py:33 msgid "contact groups" msgstr "" -#: tenancy/models/contacts.py:48 +#: netbox/tenancy/models/contacts.py:48 msgid "contact role" msgstr "" -#: tenancy/models/contacts.py:49 +#: netbox/tenancy/models/contacts.py:49 msgid "contact roles" msgstr "" -#: tenancy/models/contacts.py:68 +#: netbox/tenancy/models/contacts.py:68 msgid "title" msgstr "" -#: tenancy/models/contacts.py:73 +#: netbox/tenancy/models/contacts.py:73 msgid "phone" msgstr "" -#: tenancy/models/contacts.py:78 +#: netbox/tenancy/models/contacts.py:78 msgid "email" msgstr "" -#: tenancy/models/contacts.py:87 +#: netbox/tenancy/models/contacts.py:87 msgid "link" msgstr "" -#: tenancy/models/contacts.py:103 +#: netbox/tenancy/models/contacts.py:103 msgid "contact" msgstr "" -#: tenancy/models/contacts.py:104 +#: netbox/tenancy/models/contacts.py:104 msgid "contacts" msgstr "" -#: tenancy/models/contacts.py:153 +#: netbox/tenancy/models/contacts.py:153 msgid "contact assignment" msgstr "" -#: tenancy/models/contacts.py:154 +#: netbox/tenancy/models/contacts.py:154 msgid "contact assignments" msgstr "" -#: tenancy/models/contacts.py:170 +#: netbox/tenancy/models/contacts.py:170 #, python-brace-format msgid "Contacts cannot be assigned to this object type ({type})." msgstr "" -#: tenancy/models/tenants.py:32 +#: netbox/tenancy/models/tenants.py:32 msgid "tenant group" msgstr "" -#: tenancy/models/tenants.py:33 +#: netbox/tenancy/models/tenants.py:33 msgid "tenant groups" msgstr "" -#: tenancy/models/tenants.py:70 +#: netbox/tenancy/models/tenants.py:70 msgid "Tenant name must be unique per group." msgstr "" -#: tenancy/models/tenants.py:80 +#: netbox/tenancy/models/tenants.py:80 msgid "Tenant slug must be unique per group." msgstr "" -#: tenancy/models/tenants.py:88 +#: netbox/tenancy/models/tenants.py:88 msgid "tenant" msgstr "" -#: tenancy/models/tenants.py:89 +#: netbox/tenancy/models/tenants.py:89 msgid "tenants" msgstr "" -#: tenancy/tables/contacts.py:112 +#: netbox/tenancy/tables/contacts.py:112 msgid "Contact Title" msgstr "" -#: tenancy/tables/contacts.py:116 +#: netbox/tenancy/tables/contacts.py:116 msgid "Contact Phone" msgstr "" -#: tenancy/tables/contacts.py:121 +#: netbox/tenancy/tables/contacts.py:121 msgid "Contact Email" msgstr "" -#: tenancy/tables/contacts.py:125 +#: netbox/tenancy/tables/contacts.py:125 msgid "Contact Address" msgstr "" -#: tenancy/tables/contacts.py:129 +#: netbox/tenancy/tables/contacts.py:129 msgid "Contact Link" msgstr "" -#: tenancy/tables/contacts.py:133 +#: netbox/tenancy/tables/contacts.py:133 msgid "Contact Description" msgstr "" -#: users/filtersets.py:33 users/filtersets.py:73 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "" -#: users/filtersets.py:38 users/filtersets.py:78 +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 msgid "Notification group (ID)" msgstr "" -#: users/forms/bulk_edit.py:26 +#: netbox/users/forms/bulk_edit.py:26 msgid "First name" msgstr "" -#: users/forms/bulk_edit.py:31 +#: netbox/users/forms/bulk_edit.py:31 msgid "Last name" msgstr "" -#: users/forms/bulk_edit.py:43 +#: netbox/users/forms/bulk_edit.py:43 msgid "Staff status" msgstr "" -#: users/forms/bulk_edit.py:48 +#: netbox/users/forms/bulk_edit.py:48 msgid "Superuser status" msgstr "" -#: users/forms/bulk_import.py:41 +#: netbox/users/forms/bulk_import.py:41 msgid "If no key is provided, one will be generated automatically." msgstr "" -#: users/forms/filtersets.py:51 users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "" -#: users/forms/filtersets.py:58 users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "" -#: users/forms/filtersets.py:91 users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "" -#: users/forms/filtersets.py:98 users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "" -#: users/forms/filtersets.py:105 users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "" -#: users/forms/filtersets.py:112 users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "" -#: users/forms/model_forms.py:62 +#: netbox/users/forms/model_forms.py:62 msgid "User Interface" msgstr "" -#: users/forms/model_forms.py:114 +#: netbox/users/forms/model_forms.py:114 msgid "" "Keys must be at least 40 characters in length. Be sure to record " "your key prior to submitting this form, as it may no longer be " "accessible once the token has been created." msgstr "" -#: users/forms/model_forms.py:126 +#: netbox/users/forms/model_forms.py:126 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for " "no restrictions. Example: 10.1.1.0/24,192.168.10.16/32,2001:" "db8:1::/64" msgstr "" -#: users/forms/model_forms.py:175 +#: netbox/users/forms/model_forms.py:175 msgid "Confirm password" msgstr "" -#: users/forms/model_forms.py:178 +#: netbox/users/forms/model_forms.py:178 msgid "Enter the same password as before, for verification." msgstr "" -#: users/forms/model_forms.py:227 +#: netbox/users/forms/model_forms.py:227 msgid "Passwords do not match! Please check your input and try again." msgstr "" -#: users/forms/model_forms.py:294 +#: netbox/users/forms/model_forms.py:294 msgid "Additional actions" msgstr "" -#: users/forms/model_forms.py:297 +#: netbox/users/forms/model_forms.py:297 msgid "Actions granted in addition to those listed above" msgstr "" -#: users/forms/model_forms.py:313 +#: netbox/users/forms/model_forms.py:313 msgid "Objects" msgstr "" -#: users/forms/model_forms.py:325 +#: netbox/users/forms/model_forms.py:325 msgid "" "JSON expression of a queryset filter that will return only permitted " "objects. Leave null to match all objects of this type. A list of multiple " "objects will result in a logical OR operation." msgstr "" -#: users/forms/model_forms.py:364 +#: netbox/users/forms/model_forms.py:364 msgid "At least one action must be selected." msgstr "" -#: users/forms/model_forms.py:382 +#: netbox/users/forms/model_forms.py:382 #, python-brace-format msgid "Invalid filter for {model}: {error}" msgstr "" -#: users/models/permissions.py:39 +#: netbox/users/models/permissions.py:39 msgid "The list of actions granted by this permission" msgstr "" -#: users/models/permissions.py:44 +#: netbox/users/models/permissions.py:44 msgid "constraints" msgstr "" -#: users/models/permissions.py:45 +#: netbox/users/models/permissions.py:45 msgid "Queryset filter matching the applicable objects of the selected type(s)" msgstr "" -#: users/models/permissions.py:52 +#: netbox/users/models/permissions.py:52 msgid "permission" msgstr "" -#: users/models/permissions.py:53 users/models/users.py:47 +#: netbox/users/models/permissions.py:53 netbox/users/models/users.py:47 msgid "permissions" msgstr "" -#: users/models/preferences.py:29 users/models/preferences.py:30 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "" -#: users/models/preferences.py:97 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "" -#: users/models/preferences.py:109 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" -#: users/models/tokens.py:36 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "" -#: users/models/tokens.py:41 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "" -#: users/models/tokens.py:46 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "" -#: users/models/tokens.py:52 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "" -#: users/models/tokens.py:54 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "" -#: users/models/tokens.py:65 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "" -#: users/models/tokens.py:67 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for " "no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" msgstr "" -#: users/models/tokens.py:75 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "" -#: users/models/tokens.py:76 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "" -#: users/models/users.py:57 vpn/models/crypto.py:42 +#: netbox/users/models/users.py:57 netbox/vpn/models/crypto.py:42 msgid "group" msgstr "" -#: users/models/users.py:92 +#: netbox/users/models/users.py:92 msgid "user" msgstr "" -#: users/models/users.py:104 +#: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "" -#: users/tables.py:98 +#: netbox/users/tables.py:98 msgid "Custom Actions" msgstr "" -#: utilities/api.py:153 +#: netbox/utilities/api.py:153 #, python-brace-format msgid "Related object not found using the provided attributes: {params}" msgstr "" -#: utilities/api.py:156 +#: netbox/utilities/api.py:156 #, python-brace-format msgid "Multiple objects match the provided attributes: {params}" msgstr "" -#: utilities/api.py:168 +#: netbox/utilities/api.py:168 #, python-brace-format msgid "" "Related objects must be referenced by numeric ID or by dictionary of " "attributes. Received an unrecognized value: {value}" msgstr "" -#: utilities/api.py:177 +#: netbox/utilities/api.py:177 #, python-brace-format msgid "Related object not found using the provided numeric ID: {id}" msgstr "" -#: utilities/choices.py:19 +#: netbox/utilities/choices.py:19 #, python-brace-format msgid "{name} has a key defined but CHOICES is not a list" msgstr "" -#: utilities/conversion.py:19 +#: netbox/utilities/conversion.py:19 msgid "Weight must be a positive number" msgstr "" -#: utilities/conversion.py:21 +#: netbox/utilities/conversion.py:21 #, python-brace-format msgid "Invalid value '{weight}' for weight (must be a number)" msgstr "" -#: utilities/conversion.py:32 utilities/conversion.py:62 +#: netbox/utilities/conversion.py:32 netbox/utilities/conversion.py:62 #, python-brace-format msgid "Unknown unit {unit}. Must be one of the following: {valid_units}" msgstr "" -#: utilities/conversion.py:45 +#: netbox/utilities/conversion.py:45 msgid "Length must be a positive number" msgstr "" -#: utilities/conversion.py:47 +#: netbox/utilities/conversion.py:47 #, python-brace-format msgid "Invalid value '{length}' for length (must be a number)" msgstr "" -#: utilities/error_handlers.py:31 +#: netbox/utilities/error_handlers.py:31 #, python-brace-format msgid "" "Unable to delete {objects}. {count} dependent objects were " "found: " msgstr "" -#: utilities/error_handlers.py:33 +#: netbox/utilities/error_handlers.py:33 msgid "More than 50" msgstr "" -#: utilities/fields.py:30 +#: netbox/utilities/fields.py:30 msgid "RGB color in hexadecimal. Example: " msgstr "" -#: utilities/fields.py:159 +#: netbox/utilities/fields.py:159 #, python-format msgid "" "%s(%r) is invalid. to_model parameter to CounterCacheField must be a string " "in the format 'app.model'" msgstr "" -#: utilities/fields.py:169 +#: netbox/utilities/fields.py:169 #, python-format msgid "" "%s(%r) is invalid. to_field parameter to CounterCacheField must be a string " "in the format 'field'" msgstr "" -#: utilities/forms/bulk_import.py:23 +#: netbox/utilities/forms/bulk_import.py:23 msgid "Enter object data in CSV, JSON or YAML format." msgstr "" -#: utilities/forms/bulk_import.py:36 +#: netbox/utilities/forms/bulk_import.py:36 msgid "CSV delimiter" msgstr "" -#: utilities/forms/bulk_import.py:37 +#: netbox/utilities/forms/bulk_import.py:37 msgid "The character which delimits CSV fields. Applies only to CSV format." msgstr "" -#: utilities/forms/bulk_import.py:51 +#: netbox/utilities/forms/bulk_import.py:51 msgid "Form data must be empty when uploading/selecting a file." msgstr "" -#: utilities/forms/bulk_import.py:80 +#: netbox/utilities/forms/bulk_import.py:80 #, python-brace-format msgid "Unknown data format: {format}" msgstr "" -#: utilities/forms/bulk_import.py:100 +#: netbox/utilities/forms/bulk_import.py:100 msgid "Unable to detect data format. Please specify." msgstr "" -#: utilities/forms/bulk_import.py:123 +#: netbox/utilities/forms/bulk_import.py:123 msgid "Invalid CSV delimiter" msgstr "" -#: utilities/forms/bulk_import.py:167 +#: netbox/utilities/forms/bulk_import.py:167 msgid "" "Invalid YAML data. Data must be in the form of multiple documents, or a " "single document comprising a list of dictionaries." msgstr "" -#: utilities/forms/fields/array.py:20 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " "order." msgstr "" -#: utilities/forms/fields/array.py:40 +#: netbox/utilities/forms/fields/array.py:40 msgid "" "Specify one or more numeric ranges separated by commas. Example: " "1-5,20-30" msgstr "" -#: utilities/forms/fields/array.py:47 +#: netbox/utilities/forms/fields/array.py:47 #, python-brace-format msgid "" "Invalid ranges ({value}). Must be a range of integers in ascending order." msgstr "" -#: utilities/forms/fields/csv.py:44 +#: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" msgstr "" -#: utilities/forms/fields/csv.py:57 utilities/forms/fields/csv.py:78 +#: netbox/utilities/forms/fields/csv.py:57 +#: netbox/utilities/forms/fields/csv.py:78 #, python-format msgid "Object not found: %(value)s" msgstr "" -#: utilities/forms/fields/csv.py:65 +#: netbox/utilities/forms/fields/csv.py:65 #, python-brace-format msgid "" "\"{value}\" is not a unique value for this field; multiple objects were found" msgstr "" -#: utilities/forms/fields/csv.py:69 +#: netbox/utilities/forms/fields/csv.py:69 #, python-brace-format msgid "\"{field_name}\" is an invalid accessor field name." msgstr "" -#: utilities/forms/fields/csv.py:101 +#: netbox/utilities/forms/fields/csv.py:101 msgid "Object type must be specified as \".\"" msgstr "" -#: utilities/forms/fields/csv.py:105 +#: netbox/utilities/forms/fields/csv.py:105 msgid "Invalid object type" msgstr "" -#: utilities/forms/fields/expandable.py:25 +#: netbox/utilities/forms/fields/expandable.py:25 msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " "within a single range are not supported (example: [ge,xe]-0/0/[0-9])." msgstr "" -#: utilities/forms/fields/expandable.py:46 +#: netbox/utilities/forms/fields/expandable.py:46 msgid "" "Specify a numeric range to create multiple IPs.
Example: 192.0.2." "[1,5,100-254]/24" msgstr "" -#: utilities/forms/fields/fields.py:31 +#: netbox/utilities/forms/fields/fields.py:31 #, python-brace-format msgid "" " Markdown syntax is supported" msgstr "" -#: utilities/forms/fields/fields.py:48 +#: netbox/utilities/forms/fields/fields.py:48 msgid "URL-friendly unique shorthand" msgstr "" -#: utilities/forms/fields/fields.py:101 +#: netbox/utilities/forms/fields/fields.py:101 msgid "Enter context data in JSON format." msgstr "" -#: utilities/forms/fields/fields.py:124 +#: netbox/utilities/forms/fields/fields.py:124 msgid "MAC address must be in EUI-48 format" msgstr "" -#: utilities/forms/forms.py:52 +#: netbox/utilities/forms/forms.py:52 msgid "Use regular expressions" msgstr "" -#: utilities/forms/forms.py:75 +#: netbox/utilities/forms/forms.py:75 msgid "" "Numeric ID of an existing object to update (if not creating a new object)" msgstr "" -#: utilities/forms/forms.py:92 +#: netbox/utilities/forms/forms.py:92 #, python-brace-format msgid "Unrecognized header: {name}" msgstr "" -#: utilities/forms/forms.py:118 +#: netbox/utilities/forms/forms.py:118 msgid "Available Columns" msgstr "" -#: utilities/forms/forms.py:126 +#: netbox/utilities/forms/forms.py:126 msgid "Selected Columns" msgstr "" -#: utilities/forms/mixins.py:44 +#: netbox/utilities/forms/mixins.py:44 msgid "" "This object has been modified since the form was rendered. Please consult " "the object's change log for details." msgstr "" -#: utilities/forms/utils.py:42 utilities/forms/utils.py:68 -#: utilities/forms/utils.py:85 utilities/forms/utils.py:87 +#: netbox/utilities/forms/utils.py:42 netbox/utilities/forms/utils.py:68 +#: netbox/utilities/forms/utils.py:85 netbox/utilities/forms/utils.py:87 #, python-brace-format msgid "Range \"{value}\" is invalid." msgstr "" -#: utilities/forms/utils.py:74 +#: netbox/utilities/forms/utils.py:74 #, python-brace-format msgid "" "Invalid range: Ending value ({end}) must be greater than beginning value " "({begin})." msgstr "" -#: utilities/forms/utils.py:232 +#: netbox/utilities/forms/utils.py:232 #, python-brace-format msgid "Duplicate or conflicting column header for \"{field}\"" msgstr "" -#: utilities/forms/utils.py:238 +#: netbox/utilities/forms/utils.py:238 #, python-brace-format msgid "Duplicate or conflicting column header for \"{header}\"" msgstr "" -#: utilities/forms/utils.py:247 +#: netbox/utilities/forms/utils.py:247 #, python-brace-format msgid "Row {row}: Expected {count_expected} columns but found {count_found}" msgstr "" -#: utilities/forms/utils.py:270 +#: netbox/utilities/forms/utils.py:270 #, python-brace-format msgid "Unexpected column header \"{field}\" found." msgstr "" -#: utilities/forms/utils.py:272 +#: netbox/utilities/forms/utils.py:272 #, python-brace-format msgid "Column \"{field}\" is not a related object; cannot use dots" msgstr "" -#: utilities/forms/utils.py:276 +#: netbox/utilities/forms/utils.py:276 #, python-brace-format msgid "Invalid related object attribute for column \"{field}\": {to_field}" msgstr "" -#: utilities/forms/utils.py:284 +#: netbox/utilities/forms/utils.py:284 #, python-brace-format msgid "Required column header \"{header}\" not found." msgstr "" -#: utilities/forms/widgets/apiselect.py:124 +#: netbox/utilities/forms/widgets/apiselect.py:124 #, python-brace-format msgid "Missing required value for dynamic query param: '{dynamic_params}'" msgstr "" -#: utilities/forms/widgets/apiselect.py:141 +#: netbox/utilities/forms/widgets/apiselect.py:141 #, python-brace-format msgid "Missing required value for static query param: '{static_params}'" msgstr "" -#: utilities/password_validation.py:13 +#: netbox/utilities/password_validation.py:13 msgid "Password must have at least one numeral." msgstr "" -#: utilities/password_validation.py:18 +#: netbox/utilities/password_validation.py:18 msgid "Password must have at least one uppercase letter." msgstr "" -#: utilities/password_validation.py:23 +#: netbox/utilities/password_validation.py:23 msgid "Password must have at least one lowercase letter." msgstr "" -#: utilities/password_validation.py:27 +#: netbox/utilities/password_validation.py:27 msgid "" "Your password must contain at least one numeral, one uppercase letter and " "one lowercase letter." msgstr "" -#: utilities/permissions.py:42 +#: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" "Invalid permission name: {name}. Must be in the format ." "_" msgstr "" -#: utilities/permissions.py:60 +#: netbox/utilities/permissions.py:60 #, python-brace-format msgid "Unknown app_label/model_name for {name}" msgstr "" -#: utilities/request.py:76 +#: netbox/utilities/request.py:76 #, python-brace-format msgid "Invalid IP address set for {header}: {ip}" msgstr "" -#: utilities/tables.py:47 +#: netbox/utilities/tables.py:47 #, python-brace-format msgid "A column named {name} is already defined for table {table_name}" msgstr "" -#: utilities/templates/builtins/customfield_value.html:30 +#: netbox/utilities/templates/builtins/customfield_value.html:30 msgid "Not defined" msgstr "" -#: utilities/templates/buttons/bookmark.html:9 +#: netbox/utilities/templates/buttons/bookmark.html:9 msgid "Unbookmark" msgstr "" -#: utilities/templates/buttons/bookmark.html:13 +#: netbox/utilities/templates/buttons/bookmark.html:13 msgid "Bookmark" msgstr "" -#: utilities/templates/buttons/clone.html:4 +#: netbox/utilities/templates/buttons/clone.html:4 msgid "Clone" msgstr "" -#: utilities/templates/buttons/export.html:7 +#: netbox/utilities/templates/buttons/export.html:7 msgid "Current View" msgstr "" -#: utilities/templates/buttons/export.html:8 +#: netbox/utilities/templates/buttons/export.html:8 msgid "All Data" msgstr "" -#: utilities/templates/buttons/export.html:28 +#: netbox/utilities/templates/buttons/export.html:28 msgid "Add export template" msgstr "" -#: utilities/templates/buttons/import.html:4 +#: netbox/utilities/templates/buttons/import.html:4 msgid "Import" msgstr "" -#: utilities/templates/buttons/subscribe.html:10 +#: netbox/utilities/templates/buttons/subscribe.html:10 msgid "Unsubscribe" msgstr "" -#: utilities/templates/buttons/subscribe.html:14 +#: netbox/utilities/templates/buttons/subscribe.html:14 msgid "Subscribe" msgstr "" -#: utilities/templates/form_helpers/render_field.html:41 +#: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "" -#: utilities/templates/form_helpers/render_field.html:57 +#: netbox/utilities/templates/form_helpers/render_field.html:57 msgid "This field is required" msgstr "" -#: utilities/templates/form_helpers/render_field.html:70 +#: netbox/utilities/templates/form_helpers/render_field.html:70 msgid "Set Null" msgstr "" -#: utilities/templates/helpers/applied_filters.html:11 +#: netbox/utilities/templates/helpers/applied_filters.html:11 msgid "Clear all" msgstr "" -#: utilities/templates/helpers/table_config_form.html:8 +#: netbox/utilities/templates/helpers/table_config_form.html:8 msgid "Table Configuration" msgstr "" -#: utilities/templates/helpers/table_config_form.html:31 +#: netbox/utilities/templates/helpers/table_config_form.html:31 msgid "Move Up" msgstr "" -#: utilities/templates/helpers/table_config_form.html:34 +#: netbox/utilities/templates/helpers/table_config_form.html:34 msgid "Move Down" msgstr "" -#: utilities/templates/navigation/menu.html:14 +#: netbox/utilities/templates/navigation/menu.html:14 msgid "Search…" msgstr "" -#: utilities/templates/navigation/menu.html:14 +#: netbox/utilities/templates/navigation/menu.html:14 msgid "Search NetBox" msgstr "" -#: utilities/templates/widgets/apiselect.html:7 +#: netbox/utilities/templates/widgets/apiselect.html:7 msgid "Open selector" msgstr "" -#: utilities/templates/widgets/markdown_input.html:6 +#: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "" -#: utilities/testing/views.py:632 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "" -#: utilities/validators.py:65 +#: netbox/utilities/validators.py:65 #, python-brace-format msgid "{value} is not a valid regular expression." msgstr "" -#: utilities/views.py:57 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" -#: utilities/views.py:93 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "" -#: utilities/views.py:117 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only " "be used on views which define a base queryset" msgstr "" -#: virtualization/filtersets.py:79 +#: netbox/virtualization/filtersets.py:79 msgid "Parent group (ID)" msgstr "" -#: virtualization/filtersets.py:85 +#: netbox/virtualization/filtersets.py:85 msgid "Parent group (slug)" msgstr "" -#: virtualization/filtersets.py:89 virtualization/filtersets.py:141 +#: netbox/virtualization/filtersets.py:89 +#: netbox/virtualization/filtersets.py:141 msgid "Cluster type (ID)" msgstr "" -#: virtualization/filtersets.py:151 virtualization/filtersets.py:271 +#: netbox/virtualization/filtersets.py:151 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "" -#: virtualization/forms/bulk_edit.py:166 -#: virtualization/models/virtualmachines.py:115 +#: netbox/virtualization/forms/bulk_edit.py:166 +#: netbox/virtualization/models/virtualmachines.py:115 msgid "vCPUs" msgstr "" -#: virtualization/forms/bulk_edit.py:170 +#: netbox/virtualization/forms/bulk_edit.py:170 msgid "Memory (MB)" msgstr "" -#: virtualization/forms/bulk_edit.py:174 +#: netbox/virtualization/forms/bulk_edit.py:174 msgid "Disk (GB)" msgstr "" -#: virtualization/forms/bulk_edit.py:334 virtualization/forms/filtersets.py:251 +#: netbox/virtualization/forms/bulk_edit.py:334 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "" -#: virtualization/forms/bulk_import.py:44 +#: netbox/virtualization/forms/bulk_import.py:44 msgid "Type of cluster" msgstr "" -#: virtualization/forms/bulk_import.py:51 +#: netbox/virtualization/forms/bulk_import.py:51 msgid "Assigned cluster group" msgstr "" -#: virtualization/forms/bulk_import.py:96 +#: netbox/virtualization/forms/bulk_import.py:96 msgid "Assigned cluster" msgstr "" -#: virtualization/forms/bulk_import.py:103 +#: netbox/virtualization/forms/bulk_import.py:103 msgid "Assigned device within cluster" msgstr "" -#: virtualization/forms/filtersets.py:183 +#: netbox/virtualization/forms/filtersets.py:183 msgid "Serial number" msgstr "" -#: virtualization/forms/model_forms.py:153 +#: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" "{device} belongs to a different site ({device_site}) than the cluster " "({cluster_site})" msgstr "" -#: virtualization/forms/model_forms.py:192 +#: netbox/virtualization/forms/model_forms.py:192 msgid "Optionally pin this VM to a specific host device within the cluster" msgstr "" -#: virtualization/forms/model_forms.py:221 +#: netbox/virtualization/forms/model_forms.py:221 msgid "Site/Cluster" msgstr "" -#: virtualization/forms/model_forms.py:244 +#: netbox/virtualization/forms/model_forms.py:244 msgid "Disk size is managed via the attachment of virtual disks." msgstr "" -#: virtualization/forms/model_forms.py:372 -#: virtualization/tables/virtualmachines.py:111 +#: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "" -#: virtualization/models/clusters.py:25 +#: netbox/virtualization/models/clusters.py:25 msgid "cluster type" msgstr "" -#: virtualization/models/clusters.py:26 +#: netbox/virtualization/models/clusters.py:26 msgid "cluster types" msgstr "" -#: virtualization/models/clusters.py:45 +#: netbox/virtualization/models/clusters.py:45 msgid "cluster group" msgstr "" -#: virtualization/models/clusters.py:46 +#: netbox/virtualization/models/clusters.py:46 msgid "cluster groups" msgstr "" -#: virtualization/models/clusters.py:121 +#: netbox/virtualization/models/clusters.py:121 msgid "cluster" msgstr "" -#: virtualization/models/clusters.py:122 +#: netbox/virtualization/models/clusters.py:122 msgid "clusters" msgstr "" -#: virtualization/models/clusters.py:141 +#: netbox/virtualization/models/clusters.py:141 #, python-brace-format msgid "" "{count} devices are assigned as hosts for this cluster but are not in site " "{site}" msgstr "" -#: virtualization/models/virtualmachines.py:123 +#: netbox/virtualization/models/virtualmachines.py:123 msgid "memory (MB)" msgstr "" -#: virtualization/models/virtualmachines.py:128 +#: netbox/virtualization/models/virtualmachines.py:128 msgid "disk (MB)" msgstr "" -#: virtualization/models/virtualmachines.py:166 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "" -#: virtualization/models/virtualmachines.py:169 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "" -#: virtualization/models/virtualmachines.py:170 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "" -#: virtualization/models/virtualmachines.py:184 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "" -#: virtualization/models/virtualmachines.py:191 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "" -#: virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "" -#: virtualization/models/virtualmachines.py:203 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." msgstr "" -#: virtualization/models/virtualmachines.py:215 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " "virtual disks ({total_size})." msgstr "" -#: virtualization/models/virtualmachines.py:229 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "" -#: virtualization/models/virtualmachines.py:238 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "" -#: virtualization/models/virtualmachines.py:396 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " "machine ({virtual_machine})." msgstr "" -#: virtualization/models/virtualmachines.py:411 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " "machine ({virtual_machine})." msgstr "" -#: virtualization/models/virtualmachines.py:422 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " "interface's parent virtual machine, or it must be global." msgstr "" -#: virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:434 msgid "size (MB)" msgstr "" -#: virtualization/models/virtualmachines.py:438 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "" -#: virtualization/models/virtualmachines.py:439 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "" -#: virtualization/views.py:275 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "" -#: virtualization/views.py:310 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "" -#: vpn/choices.py:31 +#: netbox/vpn/choices.py:31 msgid "IPsec - Transport" msgstr "" -#: vpn/choices.py:32 +#: netbox/vpn/choices.py:32 msgid "IPsec - Tunnel" msgstr "" -#: vpn/choices.py:33 +#: netbox/vpn/choices.py:33 msgid "IP-in-IP" msgstr "" -#: vpn/choices.py:34 +#: netbox/vpn/choices.py:34 msgid "GRE" msgstr "" -#: vpn/choices.py:56 +#: netbox/vpn/choices.py:56 msgid "Hub" msgstr "" -#: vpn/choices.py:57 +#: netbox/vpn/choices.py:57 msgid "Spoke" msgstr "" -#: vpn/choices.py:80 +#: netbox/vpn/choices.py:80 msgid "Aggressive" msgstr "" -#: vpn/choices.py:81 +#: netbox/vpn/choices.py:81 msgid "Main" msgstr "" -#: vpn/choices.py:92 +#: netbox/vpn/choices.py:92 msgid "Pre-shared keys" msgstr "" -#: vpn/choices.py:93 +#: netbox/vpn/choices.py:93 msgid "Certificates" msgstr "" -#: vpn/choices.py:94 +#: netbox/vpn/choices.py:94 msgid "RSA signatures" msgstr "" -#: vpn/choices.py:95 +#: netbox/vpn/choices.py:95 msgid "DSA signatures" msgstr "" -#: vpn/choices.py:178 vpn/choices.py:179 vpn/choices.py:180 vpn/choices.py:181 -#: vpn/choices.py:182 vpn/choices.py:183 vpn/choices.py:184 vpn/choices.py:185 -#: vpn/choices.py:186 vpn/choices.py:187 vpn/choices.py:188 vpn/choices.py:189 -#: vpn/choices.py:190 vpn/choices.py:191 vpn/choices.py:192 vpn/choices.py:193 -#: vpn/choices.py:194 vpn/choices.py:195 vpn/choices.py:196 vpn/choices.py:197 -#: vpn/choices.py:198 vpn/choices.py:199 vpn/choices.py:200 vpn/choices.py:201 +#: netbox/vpn/choices.py:178 netbox/vpn/choices.py:179 +#: netbox/vpn/choices.py:180 netbox/vpn/choices.py:181 +#: netbox/vpn/choices.py:182 netbox/vpn/choices.py:183 +#: netbox/vpn/choices.py:184 netbox/vpn/choices.py:185 +#: netbox/vpn/choices.py:186 netbox/vpn/choices.py:187 +#: netbox/vpn/choices.py:188 netbox/vpn/choices.py:189 +#: netbox/vpn/choices.py:190 netbox/vpn/choices.py:191 +#: netbox/vpn/choices.py:192 netbox/vpn/choices.py:193 +#: netbox/vpn/choices.py:194 netbox/vpn/choices.py:195 +#: netbox/vpn/choices.py:196 netbox/vpn/choices.py:197 +#: netbox/vpn/choices.py:198 netbox/vpn/choices.py:199 +#: netbox/vpn/choices.py:200 netbox/vpn/choices.py:201 #, python-brace-format msgid "Group {n}" msgstr "" -#: vpn/choices.py:243 +#: netbox/vpn/choices.py:243 msgid "Ethernet Private LAN" msgstr "" -#: vpn/choices.py:244 +#: netbox/vpn/choices.py:244 msgid "Ethernet Virtual Private LAN" msgstr "" -#: vpn/choices.py:247 +#: netbox/vpn/choices.py:247 msgid "Ethernet Private Tree" msgstr "" -#: vpn/choices.py:248 +#: netbox/vpn/choices.py:248 msgid "Ethernet Virtual Private Tree" msgstr "" -#: vpn/filtersets.py:41 +#: netbox/vpn/filtersets.py:41 msgid "Tunnel group (ID)" msgstr "" -#: vpn/filtersets.py:47 +#: netbox/vpn/filtersets.py:47 msgid "Tunnel group (slug)" msgstr "" -#: vpn/filtersets.py:54 +#: netbox/vpn/filtersets.py:54 msgid "IPSec profile (ID)" msgstr "" -#: vpn/filtersets.py:60 +#: netbox/vpn/filtersets.py:60 msgid "IPSec profile (name)" msgstr "" -#: vpn/filtersets.py:81 +#: netbox/vpn/filtersets.py:81 msgid "Tunnel (ID)" msgstr "" -#: vpn/filtersets.py:87 +#: netbox/vpn/filtersets.py:87 msgid "Tunnel (name)" msgstr "" -#: vpn/filtersets.py:118 +#: netbox/vpn/filtersets.py:118 msgid "Outside IP (ID)" msgstr "" -#: vpn/filtersets.py:130 vpn/filtersets.py:263 +#: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:263 msgid "IKE policy (ID)" msgstr "" -#: vpn/filtersets.py:136 vpn/filtersets.py:269 +#: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:269 msgid "IKE policy (name)" msgstr "" -#: vpn/filtersets.py:200 vpn/filtersets.py:273 +#: netbox/vpn/filtersets.py:200 netbox/vpn/filtersets.py:273 msgid "IPSec policy (ID)" msgstr "" -#: vpn/filtersets.py:206 vpn/filtersets.py:279 +#: netbox/vpn/filtersets.py:206 netbox/vpn/filtersets.py:279 msgid "IPSec policy (name)" msgstr "" -#: vpn/filtersets.py:348 +#: netbox/vpn/filtersets.py:348 msgid "L2VPN (slug)" msgstr "" -#: vpn/filtersets.py:412 +#: netbox/vpn/filtersets.py:412 msgid "VM Interface (ID)" msgstr "" -#: vpn/filtersets.py:418 +#: netbox/vpn/filtersets.py:418 msgid "VLAN (name)" msgstr "" -#: vpn/forms/bulk_edit.py:45 vpn/forms/bulk_import.py:42 -#: vpn/forms/filtersets.py:54 +#: netbox/vpn/forms/bulk_edit.py:45 netbox/vpn/forms/bulk_import.py:42 +#: netbox/vpn/forms/filtersets.py:54 msgid "Tunnel group" msgstr "" -#: vpn/forms/bulk_edit.py:117 vpn/models/crypto.py:47 +#: netbox/vpn/forms/bulk_edit.py:117 netbox/vpn/models/crypto.py:47 msgid "SA lifetime" msgstr "" -#: vpn/forms/bulk_edit.py:151 wireless/forms/bulk_edit.py:79 -#: wireless/forms/bulk_edit.py:126 wireless/forms/filtersets.py:64 -#: wireless/forms/filtersets.py:98 +#: netbox/vpn/forms/bulk_edit.py:151 netbox/wireless/forms/bulk_edit.py:79 +#: netbox/wireless/forms/bulk_edit.py:126 +#: netbox/wireless/forms/filtersets.py:64 +#: netbox/wireless/forms/filtersets.py:98 msgid "Pre-shared key" msgstr "" -#: vpn/forms/bulk_edit.py:237 vpn/forms/bulk_import.py:239 -#: vpn/forms/filtersets.py:199 vpn/forms/model_forms.py:370 -#: vpn/models/crypto.py:104 +#: netbox/vpn/forms/bulk_edit.py:237 netbox/vpn/forms/bulk_import.py:239 +#: netbox/vpn/forms/filtersets.py:199 netbox/vpn/forms/model_forms.py:370 +#: netbox/vpn/models/crypto.py:104 msgid "IKE policy" msgstr "" -#: vpn/forms/bulk_edit.py:242 vpn/forms/bulk_import.py:244 -#: vpn/forms/filtersets.py:204 vpn/forms/model_forms.py:374 -#: vpn/models/crypto.py:209 +#: netbox/vpn/forms/bulk_edit.py:242 netbox/vpn/forms/bulk_import.py:244 +#: netbox/vpn/forms/filtersets.py:204 netbox/vpn/forms/model_forms.py:374 +#: netbox/vpn/models/crypto.py:209 msgid "IPSec policy" msgstr "" -#: vpn/forms/bulk_import.py:50 +#: netbox/vpn/forms/bulk_import.py:50 msgid "Tunnel encapsulation" msgstr "" -#: vpn/forms/bulk_import.py:83 +#: netbox/vpn/forms/bulk_import.py:83 msgid "Operational role" msgstr "" -#: vpn/forms/bulk_import.py:90 +#: netbox/vpn/forms/bulk_import.py:90 msgid "Parent device of assigned interface" msgstr "" -#: vpn/forms/bulk_import.py:97 +#: netbox/vpn/forms/bulk_import.py:97 msgid "Parent VM of assigned interface" msgstr "" -#: vpn/forms/bulk_import.py:104 +#: netbox/vpn/forms/bulk_import.py:104 msgid "Device or virtual machine interface" msgstr "" -#: vpn/forms/bulk_import.py:183 +#: netbox/vpn/forms/bulk_import.py:183 msgid "IKE proposal(s)" msgstr "" -#: vpn/forms/bulk_import.py:215 vpn/models/crypto.py:197 +#: netbox/vpn/forms/bulk_import.py:215 netbox/vpn/models/crypto.py:197 msgid "Diffie-Hellman group for Perfect Forward Secrecy" msgstr "" -#: vpn/forms/bulk_import.py:222 +#: netbox/vpn/forms/bulk_import.py:222 msgid "IPSec proposal(s)" msgstr "" -#: vpn/forms/bulk_import.py:236 +#: netbox/vpn/forms/bulk_import.py:236 msgid "IPSec protocol" msgstr "" -#: vpn/forms/bulk_import.py:266 +#: netbox/vpn/forms/bulk_import.py:266 msgid "L2VPN type" msgstr "" -#: vpn/forms/bulk_import.py:287 +#: netbox/vpn/forms/bulk_import.py:287 msgid "Parent device (for interface)" msgstr "" -#: vpn/forms/bulk_import.py:294 +#: netbox/vpn/forms/bulk_import.py:294 msgid "Parent virtual machine (for interface)" msgstr "" -#: vpn/forms/bulk_import.py:301 +#: netbox/vpn/forms/bulk_import.py:301 msgid "Assigned interface (device or VM)" msgstr "" -#: vpn/forms/bulk_import.py:334 +#: netbox/vpn/forms/bulk_import.py:334 msgid "Cannot import device and VM interface terminations simultaneously." msgstr "" -#: vpn/forms/bulk_import.py:336 +#: netbox/vpn/forms/bulk_import.py:336 msgid "Each termination must specify either an interface or a VLAN." msgstr "" -#: vpn/forms/bulk_import.py:338 +#: netbox/vpn/forms/bulk_import.py:338 msgid "Cannot assign both an interface and a VLAN." msgstr "" -#: vpn/forms/filtersets.py:130 +#: netbox/vpn/forms/filtersets.py:130 msgid "IKE version" msgstr "" -#: vpn/forms/filtersets.py:142 vpn/forms/filtersets.py:175 -#: vpn/forms/model_forms.py:298 vpn/forms/model_forms.py:334 +#: netbox/vpn/forms/filtersets.py:142 netbox/vpn/forms/filtersets.py:175 +#: netbox/vpn/forms/model_forms.py:298 netbox/vpn/forms/model_forms.py:334 msgid "Proposal" msgstr "" -#: vpn/forms/filtersets.py:251 +#: netbox/vpn/forms/filtersets.py:251 msgid "Assigned Object Type" msgstr "" -#: vpn/forms/model_forms.py:95 vpn/forms/model_forms.py:130 -#: vpn/forms/model_forms.py:240 vpn/tables/tunnels.py:91 +#: netbox/vpn/forms/model_forms.py:95 netbox/vpn/forms/model_forms.py:130 +#: netbox/vpn/forms/model_forms.py:240 netbox/vpn/tables/tunnels.py:91 msgid "Tunnel interface" msgstr "" -#: vpn/forms/model_forms.py:150 +#: netbox/vpn/forms/model_forms.py:150 msgid "First Termination" msgstr "" -#: vpn/forms/model_forms.py:153 +#: netbox/vpn/forms/model_forms.py:153 msgid "Second Termination" msgstr "" -#: vpn/forms/model_forms.py:197 +#: netbox/vpn/forms/model_forms.py:197 msgid "This parameter is required when defining a termination." msgstr "" -#: vpn/forms/model_forms.py:320 vpn/forms/model_forms.py:356 +#: netbox/vpn/forms/model_forms.py:320 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "" -#: vpn/forms/model_forms.py:487 +#: netbox/vpn/forms/model_forms.py:487 msgid "A termination must specify an interface or VLAN." msgstr "" -#: vpn/forms/model_forms.py:489 +#: netbox/vpn/forms/model_forms.py:489 msgid "" "A termination can only have one terminating object (an interface or VLAN)." msgstr "" -#: vpn/models/crypto.py:33 +#: netbox/vpn/models/crypto.py:33 msgid "encryption algorithm" msgstr "" -#: vpn/models/crypto.py:37 +#: netbox/vpn/models/crypto.py:37 msgid "authentication algorithm" msgstr "" -#: vpn/models/crypto.py:44 +#: netbox/vpn/models/crypto.py:44 msgid "Diffie-Hellman group ID" msgstr "" -#: vpn/models/crypto.py:50 +#: netbox/vpn/models/crypto.py:50 msgid "Security association lifetime (in seconds)" msgstr "" -#: vpn/models/crypto.py:59 +#: netbox/vpn/models/crypto.py:59 msgid "IKE proposal" msgstr "" -#: vpn/models/crypto.py:60 +#: netbox/vpn/models/crypto.py:60 msgid "IKE proposals" msgstr "" -#: vpn/models/crypto.py:76 +#: netbox/vpn/models/crypto.py:76 msgid "version" msgstr "" -#: vpn/models/crypto.py:88 vpn/models/crypto.py:190 +#: netbox/vpn/models/crypto.py:88 netbox/vpn/models/crypto.py:190 msgid "proposals" msgstr "" -#: vpn/models/crypto.py:91 wireless/models.py:39 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "" -#: vpn/models/crypto.py:105 +#: netbox/vpn/models/crypto.py:105 msgid "IKE policies" msgstr "" -#: vpn/models/crypto.py:118 +#: netbox/vpn/models/crypto.py:118 msgid "Mode is required for selected IKE version" msgstr "" -#: vpn/models/crypto.py:122 +#: netbox/vpn/models/crypto.py:122 msgid "Mode cannot be used for selected IKE version" msgstr "" -#: vpn/models/crypto.py:136 +#: netbox/vpn/models/crypto.py:136 msgid "encryption" msgstr "" -#: vpn/models/crypto.py:141 +#: netbox/vpn/models/crypto.py:141 msgid "authentication" msgstr "" -#: vpn/models/crypto.py:149 +#: netbox/vpn/models/crypto.py:149 msgid "Security association lifetime (seconds)" msgstr "" -#: vpn/models/crypto.py:155 +#: netbox/vpn/models/crypto.py:155 msgid "Security association lifetime (in kilobytes)" msgstr "" -#: vpn/models/crypto.py:164 +#: netbox/vpn/models/crypto.py:164 msgid "IPSec proposal" msgstr "" -#: vpn/models/crypto.py:165 +#: netbox/vpn/models/crypto.py:165 msgid "IPSec proposals" msgstr "" -#: vpn/models/crypto.py:178 +#: netbox/vpn/models/crypto.py:178 msgid "Encryption and/or authentication algorithm must be defined" msgstr "" -#: vpn/models/crypto.py:210 +#: netbox/vpn/models/crypto.py:210 msgid "IPSec policies" msgstr "" -#: vpn/models/crypto.py:251 +#: netbox/vpn/models/crypto.py:251 msgid "IPSec profiles" msgstr "" -#: vpn/models/l2vpn.py:116 +#: netbox/vpn/models/l2vpn.py:116 msgid "L2VPN termination" msgstr "" -#: vpn/models/l2vpn.py:117 +#: netbox/vpn/models/l2vpn.py:117 msgid "L2VPN terminations" msgstr "" -#: vpn/models/l2vpn.py:135 +#: netbox/vpn/models/l2vpn.py:135 #, python-brace-format msgid "L2VPN Termination already assigned ({assigned_object})" msgstr "" -#: vpn/models/l2vpn.py:147 +#: netbox/vpn/models/l2vpn.py:147 #, python-brace-format msgid "" "{l2vpn_type} L2VPNs cannot have more than two terminations; found " "{terminations_count} already defined." msgstr "" -#: vpn/models/tunnels.py:26 +#: netbox/vpn/models/tunnels.py:26 msgid "tunnel group" msgstr "" -#: vpn/models/tunnels.py:27 +#: netbox/vpn/models/tunnels.py:27 msgid "tunnel groups" msgstr "" -#: vpn/models/tunnels.py:53 +#: netbox/vpn/models/tunnels.py:53 msgid "encapsulation" msgstr "" -#: vpn/models/tunnels.py:72 +#: netbox/vpn/models/tunnels.py:72 msgid "tunnel ID" msgstr "" -#: vpn/models/tunnels.py:94 +#: netbox/vpn/models/tunnels.py:94 msgid "tunnel" msgstr "" -#: vpn/models/tunnels.py:95 +#: netbox/vpn/models/tunnels.py:95 msgid "tunnels" msgstr "" -#: vpn/models/tunnels.py:153 +#: netbox/vpn/models/tunnels.py:153 msgid "An object may be terminated to only one tunnel at a time." msgstr "" -#: vpn/models/tunnels.py:156 +#: netbox/vpn/models/tunnels.py:156 msgid "tunnel termination" msgstr "" -#: vpn/models/tunnels.py:157 +#: netbox/vpn/models/tunnels.py:157 msgid "tunnel terminations" msgstr "" -#: vpn/models/tunnels.py:174 +#: netbox/vpn/models/tunnels.py:174 #, python-brace-format msgid "{name} is already attached to a tunnel ({tunnel})." msgstr "" -#: vpn/tables/crypto.py:22 +#: netbox/vpn/tables/crypto.py:22 msgid "Authentication Method" msgstr "" -#: vpn/tables/crypto.py:25 vpn/tables/crypto.py:97 +#: netbox/vpn/tables/crypto.py:25 netbox/vpn/tables/crypto.py:97 msgid "Encryption Algorithm" msgstr "" -#: vpn/tables/crypto.py:28 vpn/tables/crypto.py:100 +#: netbox/vpn/tables/crypto.py:28 netbox/vpn/tables/crypto.py:100 msgid "Authentication Algorithm" msgstr "" -#: vpn/tables/crypto.py:34 +#: netbox/vpn/tables/crypto.py:34 msgid "SA Lifetime" msgstr "" -#: vpn/tables/crypto.py:71 +#: netbox/vpn/tables/crypto.py:71 msgid "Pre-shared Key" msgstr "" -#: vpn/tables/crypto.py:103 +#: netbox/vpn/tables/crypto.py:103 msgid "SA Lifetime (Seconds)" msgstr "" -#: vpn/tables/crypto.py:106 +#: netbox/vpn/tables/crypto.py:106 msgid "SA Lifetime (KB)" msgstr "" -#: vpn/tables/l2vpn.py:69 +#: netbox/vpn/tables/l2vpn.py:69 msgid "Object Parent" msgstr "" -#: vpn/tables/l2vpn.py:74 +#: netbox/vpn/tables/l2vpn.py:74 msgid "Object Site" msgstr "" -#: wireless/choices.py:11 +#: netbox/wireless/choices.py:11 msgid "Access point" msgstr "" -#: wireless/choices.py:12 +#: netbox/wireless/choices.py:12 msgid "Station" msgstr "" -#: wireless/choices.py:467 +#: netbox/wireless/choices.py:467 msgid "Open" msgstr "" -#: wireless/choices.py:469 +#: netbox/wireless/choices.py:469 msgid "WPA Personal (PSK)" msgstr "" -#: wireless/choices.py:470 +#: netbox/wireless/choices.py:470 msgid "WPA Enterprise" msgstr "" -#: wireless/forms/bulk_edit.py:73 wireless/forms/bulk_edit.py:120 -#: wireless/forms/bulk_import.py:68 wireless/forms/bulk_import.py:71 -#: wireless/forms/bulk_import.py:110 wireless/forms/bulk_import.py:113 -#: wireless/forms/filtersets.py:59 wireless/forms/filtersets.py:93 +#: netbox/wireless/forms/bulk_edit.py:73 netbox/wireless/forms/bulk_edit.py:120 +#: netbox/wireless/forms/bulk_import.py:68 +#: netbox/wireless/forms/bulk_import.py:71 +#: netbox/wireless/forms/bulk_import.py:110 +#: netbox/wireless/forms/bulk_import.py:113 +#: netbox/wireless/forms/filtersets.py:59 +#: netbox/wireless/forms/filtersets.py:93 msgid "Authentication cipher" msgstr "" -#: wireless/forms/bulk_edit.py:134 wireless/forms/bulk_import.py:116 -#: wireless/forms/bulk_import.py:119 wireless/forms/filtersets.py:106 +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 msgid "Distance unit" msgstr "" -#: wireless/forms/bulk_import.py:52 +#: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "" -#: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:28 +#: netbox/wireless/forms/bulk_import.py:89 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "" -#: wireless/forms/bulk_import.py:93 wireless/tables/wirelesslink.py:37 +#: netbox/wireless/forms/bulk_import.py:93 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "" -#: wireless/forms/model_forms.py:161 +#: netbox/wireless/forms/model_forms.py:161 msgid "Side B" msgstr "" -#: wireless/models.py:31 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "" -#: wireless/models.py:69 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "" -#: wireless/models.py:70 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "" -#: wireless/models.py:116 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "" -#: wireless/models.py:144 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "" -#: wireless/models.py:151 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "" -#: wireless/models.py:165 +#: netbox/wireless/models.py:165 msgid "distance" msgstr "" -#: wireless/models.py:172 +#: netbox/wireless/models.py:172 msgid "distance unit" msgstr "" -#: wireless/models.py:219 +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "" -#: wireless/models.py:220 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "" -#: wireless/models.py:236 +#: netbox/wireless/models.py:236 msgid "Must specify a unit when setting a wireless distance" msgstr "" -#: wireless/models.py:242 wireless/models.py:248 +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "" -#: wireless/utils.py:16 +#: netbox/wireless/utils.py:16 #, python-brace-format msgid "Invalid channel value: {channel}" msgstr "" -#: wireless/utils.py:26 +#: netbox/wireless/utils.py:26 #, python-brace-format msgid "Invalid channel attribute: {name}" msgstr "" From 7580aa078158cf82bb03aab5fc37d023f6045f7e Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 31 Oct 2024 09:24:38 -0400 Subject: [PATCH 02/32] Add professional support link --- .github/ISSUE_TEMPLATE/config.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 2ad52023e..efbf38932 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -7,6 +7,9 @@ contact_links: - name: ❓ Discussion url: https://github.com/netbox-community/netbox/discussions about: "If you're just looking for help, try starting a discussion instead." + - name: 👔 Professional Support + url: https://netboxlabs.com/netbox-enterprise/ + about: "Professional support is available for NetBox Enterprise or Cloud." - name: 🌎 Correct a Translation url: https://explore.transifex.com/netbox-community/netbox/ about: "Spot an incorrect translation? You can propose a fix on Transifex." From 74315080a3f4fd961cb2e8a88f2a3281e2c786e9 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 31 Oct 2024 13:31:11 -0400 Subject: [PATCH 03/32] Release v4.1.6 --- .github/ISSUE_TEMPLATE/01-feature_request.yaml | 2 +- .github/ISSUE_TEMPLATE/02-bug_report.yaml | 2 +- docs/release-notes/version-4.1.md | 8 ++++++++ netbox/project-static/package.json | 2 +- netbox/project-static/yarn.lock | 8 ++++---- netbox/release.yaml | 4 ++-- requirements.txt | 6 +++--- 7 files changed, 20 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/01-feature_request.yaml b/.github/ISSUE_TEMPLATE/01-feature_request.yaml index 651c26942..300d7ce6a 100644 --- a/.github/ISSUE_TEMPLATE/01-feature_request.yaml +++ b/.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.5 + placeholder: v4.1.6 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/02-bug_report.yaml b/.github/ISSUE_TEMPLATE/02-bug_report.yaml index 2984e3d10..2b782a6cd 100644 --- a/.github/ISSUE_TEMPLATE/02-bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/02-bug_report.yaml @@ -39,7 +39,7 @@ body: attributes: label: NetBox Version description: What version of NetBox are you currently running? - placeholder: v4.1.5 + placeholder: v4.1.6 validations: required: true - type: dropdown diff --git a/docs/release-notes/version-4.1.md b/docs/release-notes/version-4.1.md index 741425ac1..7b4e18919 100644 --- a/docs/release-notes/version-4.1.md +++ b/docs/release-notes/version-4.1.md @@ -1,5 +1,13 @@ # NetBox v4.1 +## v4.1.6 (2024-10-31) + +### Bug Fixes + +* [#17700](https://github.com/netbox-community/netbox/issues/17700) - Fix warning when no scripts are found within a script module +* [#17884](https://github.com/netbox-community/netbox/issues/17884) - Fix translation support for certain tab headings +* [#17885](https://github.com/netbox-community/netbox/issues/17885) - Fix regression preventing custom scripts from executing + ## v4.1.5 (2024-10-28) ### Enhancements diff --git a/netbox/project-static/package.json b/netbox/project-static/package.json index b4e3a04eb..0750f397b 100644 --- a/netbox/project-static/package.json +++ b/netbox/project-static/package.json @@ -30,7 +30,7 @@ "gridstack": "10.3.1", "htmx.org": "1.9.12", "query-string": "9.1.1", - "sass": "1.80.4", + "sass": "1.80.5", "tom-select": "2.3.1", "typeface-inter": "3.18.1", "typeface-roboto-mono": "1.1.13" diff --git a/netbox/project-static/yarn.lock b/netbox/project-static/yarn.lock index 9c57c5485..44c9d994d 100644 --- a/netbox/project-static/yarn.lock +++ b/netbox/project-static/yarn.lock @@ -2656,10 +2656,10 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" -sass@1.80.4: - version "1.80.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.80.4.tgz#bc0418fd796cad2f1a1309d8b4d7fe44b7027de0" - integrity sha512-rhMQ2tSF5CsuuspvC94nPM9rToiAFw2h3JTrLlgmNw1MH79v8Cr3DH6KF6o6r+8oofY3iYVPUf66KzC8yuVN1w== +sass@1.80.5: + version "1.80.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.80.5.tgz#0ba965223d44df22497f2966b498cf5c453fae8f" + integrity sha512-TQd2aoQl/+zsxRMEDSxVdpPIqeq9UFc6pr7PzkugiTx3VYCFPUaa3P4RrBQsqok4PO200Vkz0vXQBNlg7W907g== dependencies: "@parcel/watcher" "^2.4.1" chokidar "^4.0.0" diff --git a/netbox/release.yaml b/netbox/release.yaml index 63854ac33..b4811804f 100644 --- a/netbox/release.yaml +++ b/netbox/release.yaml @@ -1,3 +1,3 @@ -version: "4.1.5" +version: "4.1.6" edition: "Community" -published: "2024-10-28" +published: "2024-10-31" diff --git a/requirements.txt b/requirements.txt index f7ec953c1..cb2590f83 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ Django==5.0.9 -django-cors-headers==4.5.0 +django-cors-headers==4.6.0 django-debug-toolbar==4.4.6 django-filter==24.3 django-htmx==1.21.0 @@ -8,7 +8,7 @@ django-mptt==0.16.0 django-pglocks==1.0.4 django-prometheus==2.3.1 django-redis==5.4.0 -django-rich==1.12.0 +django-rich==1.13.0 django-rq==2.10.2 django-taggit==6.1.0 django-tables2==2.7.0 @@ -20,7 +20,7 @@ feedparser==6.0.11 gunicorn==23.0.0 Jinja2==3.1.4 Markdown==3.7 -mkdocs-material==9.5.42 +mkdocs-material==9.5.43 mkdocstrings[python-legacy]==0.26.2 netaddr==1.3.0 nh3==0.2.18 From 81f00fd03a5afbf037692d5027b6afd4fdbb63a3 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 30 Oct 2024 12:46:00 -0400 Subject: [PATCH 04/32] Fixes #17895: Ensure GraphiQL UI resources are served locally --- netbox/netbox/graphql/views.py | 1 - netbox/templates/{ => graphql}/graphiql.html | 14 ++------------ 2 files changed, 2 insertions(+), 13 deletions(-) rename netbox/templates/{ => graphql}/graphiql.html (87%) diff --git a/netbox/netbox/graphql/views.py b/netbox/netbox/graphql/views.py index 85a01f025..46a073c93 100644 --- a/netbox/netbox/graphql/views.py +++ b/netbox/netbox/graphql/views.py @@ -14,7 +14,6 @@ class NetBoxGraphQLView(GraphQLView): """ Extends strawberry's GraphQLView to support DRF's token-based authentication. """ - graphiql_template = 'graphiql.html' @csrf_exempt def dispatch(self, request, *args, **kwargs): diff --git a/netbox/templates/graphiql.html b/netbox/templates/graphql/graphiql.html similarity index 87% rename from netbox/templates/graphiql.html rename to netbox/templates/graphql/graphiql.html index 0281012dc..f50648f1f 100644 --- a/netbox/templates/graphiql.html +++ b/netbox/templates/graphql/graphiql.html @@ -1,15 +1,8 @@ +{% load static %} {% comment %} This template derives from the strawberry-graphql project: https://github.com/strawberry-graphql/strawberry/blob/main/strawberry/static/graphiql.html {% endcomment %} - -{% load static %} @@ -112,10 +105,7 @@ add "&raw" to the end of the URL within a browser. headers["x-csrftoken"] = csrfToken; } - const subscriptionsEnabled = JSON.parse("{{ SUBSCRIPTION_ENABLED }}"); - const subscriptionUrl = subscriptionsEnabled - ? httpUrlToWebSockeUrl(fetchURL) - : null; + const subscriptionUrl = httpUrlToWebSockeUrl(fetchURL); const fetcher = GraphiQL.createFetcher({ url: fetchURL, From 27d15615b3590000901984bddfa7a815cd1343d8 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Fri, 1 Nov 2024 12:14:11 -0700 Subject: [PATCH 05/32] 17898 upgrade to django-rq v3 (#17911) * 17898 upgrade to django-rq v3 * Unpin base requirements --------- Co-authored-by: Jeremy Stretch --- base_requirements.txt | 4 ++-- netbox/core/tests/test_views.py | 1 + requirements.txt | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/base_requirements.txt b/base_requirements.txt index 2147731e2..3e5bcb0db 100644 --- a/base_requirements.txt +++ b/base_requirements.txt @@ -42,7 +42,7 @@ django-rich # Django integration for RQ (Reqis queuing) # https://github.com/rq/django-rq/blob/master/CHANGELOG.md -django-rq<3.0 +django-rq # Abstraction models for rendering and paginating HTML tables # https://github.com/jieter/django-tables2/blob/master/CHANGELOG.md @@ -118,7 +118,7 @@ requests # rq # https://github.com/rq/rq/blob/master/CHANGES.md -rq<2.0 +rq # Social authentication framework # https://github.com/python-social-auth/social-core/blob/master/CHANGELOG.md diff --git a/netbox/core/tests/test_views.py b/netbox/core/tests/test_views.py index 3c847e4ef..01912b4d6 100644 --- a/netbox/core/tests/test_views.py +++ b/netbox/core/tests/test_views.py @@ -308,6 +308,7 @@ class BackgroundTaskTestCase(TestCase): worker = get_worker('default') job = queue.enqueue(self.dummy_job_default) worker.prepare_job_execution(job) + worker.prepare_execution(job) self.assertEqual(job.get_status(), JobStatus.STARTED) diff --git a/requirements.txt b/requirements.txt index cb2590f83..5688bb431 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ django-pglocks==1.0.4 django-prometheus==2.3.1 django-redis==5.4.0 django-rich==1.13.0 -django-rq==2.10.2 +django-rq==3.0 django-taggit==6.1.0 django-tables2==2.7.0 django-timezone-field==7.0 @@ -28,7 +28,7 @@ Pillow==11.0.0 psycopg[c,pool]==3.2.3 PyYAML==6.0.2 requests==2.32.3 -rq==1.16.2 +rq==2.0 social-auth-app-django==5.4.2 social-auth-core==4.5.4 strawberry-graphql==0.247.0 From 6035ad139a9f34c5273e470b97b1bad01c1df41a Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 7 Nov 2024 08:57:02 -0500 Subject: [PATCH 06/32] Closes #16903: Update release process to use Transifex CLI client (#17916) * Closes #16903: Update release process to use Transifex CLI client * Add token environment variable to tx command --- .tx/config | 12 ++++++++++ docs/development/release-checklist.md | 15 ++++++++++++- docs/development/translations.md | 21 +++++++++++------- .../development/transifex_pull_request.png | Bin 110799 -> 0 bytes docs/media/development/transifex_sync.png | Bin 43392 -> 0 bytes 5 files changed, 39 insertions(+), 9 deletions(-) create mode 100755 .tx/config delete mode 100644 docs/media/development/transifex_pull_request.png delete mode 100644 docs/media/development/transifex_sync.png diff --git a/.tx/config b/.tx/config new file mode 100755 index 000000000..342331d4e --- /dev/null +++ b/.tx/config @@ -0,0 +1,12 @@ +[main] +host = https://app.transifex.com + +[o:netbox-community:p:netbox:r:9cbf4fcf95b3d92e4ebbf1a5e5d1caee] +file_filter = netbox/translations//LC_MESSAGES/django.po +source_file = netbox/translations/en/LC_MESSAGES/django.po +type = PO +minimum_perc = 0 +resource_name = django.po +replace_edited_strings = false +keep_translations = false + diff --git a/docs/development/release-checklist.md b/docs/development/release-checklist.md index 7c8c96f39..4e5fdeca8 100644 --- a/docs/development/release-checklist.md +++ b/docs/development/release-checklist.md @@ -90,7 +90,20 @@ This will automatically update the schema file at `contrib/generated_schema.json ### Update & Compile Translations -Updated language translations should be pulled from [Transifex](https://app.transifex.com/netbox-community/netbox/dashboard/) and re-compiled for each new release. Follow the documented process for [updating translated strings](./translations.md#updating-translated-strings) to do this. +Updated language translations should be pulled from [Transifex](https://app.transifex.com/netbox-community/netbox/dashboard/) and re-compiled for each new release. First, retrieve any updated translation files using the Transifex CLI client: + +```no-highlight +tx pull +``` + +Then, compile these portable (`.po`) files for use in the application: + +```no-highlight +./manage.py compilemessages +``` + +!!! tip + Consult the translation documentation for more detail on [updating translated strings](./translations.md#updating-translated-strings) if you've not set up the Transifex client already. ### Update Version and Changelog diff --git a/docs/development/translations.md b/docs/development/translations.md index eca9ce71f..43733c6d1 100644 --- a/docs/development/translations.md +++ b/docs/development/translations.md @@ -16,26 +16,31 @@ To update the English `.po` file from which all translations are derived, use th Then, commit the change and push to the `develop` branch on GitHub. Any new strings will appear for translation on Transifex automatically. +!!! note + It is typically not necessary to update source strings manually, as this is done nightly by a [GitHub action](https://github.com/netbox-community/netbox/blob/develop/.github/workflows/update-translation-strings.yml). + ## Updating Translated Strings Typically, translated strings need to be updated only as part of the NetBox [release process](./release-checklist.md). Check the Transifex dashboard for languages that are not marked _ready for use_, being sure to click _Show all languages_ if it appears at the bottom of the list. Use machine translation to round out any not-ready languages. It's not necessary to review the machine translation immediately as the translation teams will handle that aspect; the goal at this stage is to get translations included in the Transifex pull request. -To update translated strings, start by initiating a sync from Transifex. From the Transifex dashboard, navigate to Settings > Integrations > GitHub > Manage, and click the **Manual Sync** button at top right. +To download translated strings automatically, you'll need to: -![Transifex manual sync](../media/development/transifex_sync.png) +1. Install the [Transifex CLI client](https://github.com/transifex/cli) +2. Generate a [Transifex API token](https://app.transifex.com/user/settings/api/) -Enter a threshold percentage of 1 (to ensure all translations are captured) and select the `develop` branch, then click **Sync**. This will initiate a pull request to GitHub to update any newly modified translation (`.po`) files. +Once you have the client set up, run the following command: -!!! tip - The new PR should appear within a few minutes. If it does not, check that there are in fact new translations to be added. +```no-highlight +TX_TOKEN=$TOKEN tx pull +``` -![Transifex pull request](../media/development/transifex_pull_request.png) +This will download all portable (`.po`) translation files from Transifex, updating them locally as needed. -Once the PR has been merged, the updated strings need to be compiled into new `.mo` files so they can be used by the application. Update the `develop` branch locally to pull in the changes from the Transifex PR, then run Django's [`compilemessages`](https://docs.djangoproject.com/en/stable/ref/django-admin/#django-admin-compilemessages) management command: +Once retrieved, the updated strings need to be compiled into new `.mo` files so they can be used by the application. Run Django's [`compilemessages`](https://docs.djangoproject.com/en/stable/ref/django-admin/#django-admin-compilemessages) management command to compile them: -```nohighlight +```no-highlight ./manage.py compilemessages ``` diff --git a/docs/media/development/transifex_pull_request.png b/docs/media/development/transifex_pull_request.png deleted file mode 100644 index e3ae769917a11c6808461ba93b8f51bc5cab9625..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110799 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%0ALk0Oc_9eQ`L(2J~S-toZrHfLn4;xz5 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

H=B}5E1>r7@2{skYXAyS_mo$`^ysA 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
6aoLG-N)GfeyboCf< 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%0DrakGN$!vtq59-%@LfQqLpL%@S$r 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 From f873735dd4ef400d52993fa3dcf704d0b825ea08 Mon Sep 17 00:00:00 2001 From: bctiemann Date: Thu, 7 Nov 2024 09:14:33 -0500 Subject: [PATCH 07/32] Closes: #15239 - Allow adding/removing tagged VLANs in bulk editing of Interfaces (#17524) * Allow adding/removing tagged VLANs in bulk editing of Interfaces * Move vlan/interface-specific field operations to an overrideable method * Ensure interfaces are MODE_TAGGED before adding/removing tagged vlans * Add docstring for generic extra_object_field_operations * Move tagging ops into post_save_operations and use a TabbedGroup in the form --- netbox/dcim/forms/bulk_edit.py | 62 ++++++++++++++++------- netbox/dcim/views.py | 12 ++++- netbox/netbox/views/generic/bulk_views.py | 17 +++++-- 3 files changed, 68 insertions(+), 23 deletions(-) diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 96036f4da..54cc4dd87 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -13,7 +13,7 @@ from tenancy.models import Tenant from users.models import User from utilities.forms import BulkEditForm, add_blank_choice, form_from_model from utilities.forms.fields import ColorField, CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField -from utilities.forms.rendering import FieldSet, InlineFields +from utilities.forms.rendering import FieldSet, InlineFields, TabbedGroups from utilities.forms.widgets import BulkEditNullBooleanSelect, NumberWithOptions from wireless.models import WirelessLAN, WirelessLANGroup from wireless.choices import WirelessRoleChoices @@ -1404,18 +1404,25 @@ class InterfaceBulkEditForm( parent = DynamicModelChoiceField( label=_('Parent'), queryset=Interface.objects.all(), - required=False + required=False, + query_params={ + 'virtual_chassis_member_id': '$device', + } ) bridge = DynamicModelChoiceField( label=_('Bridge'), queryset=Interface.objects.all(), - required=False + required=False, + query_params={ + 'virtual_chassis_member_id': '$device', + } ) lag = DynamicModelChoiceField( queryset=Interface.objects.all(), required=False, query_params={ 'type': 'lag', + 'virtual_chassis_member_id': '$device', }, label=_('LAG') ) @@ -1472,6 +1479,7 @@ class InterfaceBulkEditForm( required=False, query_params={ 'group_id': '$vlan_group', + 'available_on_device': '$device', }, label=_('Untagged VLAN') ) @@ -1480,9 +1488,28 @@ class InterfaceBulkEditForm( required=False, query_params={ 'group_id': '$vlan_group', + 'available_on_device': '$device', }, label=_('Tagged VLANs') ) + add_tagged_vlans = DynamicModelMultipleChoiceField( + label=_('Add tagged VLANs'), + queryset=VLAN.objects.all(), + required=False, + query_params={ + 'group_id': '$vlan_group', + 'available_on_device': '$device', + }, + ) + remove_tagged_vlans = DynamicModelMultipleChoiceField( + label=_('Remove tagged VLANs'), + queryset=VLAN.objects.all(), + required=False, + query_params={ + 'group_id': '$vlan_group', + 'available_on_device': '$device', + } + ) vrf = DynamicModelChoiceField( queryset=VRF.objects.all(), required=False, @@ -1509,7 +1536,13 @@ class InterfaceBulkEditForm( FieldSet('vdcs', 'mtu', 'tx_power', 'enabled', 'mgmt_only', 'mark_connected', name=_('Operation')), FieldSet('poe_mode', 'poe_type', name=_('PoE')), FieldSet('parent', 'bridge', 'lag', name=_('Related Interfaces')), - FieldSet('mode', 'vlan_group', 'untagged_vlan', 'tagged_vlans', name=_('802.1Q Switching')), + FieldSet('mode', 'vlan_group', 'untagged_vlan', name=_('802.1Q Switching')), + FieldSet( + TabbedGroups( + FieldSet('tagged_vlans', name=_('Assignment')), + FieldSet('add_tagged_vlans', 'remove_tagged_vlans', name=_('Add/Remove')), + ), + ), FieldSet( 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'wireless_lan_group', 'wireless_lans', name=_('Wireless') @@ -1523,19 +1556,7 @@ class InterfaceBulkEditForm( def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if self.device_id: - device = Device.objects.filter(pk=self.device_id).first() - - # Restrict parent/bridge/LAG interface assignment by device - self.fields['parent'].widget.add_query_param('virtual_chassis_member_id', device.pk) - self.fields['bridge'].widget.add_query_param('virtual_chassis_member_id', device.pk) - self.fields['lag'].widget.add_query_param('virtual_chassis_member_id', device.pk) - - # Limit VLAN choices by device - self.fields['untagged_vlan'].widget.add_query_param('available_on_device', device.pk) - self.fields['tagged_vlans'].widget.add_query_param('available_on_device', device.pk) - - else: + if not self.device_id: # See #4523 if 'pk' in self.initial: site = None @@ -1559,6 +1580,13 @@ class InterfaceBulkEditForm( 'site_id', [site.pk, settings.FILTERS_NULL_CHOICE_VALUE] ) + self.fields['add_tagged_vlans'].widget.add_query_param( + 'site_id', [site.pk, settings.FILTERS_NULL_CHOICE_VALUE] + ) + self.fields['remove_tagged_vlans'].widget.add_query_param( + 'site_id', [site.pk, settings.FILTERS_NULL_CHOICE_VALUE] + ) + self.fields['parent'].choices = () self.fields['parent'].widget.attrs['disabled'] = True self.fields['bridge'].choices = () diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 3cd423426..f390be89b 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -35,7 +35,7 @@ from virtualization.forms import VirtualMachineFilterForm from virtualization.models import VirtualMachine from virtualization.tables import VirtualMachineTable from . import filtersets, forms, tables -from .choices import DeviceFaceChoices +from .choices import DeviceFaceChoices, InterfaceModeChoices from .models import * CABLE_TERMINATION_TYPES = { @@ -2616,6 +2616,16 @@ class InterfaceBulkEditView(generic.BulkEditView): table = tables.InterfaceTable form = forms.InterfaceBulkEditForm + def post_save_operations(self, form, obj): + super().post_save_operations(form, obj) + + # Add/remove tagged VLANs + if obj.mode == InterfaceModeChoices.MODE_TAGGED: + if form.cleaned_data.get('add_tagged_vlans', None): + obj.tagged_vlans.add(*form.cleaned_data['add_tagged_vlans']) + if form.cleaned_data.get('remove_tagged_vlans', None): + obj.tagged_vlans.remove(*form.cleaned_data['remove_tagged_vlans']) + class InterfaceBulkRenameView(generic.BulkRenameView): queryset = Interface.objects.all() diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index d8115726c..4b2f1ae28 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -541,6 +541,17 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView): def get_required_permission(self): return get_permission_for_model(self.queryset.model, 'change') + def post_save_operations(self, form, obj): + """ + This method is called for each object in _update_objects. Override to perform additional object-level + operations that are specific to a particular ModelForm. + """ + # Add/remove tags + if form.cleaned_data.get('add_tags', None): + obj.tags.add(*form.cleaned_data['add_tags']) + if form.cleaned_data.get('remove_tags', None): + obj.tags.remove(*form.cleaned_data['remove_tags']) + def _update_objects(self, form, request): custom_fields = getattr(form, 'custom_fields', {}) standard_fields = [ @@ -612,11 +623,7 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView): elif form.cleaned_data[name]: getattr(obj, name).set(form.cleaned_data[name]) - # Add/remove tags - if form.cleaned_data.get('add_tags', None): - obj.tags.add(*form.cleaned_data['add_tags']) - if form.cleaned_data.get('remove_tags', None): - obj.tags.remove(*form.cleaned_data['remove_tags']) + self.post_save_operations(form, obj) # Rebuild the tree for MPTT models if issubclass(self.queryset.model, MPTTModel): From fe0ae39903f96e76f94d61ab7fb937980e861c4a Mon Sep 17 00:00:00 2001 From: Pl0xym0r <148605740+pl0xym0r@users.noreply.github.com> Date: Thu, 7 Nov 2024 15:26:14 +0100 Subject: [PATCH 08/32] Closes: #17871 - Add cluster on bulkedit device (#17920) * 17871 add cluster on bulkedit device * Make cluster assignment nullable; reorder imports --------- Co-authored-by: Jeremy Stretch --- netbox/dcim/forms/bulk_edit.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 54cc4dd87..b2733b60c 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -15,8 +15,9 @@ from utilities.forms import BulkEditForm, add_blank_choice, form_from_model from utilities.forms.fields import ColorField, CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField from utilities.forms.rendering import FieldSet, InlineFields, TabbedGroups from utilities.forms.widgets import BulkEditNullBooleanSelect, NumberWithOptions -from wireless.models import WirelessLAN, WirelessLANGroup +from virtualization.models import Cluster from wireless.choices import WirelessRoleChoices +from wireless.models import WirelessLAN, WirelessLANGroup __all__ = ( 'CableBulkEditForm', @@ -721,6 +722,14 @@ class DeviceBulkEditForm(NetBoxModelBulkEditForm): queryset=ConfigTemplate.objects.all(), required=False ) + cluster = DynamicModelChoiceField( + label=_('Cluster'), + queryset=Cluster.objects.all(), + required=False, + query_params={ + 'site_id': ['$site', 'null'] + }, + ) comments = CommentField() model = Device @@ -729,9 +738,10 @@ class DeviceBulkEditForm(NetBoxModelBulkEditForm): FieldSet('site', 'location', name=_('Location')), FieldSet('manufacturer', 'device_type', 'airflow', 'serial', name=_('Hardware')), FieldSet('config_template', name=_('Configuration')), + FieldSet('cluster', name=_('Virtualization')), ) nullable_fields = ( - 'location', 'tenant', 'platform', 'serial', 'airflow', 'description', 'comments', + 'location', 'tenant', 'platform', 'serial', 'airflow', 'description', 'cluster', 'comments', ) From 494d4108478abe0ba9b15c974644eb2db8615b30 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 05:02:01 +0000 Subject: [PATCH 09/32] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 405 ++++++++++--------- 1 file changed, 209 insertions(+), 196 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index 4afa28869..01e151c84 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-31 05:02+0000\n" +"POT-Creation-Date: 2024-11-08 05:01+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -194,9 +194,9 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:209 #: netbox/circuits/forms/model_forms.py:138 #: netbox/circuits/forms/model_forms.py:154 -#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 -#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 -#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:169 +#: netbox/dcim/forms/bulk_edit.py:330 netbox/dcim/forms/bulk_edit.py:678 +#: netbox/dcim/forms/bulk_edit.py:883 netbox/dcim/forms/bulk_import.py:131 #: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 #: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 #: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 @@ -380,7 +380,7 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:30 netbox/circuits/forms/filtersets.py:56 #: netbox/circuits/forms/model_forms.py:29 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:129 #: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 @@ -394,21 +394,21 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:164 #: netbox/circuits/forms/bulk_edit.py:183 #: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 -#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 -#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 -#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 -#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 -#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 -#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 -#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 -#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 -#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 -#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 -#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 -#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 -#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 -#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:74 +#: netbox/dcim/forms/bulk_edit.py:93 netbox/dcim/forms/bulk_edit.py:152 +#: netbox/dcim/forms/bulk_edit.py:193 netbox/dcim/forms/bulk_edit.py:211 +#: netbox/dcim/forms/bulk_edit.py:289 netbox/dcim/forms/bulk_edit.py:433 +#: netbox/dcim/forms/bulk_edit.py:467 netbox/dcim/forms/bulk_edit.py:482 +#: netbox/dcim/forms/bulk_edit.py:541 netbox/dcim/forms/bulk_edit.py:585 +#: netbox/dcim/forms/bulk_edit.py:619 netbox/dcim/forms/bulk_edit.py:643 +#: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_edit.py:777 +#: netbox/dcim/forms/bulk_edit.py:829 netbox/dcim/forms/bulk_edit.py:852 +#: netbox/dcim/forms/bulk_edit.py:900 netbox/dcim/forms/bulk_edit.py:970 +#: netbox/dcim/forms/bulk_edit.py:1023 netbox/dcim/forms/bulk_edit.py:1058 +#: netbox/dcim/forms/bulk_edit.py:1098 netbox/dcim/forms/bulk_edit.py:1142 +#: netbox/dcim/forms/bulk_edit.py:1187 netbox/dcim/forms/bulk_edit.py:1214 +#: netbox/dcim/forms/bulk_edit.py:1232 netbox/dcim/forms/bulk_edit.py:1250 +#: netbox/dcim/forms/bulk_edit.py:1268 netbox/dcim/forms/bulk_edit.py:1720 #: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 #: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 #: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 @@ -553,10 +553,10 @@ msgid "Service ID" msgstr "" #: netbox/circuits/forms/bulk_edit.py:100 -#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 -#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 -#: 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/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:207 +#: netbox/dcim/forms/bulk_edit.py:605 netbox/dcim/forms/bulk_edit.py:814 +#: netbox/dcim/forms/bulk_edit.py:1183 netbox/dcim/forms/bulk_edit.py:1210 +#: netbox/dcim/forms/bulk_edit.py:1716 netbox/dcim/forms/filtersets.py:1064 #: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 #: netbox/dcim/tables/devices.py:704 netbox/dcim/tables/devices.py:761 #: netbox/dcim/tables/devices.py:1003 netbox/dcim/tables/devicetypes.py:249 @@ -576,11 +576,11 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 #: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 #: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 -#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 -#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 -#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 -#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 -#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_edit.py:792 netbox/dcim/forms/bulk_edit.py:931 +#: netbox/dcim/forms/bulk_edit.py:999 netbox/dcim/forms/bulk_edit.py:1018 +#: netbox/dcim/forms/bulk_edit.py:1041 netbox/dcim/forms/bulk_edit.py:1083 +#: netbox/dcim/forms/bulk_edit.py:1127 netbox/dcim/forms/bulk_edit.py:1178 +#: netbox/dcim/forms/bulk_edit.py:1205 netbox/dcim/forms/bulk_import.py:188 #: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 #: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 #: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 @@ -637,10 +637,10 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 #: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 -#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 -#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 -#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_edit.py:107 netbox/dcim/forms/bulk_edit.py:182 +#: netbox/dcim/forms/bulk_edit.py:352 netbox/dcim/forms/bulk_edit.py:701 +#: netbox/dcim/forms/bulk_edit.py:766 netbox/dcim/forms/bulk_edit.py:798 +#: netbox/dcim/forms/bulk_edit.py:925 netbox/dcim/forms/bulk_edit.py:1739 #: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 #: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 #: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 @@ -705,10 +705,10 @@ msgstr "" #: netbox/circuits/forms/bulk_import.py:98 #: netbox/circuits/forms/bulk_import.py:158 #: netbox/circuits/forms/filtersets.py:119 -#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 -#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 -#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 -#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:123 +#: netbox/dcim/forms/bulk_edit.py:188 netbox/dcim/forms/bulk_edit.py:347 +#: netbox/dcim/forms/bulk_edit.py:462 netbox/dcim/forms/bulk_edit.py:691 +#: netbox/dcim/forms/bulk_edit.py:804 netbox/dcim/forms/bulk_edit.py:1744 #: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 #: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 #: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 @@ -833,11 +833,11 @@ msgstr "" msgid "Upstream speed (Kbps)" msgstr "" -#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 -#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 -#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 -#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_edit.py:1611 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:961 +#: netbox/dcim/forms/bulk_edit.py:1325 netbox/dcim/forms/bulk_edit.py:1342 +#: netbox/dcim/forms/bulk_edit.py:1359 netbox/dcim/forms/bulk_edit.py:1377 +#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1632 +#: netbox/dcim/forms/bulk_edit.py:1649 msgid "Mark connected" msgstr "" @@ -927,9 +927,9 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:30 #: netbox/circuits/forms/filtersets.py:118 -#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 -#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 -#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:339 +#: netbox/dcim/forms/bulk_edit.py:442 netbox/dcim/forms/bulk_edit.py:683 +#: netbox/dcim/forms/bulk_edit.py:738 netbox/dcim/forms/bulk_edit.py:892 #: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 #: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 #: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 @@ -980,8 +980,8 @@ msgid "Contacts" msgstr "" #: netbox/circuits/forms/filtersets.py:37 -#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 -#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:113 +#: netbox/dcim/forms/bulk_edit.py:314 netbox/dcim/forms/bulk_edit.py:867 #: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 #: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 #: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 @@ -1007,8 +1007,8 @@ msgid "Region" msgstr "" #: netbox/circuits/forms/filtersets.py:42 -#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 -#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:322 +#: netbox/dcim/forms/bulk_edit.py:875 netbox/dcim/forms/filtersets.py:78 #: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 #: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 #: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 @@ -1028,7 +1028,7 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:83 #: netbox/circuits/forms/filtersets.py:102 #: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 -#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:838 #: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 #: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 @@ -1066,7 +1066,7 @@ msgstr "" msgid "Term Side" msgstr "" -#: netbox/circuits/forms/filtersets.py:250 +#: netbox/circuits/forms/filtersets.py:250 netbox/dcim/forms/bulk_edit.py:1552 #: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 #: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 #: netbox/templates/extras/configcontext.html:60 @@ -1078,7 +1078,7 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:265 #: netbox/circuits/forms/model_forms.py:195 -#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 #: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 #: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:493 @@ -1739,8 +1739,8 @@ msgid "User name" msgstr "" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 -#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/filtersets.py:1370 #: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:224 #: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 #: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 @@ -1844,7 +1844,7 @@ msgid "Completed before" msgstr "" #: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 -#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/filtersets.py:418 #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 #: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 #: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 @@ -1910,8 +1910,8 @@ msgid "Rack Elevations" msgstr "" #: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1518 -#: 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/dcim/forms/bulk_edit.py:979 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1385 netbox/dcim/tables/racks.py:158 #: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "" @@ -2553,9 +2553,9 @@ msgstr "" msgid "Rear to front" msgstr "" -#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 -#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 -#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:69 +#: netbox/dcim/forms/bulk_edit.py:88 netbox/dcim/forms/bulk_edit.py:174 +#: netbox/dcim/forms/bulk_edit.py:1415 netbox/dcim/forms/bulk_import.py:60 #: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 #: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 #: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 @@ -2688,7 +2688,7 @@ msgid "Virtual" msgstr "" #: netbox/dcim/choices.py:856 netbox/dcim/choices.py:1097 -#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/filtersets.py:1330 #: 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 @@ -2699,7 +2699,7 @@ msgstr "" msgid "Virtual interfaces" msgstr "" -#: netbox/dcim/choices.py:1024 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/choices.py:1024 netbox/dcim/forms/bulk_edit.py:1423 #: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 #: netbox/dcim/tables/devices.py:660 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 @@ -3106,7 +3106,7 @@ msgstr "" msgid "Device model (slug)" msgstr "" -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:517 msgid "Is full depth" msgstr "" @@ -3228,7 +3228,7 @@ msgstr "" msgid "Assigned VID" msgstr "" -#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1526 #: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 #: netbox/dcim/forms/model_forms.py:1378 #: netbox/dcim/models/device_components.py:711 @@ -3397,27 +3397,27 @@ msgid "" "created.)" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:132 +#: netbox/dcim/forms/bulk_edit.py:133 msgid "Contact name" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:137 +#: netbox/dcim/forms/bulk_edit.py:138 msgid "Contact phone" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:143 +#: netbox/dcim/forms/bulk_edit.py:144 msgid "Contact E-mail" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/bulk_edit.py:147 netbox/dcim/forms/bulk_import.py:123 #: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 -#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_edit.py:225 netbox/dcim/forms/bulk_edit.py:496 +#: netbox/dcim/forms/bulk_edit.py:560 netbox/dcim/forms/bulk_edit.py:633 +#: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:750 +#: netbox/dcim/forms/bulk_edit.py:1277 netbox/dcim/forms/bulk_edit.py:1698 #: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 #: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 #: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 @@ -3443,51 +3443,51 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_edit.py:230 netbox/dcim/forms/bulk_edit.py:373 #: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 #: netbox/dcim/forms/filtersets.py:255 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 msgid "Form factor" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_edit.py:235 netbox/dcim/forms/bulk_edit.py:378 #: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 #: netbox/dcim/forms/filtersets.py:260 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/dcim/forms/bulk_edit.py:241 netbox/dcim/forms/bulk_edit.py:384 #: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/bulk_edit.py:250 netbox/dcim/forms/bulk_edit.py:389 #: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 +#: netbox/dcim/forms/bulk_edit.py:253 netbox/dcim/forms/bulk_edit.py:392 msgid "Outer width" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 +#: netbox/dcim/forms/bulk_edit.py:258 netbox/dcim/forms/bulk_edit.py:397 msgid "Outer depth" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_edit.py:263 netbox/dcim/forms/bulk_edit.py:402 #: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 +#: netbox/dcim/forms/bulk_edit.py:268 netbox/dcim/forms/bulk_edit.py:407 msgid "Mounting depth" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 -#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 -#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 -#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_edit.py:273 netbox/dcim/forms/bulk_edit.py:300 +#: netbox/dcim/forms/bulk_edit.py:417 netbox/dcim/forms/bulk_edit.py:447 +#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:553 +#: netbox/dcim/forms/bulk_edit.py:574 netbox/dcim/forms/bulk_edit.py:596 #: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 #: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 #: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 @@ -3511,13 +3511,13 @@ msgstr "" msgid "Weight" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/bulk_edit.py:278 netbox/dcim/forms/bulk_edit.py:422 #: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_edit.py:283 netbox/dcim/forms/bulk_edit.py:427 +#: netbox/dcim/forms/bulk_edit.py:535 netbox/dcim/forms/bulk_edit.py:579 #: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 #: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 #: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 @@ -3525,31 +3525,31 @@ msgstr "" msgid "Weight unit" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:305 #: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 #: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 msgid "Rack Type" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/bulk_edit.py:299 netbox/dcim/forms/model_forms.py:220 #: netbox/dcim/forms/model_forms.py:297 msgid "Outer Dimensions" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/bulk_edit.py:302 netbox/dcim/forms/model_forms.py:222 #: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 msgid "Dimensions" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/bulk_edit.py:304 netbox/dcim/forms/filtersets.py:306 #: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 -#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_edit.py:358 netbox/dcim/forms/bulk_edit.py:1272 +#: netbox/dcim/forms/bulk_edit.py:1693 netbox/dcim/forms/bulk_import.py:253 #: 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 @@ -3591,22 +3591,22 @@ msgstr "" msgid "Role" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 -#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/dcim/forms/bulk_edit.py:365 netbox/dcim/forms/bulk_edit.py:713 +#: netbox/dcim/forms/bulk_edit.py:774 netbox/templates/dcim/device.html:104 #: netbox/templates/dcim/module.html:77 netbox/templates/dcim/modulebay.html:70 #: netbox/templates/dcim/rack.html:57 #: netbox/templates/virtualization/virtualmachine.html:35 msgid "Serial Number" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/filtersets.py:387 #: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 #: netbox/dcim/forms/filtersets.py:1546 msgid "Asset tag" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 -#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:525 +#: netbox/dcim/forms/bulk_edit.py:569 netbox/dcim/forms/bulk_edit.py:706 #: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 #: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 #: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 @@ -3617,7 +3617,7 @@ msgstr "" msgid "Airflow" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:920 #: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 #: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 #: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 @@ -3639,7 +3639,7 @@ msgstr "" msgid "Rack" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/bulk_edit.py:445 netbox/dcim/forms/bulk_edit.py:739 #: 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 @@ -3648,50 +3648,50 @@ msgstr "" msgid "Hardware" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/bulk_edit.py:501 netbox/dcim/forms/bulk_import.py:377 #: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/bulk_edit.py:506 netbox/dcim/forms/bulk_edit.py:565 #: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:509 +#: netbox/dcim/forms/bulk_edit.py:510 msgid "U height" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:102 +#: netbox/dcim/forms/bulk_edit.py:522 netbox/dcim/tables/devicetypes.py:102 msgid "Exclude from utilization" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/bulk_edit.py:551 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:77 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 +#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 #: netbox/templates/dcim/module.html:65 netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:22 msgid "Module Type" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/bulk_edit.py:597 netbox/dcim/forms/model_forms.py:371 #: netbox/dcim/forms/model_forms.py:402 #: netbox/templates/dcim/devicetype.html:11 msgid "Chassis" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 +#: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 -#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_edit.py:614 netbox/dcim/forms/bulk_edit.py:638 +#: netbox/dcim/forms/bulk_edit.py:721 netbox/dcim/forms/bulk_import.py:434 #: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 #: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 #: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 @@ -3705,19 +3705,19 @@ msgstr "" msgid "Config template" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_edit.py:662 netbox/dcim/forms/bulk_edit.py:1071 #: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 #: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 #: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/bulk_edit.py:673 netbox/dcim/forms/bulk_import.py:473 #: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/bulk_edit.py:696 netbox/dcim/forms/bulk_import.py:498 #: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 #: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 #: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 @@ -3731,8 +3731,30 @@ msgstr "" msgid "Platform" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 -#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/bulk_import.py:517 +#: netbox/dcim/forms/filtersets.py:728 netbox/dcim/forms/filtersets.py:898 +#: netbox/dcim/forms/model_forms.py:522 netbox/dcim/tables/devices.py:202 +#: netbox/extras/filtersets.py:596 netbox/extras/forms/filtersets.py:322 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 +#: netbox/templates/dcim/device.html:239 +#: netbox/templates/virtualization/cluster.html:10 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 +#: netbox/virtualization/filtersets.py:157 +#: netbox/virtualization/filtersets.py:277 +#: netbox/virtualization/forms/bulk_edit.py:129 +#: netbox/virtualization/forms/bulk_import.py:92 +#: netbox/virtualization/forms/filtersets.py:99 +#: netbox/virtualization/forms/filtersets.py:123 +#: netbox/virtualization/forms/filtersets.py:204 +#: netbox/virtualization/forms/model_forms.py:79 +#: netbox/virtualization/forms/model_forms.py:176 +#: netbox/virtualization/tables/virtualmachines.py:67 +msgid "Cluster" +msgstr "" + +#: netbox/dcim/forms/bulk_edit.py:737 netbox/dcim/forms/bulk_edit.py:1291 +#: netbox/dcim/forms/bulk_edit.py:1688 netbox/dcim/forms/bulk_edit.py:1734 #: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 #: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 #: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 @@ -3797,23 +3819,28 @@ msgstr "" msgid "Device" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:731 +#: netbox/dcim/forms/bulk_edit.py:740 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/bulk_edit.py:741 netbox/netbox/navigation/menu.py:243 +#: netbox/templates/dcim/device_edit.html:78 +msgid "Virtualization" +msgstr "" + +#: netbox/dcim/forms/bulk_edit.py:755 netbox/dcim/forms/bulk_import.py:653 #: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 -#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 -#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 -#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 -#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 -#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 +#: netbox/dcim/forms/bulk_edit.py:809 netbox/dcim/forms/bulk_edit.py:994 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1036 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1227 netbox/dcim/forms/bulk_edit.py:1245 +#: netbox/dcim/forms/bulk_edit.py:1263 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3831,85 +3858,85 @@ msgstr "" msgid "Label" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 +#: netbox/dcim/forms/bulk_edit.py:818 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_edit.py:823 netbox/dcim/forms/bulk_import.py:1226 #: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:837 +#: netbox/dcim/forms/bulk_edit.py:847 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_import.py:1345 #: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/bulk_edit.py:937 netbox/dcim/forms/bulk_import.py:1381 #: netbox/dcim/forms/filtersets.py:1180 netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/bulk_import.py:1386 #: netbox/dcim/forms/filtersets.py:1185 netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 +#: netbox/dcim/forms/bulk_edit.py:949 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 +#: netbox/dcim/forms/bulk_edit.py:953 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 +#: netbox/dcim/forms/bulk_edit.py:957 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1036 +#: netbox/dcim/forms/bulk_edit.py:1046 msgid "Maximum draw" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/forms/bulk_edit.py:1049 #: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:356 msgid "Maximum power draw (watts)" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1042 +#: netbox/dcim/forms/bulk_edit.py:1052 msgid "Allocated draw" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/forms/bulk_edit.py:1055 #: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:363 msgid "Allocated power draw (watts)" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_edit.py:1088 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:1567 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1457 msgid "Management only" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_edit.py:1149 netbox/dcim/forms/bulk_edit.py:1463 #: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 #: netbox/dcim/models/device_component_templates.py:437 @@ -3917,7 +3944,7 @@ msgstr "" msgid "PoE mode" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_edit.py:1155 netbox/dcim/forms/bulk_edit.py:1469 #: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 #: netbox/dcim/models/device_component_templates.py:443 @@ -3925,12 +3952,12 @@ msgstr "" msgid "PoE type" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 +#: netbox/dcim/forms/bulk_edit.py:1161 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/model_forms.py:669 #: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 @@ -3944,16 +3971,16 @@ msgstr "" msgid "Module" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:665 +#: netbox/dcim/forms/bulk_edit.py:1437 netbox/dcim/tables/devices.py:665 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 +#: netbox/dcim/forms/bulk_edit.py:1442 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_edit.py:1448 netbox/dcim/forms/bulk_import.py:714 #: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 #: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 #: netbox/dcim/tables/devices.py:610 @@ -3963,7 +3990,7 @@ msgstr "" msgid "Speed" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 +#: netbox/dcim/forms/bulk_edit.py:1477 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3977,39 +4004,47 @@ msgstr "" msgid "Mode" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/dcim/forms/bulk_edit.py:1485 netbox/dcim/forms/model_forms.py:1354 #: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1360 +#: netbox/dcim/forms/bulk_edit.py:1494 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:1369 +#: netbox/dcim/forms/bulk_edit.py:1503 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 msgid "Tagged VLANs" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1506 +msgid "Add tagged VLANs" +msgstr "" + +#: netbox/dcim/forms/bulk_edit.py:1515 +msgid "Remove tagged VLANs" +msgstr "" + +#: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/model_forms.py:1346 #: netbox/dcim/tables/devices.py:619 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/bulk_edit.py:1545 netbox/dcim/forms/filtersets.py:1328 #: netbox/dcim/forms/model_forms.py:1390 netbox/ipam/forms/bulk_edit.py:286 #: netbox/ipam/forms/bulk_edit.py:378 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 @@ -4018,35 +4053,39 @@ msgstr "" msgid "Addressing" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:720 #: 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/bulk_edit.py:1547 netbox/dcim/forms/filtersets.py:1329 #: 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:1392 +#: netbox/dcim/forms/bulk_edit.py:1548 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:1394 +#: netbox/dcim/forms/bulk_edit.py:1549 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" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 +#: netbox/dcim/forms/bulk_edit.py:1553 +msgid "Add/Remove" +msgstr "" + +#: netbox/dcim/forms/bulk_edit.py:1612 netbox/dcim/forms/bulk_edit.py:1614 msgid "Interface mode must be specified to assign VLANs" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1619 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "" @@ -4191,27 +4230,6 @@ msgstr "" msgid "Virtual chassis" msgstr "" -#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 -#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 -#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/filtersets.py:415 -#: netbox/ipam/forms/filtersets.py:447 netbox/templates/dcim/device.html:239 -#: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:92 -#: netbox/templates/virtualization/virtualmachine.html:101 -#: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:277 -#: netbox/virtualization/forms/bulk_edit.py:129 -#: netbox/virtualization/forms/bulk_import.py:92 -#: netbox/virtualization/forms/filtersets.py:99 -#: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:204 -#: netbox/virtualization/forms/model_forms.py:79 -#: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:67 -msgid "Cluster" -msgstr "" - #: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "" @@ -6890,31 +6908,31 @@ msgstr "" msgid "Virtual Machines" msgstr "" -#: netbox/dcim/views.py:2897 +#: netbox/dcim/views.py:2907 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "" -#: netbox/dcim/views.py:2938 +#: netbox/dcim/views.py:2948 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "" -#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3054 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "" -#: netbox/dcim/views.py:3510 +#: netbox/dcim/views.py:3520 #, python-brace-format msgid "Added member {device}" msgstr "" -#: netbox/dcim/views.py:3557 +#: netbox/dcim/views.py:3567 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" -#: netbox/dcim/views.py:3570 +#: netbox/dcim/views.py:3580 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "" @@ -10673,11 +10691,6 @@ msgstr "" msgid "IPSec Profiles" msgstr "" -#: netbox/netbox/navigation/menu.py:243 -#: netbox/templates/dcim/device_edit.html:78 -msgid "Virtualization" -msgstr "" - #: netbox/netbox/navigation/menu.py:251 #: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 @@ -11084,19 +11097,19 @@ msgstr "" msgid "Row {i}: Object with ID {id} does not exist" msgstr "" -#: netbox/netbox/views/generic/bulk_views.py:702 -#: netbox/netbox/views/generic/bulk_views.py:900 -#: netbox/netbox/views/generic/bulk_views.py:948 +#: netbox/netbox/views/generic/bulk_views.py:709 +#: netbox/netbox/views/generic/bulk_views.py:907 +#: netbox/netbox/views/generic/bulk_views.py:955 #, python-brace-format msgid "No {object_type} were selected." msgstr "" -#: netbox/netbox/views/generic/bulk_views.py:782 +#: netbox/netbox/views/generic/bulk_views.py:789 #, python-brace-format msgid "Renamed {count} {object_type}" msgstr "" -#: netbox/netbox/views/generic/bulk_views.py:878 +#: netbox/netbox/views/generic/bulk_views.py:885 #, python-brace-format msgid "Deleted {count} {object_type}" msgstr "" From 954e29aec3bfefeab1cebfffbe97a7520406ecd0 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 12 Nov 2024 12:19:37 -0500 Subject: [PATCH 10/32] Fixes #17972: Force evaluation of LOGIN_REQUIRED when requesting static media (#17990) --- netbox/netbox/tests/test_views.py | 20 +++++++++++++++++++- netbox/netbox/urls.py | 5 ++--- netbox/netbox/views/misc.py | 10 ++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/netbox/netbox/tests/test_views.py b/netbox/netbox/tests/test_views.py index ccba73baa..50cfa5755 100644 --- a/netbox/netbox/tests/test_views.py +++ b/netbox/netbox/tests/test_views.py @@ -1,7 +1,7 @@ import urllib.parse from django.urls import reverse -from django.test import override_settings +from django.test import Client, override_settings from dcim.models import Site from netbox.constants import EMPTY_TABLE_TEXT @@ -74,3 +74,21 @@ class SearchViewTestCase(TestCase): self.assertHttpStatus(response, 200) content = str(response.content) self.assertIn(EMPTY_TABLE_TEXT, content) + + +class MediaViewTestCase(TestCase): + + def test_media_login_required(self): + url = reverse('media', kwargs={'path': 'foo.txt'}) + response = Client().get(url) + + # Unauthenticated request should redirect to login page + self.assertHttpStatus(response, 302) + + @override_settings(LOGIN_REQUIRED=False) + def test_media_login_not_required(self): + url = reverse('media', kwargs={'path': 'foo.txt'}) + response = Client().get(url) + + # Unauthenticated request should return a 404 (not found) + self.assertHttpStatus(response, 404) diff --git a/netbox/netbox/urls.py b/netbox/netbox/urls.py index b0175ec04..b91ee295d 100644 --- a/netbox/netbox/urls.py +++ b/netbox/netbox/urls.py @@ -2,7 +2,6 @@ from django.conf import settings from django.conf.urls import include from django.urls import path from django.views.decorators.cache import cache_page -from django.views.static import serve from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView from account.views import LoginView, LogoutView @@ -10,7 +9,7 @@ from netbox.api.views import APIRootView, StatusView from netbox.graphql.schema import schema from netbox.graphql.views import NetBoxGraphQLView from netbox.plugins.urls import plugin_patterns, plugin_api_patterns -from netbox.views import HomeView, StaticMediaFailureView, SearchView, htmx +from netbox.views import HomeView, MediaView, StaticMediaFailureView, SearchView, htmx _patterns = [ @@ -69,7 +68,7 @@ _patterns = [ path('graphql/', NetBoxGraphQLView.as_view(schema=schema), name='graphql'), # Serving static media in Django to pipe it through LoginRequiredMiddleware - path('media/', serve, {'document_root': settings.MEDIA_ROOT}), + path('media/', MediaView.as_view(), name='media'), path('media-failure/', StaticMediaFailureView.as_view(), name='media_failure'), # Plugins diff --git a/netbox/netbox/views/misc.py b/netbox/netbox/views/misc.py index c584e99e4..f28b0f7b1 100644 --- a/netbox/netbox/views/misc.py +++ b/netbox/netbox/views/misc.py @@ -8,6 +8,7 @@ from django.core.cache import cache from django.shortcuts import redirect, render from django.utils.translation import gettext_lazy as _ from django.views.generic import View +from django.views.static import serve from django_tables2 import RequestConfig from packaging import version @@ -23,6 +24,7 @@ from utilities.views import ConditionalLoginRequiredMixin __all__ = ( 'HomeView', + 'MediaView', 'SearchView', ) @@ -115,3 +117,11 @@ class SearchView(ConditionalLoginRequiredMixin, View): 'form': form, 'table': table, }) + + +class MediaView(ConditionalLoginRequiredMixin, View): + """ + Wrap Django's serve() view to enforce LOGIN_REQUIRED for static media. + """ + def get(self, request, path): + return serve(request, path, document_root=settings.MEDIA_ROOT) From 2ed0534117af7247ca56ee43c6175f79a5ca6f41 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 12 Nov 2024 13:58:48 -0500 Subject: [PATCH 11/32] Fixes #17963: Fix selection of all listed objects during bulk edit --- netbox/netbox/views/generic/bulk_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index 4b2f1ae28..7158f056a 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -698,7 +698,7 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView): logger.debug("Form validation failed") else: - form = self.form(request.POST, initial=initial_data) + form = self.form(initial=initial_data) restrict_form_fields(form, request.user) # Retrieve objects being edited From c34fea6c9bb89e543139b93ed75ff55567bdd553 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 12 Nov 2024 12:11:44 -0500 Subject: [PATCH 12/32] Fixes #17969: Fix system info export when a config revision exists --- netbox/core/tests/test_views.py | 29 +++++++++++++++++++++++++++++ netbox/core/views.py | 6 +----- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/netbox/core/tests/test_views.py b/netbox/core/tests/test_views.py index 01912b4d6..047b51ef6 100644 --- a/netbox/core/tests/test_views.py +++ b/netbox/core/tests/test_views.py @@ -346,3 +346,32 @@ class BackgroundTaskTestCase(TestCase): self.assertIn(str(worker1.name), str(response.content)) self.assertIn('Birth', str(response.content)) self.assertIn('Total working time', str(response.content)) + + +class SystemTestCase(TestCase): + + def setUp(self): + super().setUp() + + self.user.is_staff = True + self.user.save() + + def test_system_view_default(self): + # Test UI render + response = self.client.get(reverse('core:system')) + self.assertEqual(response.status_code, 200) + + # Test export + response = self.client.get(f"{reverse('core:system')}?export=true") + self.assertEqual(response.status_code, 200) + + def test_system_view_with_config_revision(self): + ConfigRevision.objects.create() + + # Test UI render + response = self.client.get(reverse('core:system')) + self.assertEqual(response.status_code, 200) + + # Test export + response = self.client.get(f"{reverse('core:system')}?export=true") + self.assertEqual(response.status_code, 200) diff --git a/netbox/core/views.py b/netbox/core/views.py index 3c5319626..ecbf11e32 100644 --- a/netbox/core/views.py +++ b/netbox/core/views.py @@ -626,11 +626,7 @@ class SystemView(UserPassesTestMixin, View): } # Configuration - try: - config = ConfigRevision.objects.get(pk=cache.get('config_version')) - except ConfigRevision.DoesNotExist: - # Fall back to using the active config data if no record is found - config = get_config() + config = get_config() # Raw data export if 'export' in request.GET: From 9c532c7d896e5c3ce248ffff74c9236025d00d86 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 12 Nov 2024 14:53:57 -0500 Subject: [PATCH 13/32] Fixes #17986: Correct label for disk size when bulk editing virtual machines (#17992) * Fixes #17986: Correct label for disk size when bulk editing virtual machines * Correct label for VirtualDisk.size --- netbox/virtualization/forms/bulk_edit.py | 4 ++-- netbox/virtualization/forms/filtersets.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/netbox/virtualization/forms/bulk_edit.py b/netbox/virtualization/forms/bulk_edit.py index 2bd3434ac..771edb09f 100644 --- a/netbox/virtualization/forms/bulk_edit.py +++ b/netbox/virtualization/forms/bulk_edit.py @@ -171,7 +171,7 @@ class VirtualMachineBulkEditForm(NetBoxModelBulkEditForm): ) disk = forms.IntegerField( required=False, - label=_('Disk (GB)') + label=_('Disk (MB)') ) description = forms.CharField( label=_('Description'), @@ -331,7 +331,7 @@ class VirtualDiskBulkEditForm(NetBoxModelBulkEditForm): ) size = forms.IntegerField( required=False, - label=_('Size (GB)') + label=_('Size (MB)') ) description = forms.CharField( label=_('Description'), diff --git a/netbox/virtualization/forms/filtersets.py b/netbox/virtualization/forms/filtersets.py index 7c040d948..9d5ca019a 100644 --- a/netbox/virtualization/forms/filtersets.py +++ b/netbox/virtualization/forms/filtersets.py @@ -248,7 +248,7 @@ class VirtualDiskFilterForm(NetBoxModelFilterSetForm): label=_('Virtual machine') ) size = forms.IntegerField( - label=_('Size (GB)'), + label=_('Size (MB)'), required=False, min_value=1 ) From 256d69d08bf97fc723d2798acbe22e199a7291a0 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 12 Nov 2024 15:56:29 -0500 Subject: [PATCH 14/32] Update changelog --- docs/release-notes/version-4.1.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/release-notes/version-4.1.md b/docs/release-notes/version-4.1.md index 7b4e18919..b94374721 100644 --- a/docs/release-notes/version-4.1.md +++ b/docs/release-notes/version-4.1.md @@ -1,5 +1,22 @@ # NetBox v4.1 +## v4.1.7 (FUTURE) + +### Enhancements + +* [#15239](https://github.com/netbox-community/netbox/issues/15239) - Enable adding/removing individual VLANs while bulk editing device interfaces +* [#17871](https://github.com/netbox-community/netbox/issues/17871) - Enable the assignment/removal of virtualization cluster via device bulk edit + +### Bug Fixes + +* [#17901](https://github.com/netbox-community/netbox/issues/17901) - Ensure GraphiQL UI resources are served locally +* [#17963](https://github.com/netbox-community/netbox/issues/17963) - Fix selection of all listed objects during bulk edit +* [#17969](https://github.com/netbox-community/netbox/issues/17969) - Fix system info export when a config revision exists +* [#17972](https://github.com/netbox-community/netbox/issues/17972) - Force evaluation of `LOGIN_REQUIRED` when requesting static media +* [#17986](https://github.com/netbox-community/netbox/issues/17986) - Correct labels for virtual machine & virtual disk size properties + +--- + ## v4.1.6 (2024-10-31) ### Bug Fixes From 05daa16aedab1142b56d1bbfc6d524199868aa86 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 05:02:11 +0000 Subject: [PATCH 15/32] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index 01e151c84..1d35fb8b2 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-08 05:01+0000\n" +"POT-Creation-Date: 2024-11-13 05:01+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2452,11 +2452,11 @@ msgstr "" msgid "Failed to stop job {id}" msgstr "" -#: netbox/core/views.py:678 +#: netbox/core/views.py:674 msgid "Plugins catalog could not be loaded" msgstr "" -#: netbox/core/views.py:712 +#: netbox/core/views.py:708 #, python-brace-format msgid "Plugin {name} not found" msgstr "" @@ -11141,7 +11141,7 @@ msgstr "" msgid "{class_name} must implement get_children()" msgstr "" -#: netbox/netbox/views/misc.py:44 +#: netbox/netbox/views/misc.py:46 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -14848,12 +14848,12 @@ msgid "Memory (MB)" msgstr "" #: netbox/virtualization/forms/bulk_edit.py:174 -msgid "Disk (GB)" +msgid "Disk (MB)" msgstr "" #: netbox/virtualization/forms/bulk_edit.py:334 #: netbox/virtualization/forms/filtersets.py:251 -msgid "Size (GB)" +msgid "Size (MB)" msgstr "" #: netbox/virtualization/forms/bulk_import.py:44 From 0ff0edd4772fdd835b9cc63e2339d6ef48869b7a Mon Sep 17 00:00:00 2001 From: "Joel L. McGuire" Date: Wed, 13 Nov 2024 14:39:37 -0600 Subject: [PATCH 16/32] fix typo in #17970 --- docs/models/vpn/ikepolicy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/models/vpn/ikepolicy.md b/docs/models/vpn/ikepolicy.md index d2da28d16..b78b0fe50 100644 --- a/docs/models/vpn/ikepolicy.md +++ b/docs/models/vpn/ikepolicy.md @@ -1,6 +1,6 @@ # IKE Policies -An [Internet Key Exhcnage (IKE)](https://en.wikipedia.org/wiki/Internet_Key_Exchange) policy defines an IKE version, mode, and set of [proposals](./ikeproposal.md) to be used in IKE negotiation. These policies are referenced by [IPSec profiles](./ipsecprofile.md). +An [Internet Key Exchange (IKE)](https://en.wikipedia.org/wiki/Internet_Key_Exchange) policy defines an IKE version, mode, and set of [proposals](./ikeproposal.md) to be used in IKE negotiation. These policies are referenced by [IPSec profiles](./ipsecprofile.md). ## Fields From b4f15092dbb849ee85fd2dd8caf988ea4bd7eadb Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 18 Nov 2024 14:44:57 -0500 Subject: [PATCH 17/32] Closes #5858: Implement a quick-add UI widget for related objects (#18016) * WIP * Misc cleanup * Add warning re: nested quick-adds --- netbox/circuits/forms/model_forms.py | 14 +++-- netbox/dcim/forms/model_forms.py | 21 +++++--- netbox/ipam/forms/model_forms.py | 14 +++-- netbox/netbox/views/generic/object_views.py | 41 +++++++++++---- netbox/project-static/dist/netbox.js | Bin 390388 -> 390918 bytes netbox/project-static/dist/netbox.js.map | Bin 527142 -> 527957 bytes netbox/project-static/src/buttons/reslug.ts | 48 +++++++++--------- netbox/project-static/src/htmx.ts | 11 ++-- netbox/project-static/src/quickAdd.ts | 39 ++++++++++++++ netbox/templates/htmx/quick_add.html | 28 ++++++++++ netbox/templates/htmx/quick_add_created.html | 22 ++++++++ netbox/tenancy/forms/forms.py | 1 + netbox/utilities/forms/fields/dynamic.py | 12 ++++- .../templates/widgets/apiselect.html | 27 +++++++--- netbox/virtualization/forms/model_forms.py | 6 ++- netbox/vpn/forms/model_forms.py | 9 ++-- netbox/wireless/forms/model_forms.py | 3 +- 17 files changed, 228 insertions(+), 68 deletions(-) create mode 100644 netbox/project-static/src/quickAdd.ts create mode 100644 netbox/templates/htmx/quick_add.html create mode 100644 netbox/templates/htmx/quick_add_created.html diff --git a/netbox/circuits/forms/model_forms.py b/netbox/circuits/forms/model_forms.py index 10cd06563..9eeb0f588 100644 --- a/netbox/circuits/forms/model_forms.py +++ b/netbox/circuits/forms/model_forms.py @@ -50,7 +50,9 @@ class ProviderForm(NetBoxModelForm): class ProviderAccountForm(NetBoxModelForm): provider = DynamicModelChoiceField( label=_('Provider'), - queryset=Provider.objects.all() + queryset=Provider.objects.all(), + selector=True, + quick_add=True ) comments = CommentField() @@ -64,7 +66,9 @@ class ProviderAccountForm(NetBoxModelForm): class ProviderNetworkForm(NetBoxModelForm): provider = DynamicModelChoiceField( label=_('Provider'), - queryset=Provider.objects.all() + queryset=Provider.objects.all(), + selector=True, + quick_add=True ) comments = CommentField() @@ -97,7 +101,8 @@ class CircuitForm(TenancyForm, NetBoxModelForm): provider = DynamicModelChoiceField( label=_('Provider'), queryset=Provider.objects.all(), - selector=True + selector=True, + quick_add=True ) provider_account = DynamicModelChoiceField( label=_('Provider account'), @@ -108,7 +113,8 @@ class CircuitForm(TenancyForm, NetBoxModelForm): } ) type = DynamicModelChoiceField( - queryset=CircuitType.objects.all() + queryset=CircuitType.objects.all(), + quick_add=True ) comments = CommentField() diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index 2fcdbe5fd..b004798af 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -112,12 +112,14 @@ class SiteForm(TenancyForm, NetBoxModelForm): region = DynamicModelChoiceField( label=_('Region'), queryset=Region.objects.all(), - required=False + required=False, + quick_add=True ) group = DynamicModelChoiceField( label=_('Group'), queryset=SiteGroup.objects.all(), - required=False + required=False, + quick_add=True ) asns = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), @@ -206,7 +208,8 @@ class RackRoleForm(NetBoxModelForm): class RackTypeForm(NetBoxModelForm): manufacturer = DynamicModelChoiceField( label=_('Manufacturer'), - queryset=Manufacturer.objects.all() + queryset=Manufacturer.objects.all(), + quick_add=True ) comments = CommentField() slug = SlugField( @@ -348,7 +351,8 @@ class ManufacturerForm(NetBoxModelForm): class DeviceTypeForm(NetBoxModelForm): manufacturer = DynamicModelChoiceField( label=_('Manufacturer'), - queryset=Manufacturer.objects.all() + queryset=Manufacturer.objects.all(), + quick_add=True ) default_platform = DynamicModelChoiceField( label=_('Default platform'), @@ -436,7 +440,8 @@ class PlatformForm(NetBoxModelForm): manufacturer = DynamicModelChoiceField( label=_('Manufacturer'), queryset=Manufacturer.objects.all(), - required=False + required=False, + quick_add=True ) config_template = DynamicModelChoiceField( label=_('Config template'), @@ -508,7 +513,8 @@ class DeviceForm(TenancyForm, NetBoxModelForm): ) role = DynamicModelChoiceField( label=_('Device role'), - queryset=DeviceRole.objects.all() + queryset=DeviceRole.objects.all(), + quick_add=True ) platform = DynamicModelChoiceField( label=_('Platform'), @@ -750,7 +756,8 @@ class PowerFeedForm(TenancyForm, NetBoxModelForm): power_panel = DynamicModelChoiceField( label=_('Power panel'), queryset=PowerPanel.objects.all(), - selector=True + selector=True, + quick_add=True ) rack = DynamicModelChoiceField( label=_('Rack'), diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index 56a6dc3d9..53ffe8f3f 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -109,7 +109,8 @@ class RIRForm(NetBoxModelForm): class AggregateForm(TenancyForm, NetBoxModelForm): rir = DynamicModelChoiceField( queryset=RIR.objects.all(), - label=_('RIR') + label=_('RIR'), + quick_add=True ) comments = CommentField() @@ -132,6 +133,7 @@ class ASNRangeForm(TenancyForm, NetBoxModelForm): rir = DynamicModelChoiceField( queryset=RIR.objects.all(), label=_('RIR'), + quick_add=True ) slug = SlugField() fieldsets = ( @@ -150,6 +152,7 @@ class ASNForm(TenancyForm, NetBoxModelForm): rir = DynamicModelChoiceField( queryset=RIR.objects.all(), label=_('RIR'), + quick_add=True ) sites = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -216,7 +219,8 @@ class PrefixForm(TenancyForm, ScopedForm, NetBoxModelForm): role = DynamicModelChoiceField( label=_('Role'), queryset=Role.objects.all(), - required=False + required=False, + quick_add=True ) comments = CommentField() @@ -246,7 +250,8 @@ class IPRangeForm(TenancyForm, NetBoxModelForm): role = DynamicModelChoiceField( label=_('Role'), queryset=Role.objects.all(), - required=False + required=False, + quick_add=True ) comments = CommentField() @@ -639,7 +644,8 @@ class VLANForm(TenancyForm, NetBoxModelForm): role = DynamicModelChoiceField( label=_('Role'), queryset=Role.objects.all(), - required=False + required=False, + quick_add=True ) qinq_svlan = DynamicModelChoiceField( label=_('Q-in-Q SVLAN'), diff --git a/netbox/netbox/views/generic/object_views.py b/netbox/netbox/views/generic/object_views.py index 0686e52b7..fb554ca4f 100644 --- a/netbox/netbox/views/generic/object_views.py +++ b/netbox/netbox/views/generic/object_views.py @@ -233,18 +233,23 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView): form = self.form(instance=obj, initial=initial_data) restrict_form_fields(form, request.user) - # If this is an HTMX request, return only the rendered form HTML - if htmx_partial(request): - return render(request, self.htmx_template_name, { - 'model': model, - 'object': obj, - 'form': form, - }) - - return render(request, self.template_name, { + context = { 'model': model, 'object': obj, 'form': form, + } + + # If the form is being displayed within a "quick add" widget, + # use the appropriate template + if request.GET.get('_quickadd'): + return render(request, 'htmx/quick_add.html', context) + + # If this is an HTMX request, return only the rendered form HTML + if htmx_partial(request): + return render(request, self.htmx_template_name, context) + + return render(request, self.template_name, { + **context, 'return_url': self.get_return_url(request, obj), 'prerequisite_model': get_prerequisite_model(self.queryset), **self.get_extra_context(request, obj), @@ -259,6 +264,7 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView): """ logger = logging.getLogger('netbox.views.ObjectEditView') obj = self.get_object(**kwargs) + model = self.queryset.model # Take a snapshot for change logging (if editing an existing object) if obj.pk and hasattr(obj, 'snapshot'): @@ -292,6 +298,12 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView): msg = f'{msg} {obj}' messages.success(request, msg) + # Object was created via "quick add" modal + if '_quickadd' in request.POST: + return render(request, 'htmx/quick_add_created.html', { + 'object': obj, + }) + # If adding another object, redirect back to the edit form if '_addanother' in request.POST: redirect_url = request.path @@ -324,12 +336,19 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView): else: logger.debug("Form validation failed") - return render(request, self.template_name, { + context = { + 'model': model, 'object': obj, 'form': form, 'return_url': self.get_return_url(request, obj), **self.get_extra_context(request, obj), - }) + } + + # Form was submitted via a "quick add" widget + if '_quickadd' in request.POST: + return render(request, 'htmx/quick_add.html', context) + + return render(request, self.template_name, context) class ObjectDeleteView(GetReturnURLMixin, BaseObjectView): diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 969d5c73a704424190120ac1a6c96af13085b025..5e24ee6250e4ad778886c374c7ca972faf2e3ce6 100644 GIT binary patch delta 9318 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 diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index 0f4ac63d3d6199f281667fc18788c7e456278a22..a05e8edb51d286b535fab2371e7b9ad18b49d4b0 100644 GIT binary patch delta 1286 zcmZWpJ#W)s5LSw*jTrb+DX0ulr3}zlR2@J9!Ek=#q-ij&6@_4glsd7Sx^E9>&(c>DM!yUQGD~Q@^N4T)TA&0no<-27IfhQ_`(1v3JLPHAxZ!y z=d1!%)I=G>Ivq=#v@rmtsDKRhNwJfsin3@Tv#0`8ky0))Pf1dl%di3AUZ!w0##Mz& z6?|iyL2S+C6sHAX88oL&H#!+%p34HA>&6^48W}md`4XXBycvx=i74PS@$sIrlqtj) zhRTe(N(FW$UKlFb%xe5-sNA?*q*#>S_gO?HPRmtf+Gu)s*0l9)Lb)Iwm3f&BzHvGbaV$bal? z^3JO9!J0C=!c+Oly0Ak(WxJEM?7t4he@4Rw@#7hFae!O5pt!9Ad1NJ9=2fF?B*$Qh zXyuB)x2z&b>r=D@=wu|j8ly08FJlxclnN8ecweZL3{5<9032djV&Ma{414(G@@7hl z&2O10sJcL;E@AqTSY?4RCYex1ps`M9TqPLRWOF;bxhSaOR}Lx;olApOwwx4V?W#|w@L2vG)GX?(ktaEW(*0i}eI8x8YZ#3<`c2XLDIHz47ebuza F)E}CVZ*>3w delta 593 zcmYjNO-lk%6h)nKC>NEq5DG+a_dp_|O%ZqAjFZYVO(tTrF@4C8jN+)ZF+nF>w{bQt zBeyMrS@#2?RkZ2{v})b1_ugc>xR=ZQIOp8+ejk4v$DeA+VJ|uAB?B~qG(ui4DZHEq zTJFI>c<5&UG>lY$63PSQ5dk26r2yW=d{mwr82|>NBTHsS85!jODoCSU%t}HN?qZ~a zl1Bg7#WY(kpfW(&PZS}ARiyUW^^BO}XflQ89H7uj+3|@udQD;+8p43DCB&t$3uI#e z8#7r=nQFmlx}m^~-;}a*0*U}dw%d|($bB0Mc=OPo8h|grFDb0SZw%c{IYK;;b&nlk zV~vX`@PDV{8%Ib4ad$Lv1R4w8#992j>u*cI|5BKWD~U-?amhvgi9s9i=Pvh{_)hcO zkftr_M2Sh=QjeIf9Q*5(CQawyIs-SS;M_)2;vM%g7G4jWd4pJZ|2djANxhmt@q}IP z)TB('button#reslug')) { + const form = slugButton.form; + if (form == null) continue; + const slugField = form.querySelector('#id_slug') as HTMLInputElement; + if (slugField == null) continue; + const sourceId = slugField.getAttribute('slug-source'); + const sourceField = form.querySelector(`#id_${sourceId}`) as HTMLInputElement; - if (sourceField === null) { - console.error('Unable to find field for slug field.'); - return; - } + const slugLengthAttr = slugField.getAttribute('maxlength'); + let slugLength = 50; - const slugLengthAttr = slugField.getAttribute('maxlength'); - let slugLength = 50; - - if (slugLengthAttr) { - slugLength = Number(slugLengthAttr); - } - sourceField.addEventListener('blur', () => { - if (!slugField.value) { - slugField.value = slugify(sourceField.value, slugLength); + if (slugLengthAttr) { + slugLength = Number(slugLengthAttr); } - }); - slugButton.addEventListener('click', () => { - slugField.value = slugify(sourceField.value, slugLength); - }); + sourceField.addEventListener('blur', () => { + if (!slugField.value) { + slugField.value = slugify(sourceField.value, slugLength); + } + }); + slugButton.addEventListener('click', () => { + slugField.value = slugify(sourceField.value, slugLength); + }); + } } diff --git a/netbox/project-static/src/htmx.ts b/netbox/project-static/src/htmx.ts index f4092036b..6a772011b 100644 --- a/netbox/project-static/src/htmx.ts +++ b/netbox/project-static/src/htmx.ts @@ -4,11 +4,16 @@ import { initSelects } from './select'; import { initObjectSelector } from './objectSelector'; import { initBootstrap } from './bs'; import { initMessages } from './messages'; +import { initQuickAdd } from './quickAdd'; function initDepedencies(): void { - for (const init of [initButtons, initClipboard, initSelects, initObjectSelector, initBootstrap, initMessages]) { - init(); - } + initButtons(); + initClipboard(); + initSelects(); + initObjectSelector(); + initQuickAdd(); + initBootstrap(); + initMessages(); } /** diff --git a/netbox/project-static/src/quickAdd.ts b/netbox/project-static/src/quickAdd.ts new file mode 100644 index 000000000..e038f5d19 --- /dev/null +++ b/netbox/project-static/src/quickAdd.ts @@ -0,0 +1,39 @@ +import { Modal } from 'bootstrap'; + +function handleQuickAddObject(): void { + const quick_add = document.getElementById('quick-add-object'); + if (quick_add == null) return; + + const object_id = quick_add.getAttribute('data-object-id'); + if (object_id == null) return; + const object_repr = quick_add.getAttribute('data-object-repr'); + if (object_repr == null) return; + + const target_id = quick_add.getAttribute('data-target-id'); + if (target_id == null) return; + const target = document.getElementById(target_id); + if (target == null) return; + + //@ts-expect-error tomselect added on init + target.tomselect.addOption({ + id: object_id, + display: object_repr, + }); + //@ts-expect-error tomselect added on init + target.tomselect.addItem(object_id); + + const modal_element = document.getElementById('htmx-modal'); + if (modal_element) { + const modal = Modal.getInstance(modal_element); + if (modal) { + modal.hide(); + } + } +} + +export function initQuickAdd(): void { + const quick_add_modal = document.getElementById('htmx-modal-content'); + if (quick_add_modal) { + quick_add_modal.addEventListener('htmx:afterSwap', () => handleQuickAddObject()); + } +} diff --git a/netbox/templates/htmx/quick_add.html b/netbox/templates/htmx/quick_add.html new file mode 100644 index 000000000..9473e14a1 --- /dev/null +++ b/netbox/templates/htmx/quick_add.html @@ -0,0 +1,28 @@ +{% load form_helpers %} +{% load helpers %} +{% load i18n %} + +

+ diff --git a/netbox/templates/htmx/quick_add_created.html b/netbox/templates/htmx/quick_add_created.html new file mode 100644 index 000000000..3b1a24c48 --- /dev/null +++ b/netbox/templates/htmx/quick_add_created.html @@ -0,0 +1,22 @@ +{% load form_helpers %} +{% load helpers %} +{% load i18n %} + + + diff --git a/netbox/tenancy/forms/forms.py b/netbox/tenancy/forms/forms.py index 114253e7a..0edb36348 100644 --- a/netbox/tenancy/forms/forms.py +++ b/netbox/tenancy/forms/forms.py @@ -25,6 +25,7 @@ class TenancyForm(forms.Form): label=_('Tenant'), queryset=Tenant.objects.all(), required=False, + quick_add=True, query_params={ 'group_id': '$tenant_group' } diff --git a/netbox/utilities/forms/fields/dynamic.py b/netbox/utilities/forms/fields/dynamic.py index 6666c0e4d..13d5ffc70 100644 --- a/netbox/utilities/forms/fields/dynamic.py +++ b/netbox/utilities/forms/fields/dynamic.py @@ -2,7 +2,7 @@ import django_filters from django import forms from django.conf import settings from django.forms import BoundField -from django.urls import reverse +from django.urls import reverse, reverse_lazy from utilities.forms import widgets from utilities.views import get_viewname @@ -66,6 +66,8 @@ class DynamicModelChoiceMixin: choice (DEPRECATED: pass `context={'disabled': '$fieldname'}` instead) context: A mapping of