mirror of
https://github.com/netbox-community/netbox.git
synced 2026-03-03 04:50:06 +01:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a404f5c0f | ||
|
|
3320e07b70 |
44
.github/workflows/claude-code-review.yml
vendored
44
.github/workflows/claude-code-review.yml
vendored
@@ -1,44 +0,0 @@
|
|||||||
name: Claude Code Review
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types: [opened, synchronize, ready_for_review, reopened]
|
|
||||||
# Optional: Only run on specific file changes
|
|
||||||
# paths:
|
|
||||||
# - "src/**/*.ts"
|
|
||||||
# - "src/**/*.tsx"
|
|
||||||
# - "src/**/*.js"
|
|
||||||
# - "src/**/*.jsx"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
claude-review:
|
|
||||||
# Optional: Filter by PR author
|
|
||||||
# if: |
|
|
||||||
# github.event.pull_request.user.login == 'external-contributor' ||
|
|
||||||
# github.event.pull_request.user.login == 'new-developer' ||
|
|
||||||
# github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pull-requests: read
|
|
||||||
issues: read
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Run Claude Code Review
|
|
||||||
id: claude-review
|
|
||||||
uses: anthropics/claude-code-action@v1
|
|
||||||
with:
|
|
||||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
||||||
plugin_marketplaces: 'https://github.com/anthropics/claude-code.git'
|
|
||||||
plugins: 'code-review@claude-code-plugins'
|
|
||||||
prompt: '/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}'
|
|
||||||
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
|
|
||||||
# or https://code.claude.com/docs/en/cli-reference for available options
|
|
||||||
|
|
||||||
50
.github/workflows/claude.yml
vendored
50
.github/workflows/claude.yml
vendored
@@ -1,50 +0,0 @@
|
|||||||
name: Claude Code
|
|
||||||
|
|
||||||
on:
|
|
||||||
issue_comment:
|
|
||||||
types: [created]
|
|
||||||
pull_request_review_comment:
|
|
||||||
types: [created]
|
|
||||||
issues:
|
|
||||||
types: [opened, assigned]
|
|
||||||
pull_request_review:
|
|
||||||
types: [submitted]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
claude:
|
|
||||||
if: |
|
|
||||||
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
||||||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
||||||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
|
|
||||||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pull-requests: read
|
|
||||||
issues: read
|
|
||||||
id-token: write
|
|
||||||
actions: read # Required for Claude to read CI results on PRs
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Run Claude Code
|
|
||||||
id: claude
|
|
||||||
uses: anthropics/claude-code-action@v1
|
|
||||||
with:
|
|
||||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
||||||
|
|
||||||
# This is an optional setting that allows Claude to read CI results on PRs
|
|
||||||
additional_permissions: |
|
|
||||||
actions: read
|
|
||||||
|
|
||||||
# Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
|
|
||||||
# prompt: 'Update the pull request description to include a summary of changes.'
|
|
||||||
|
|
||||||
# Optional: Add claude_args to customize behavior and configuration
|
|
||||||
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
|
|
||||||
# or https://code.claude.com/docs/en/cli-reference for available options
|
|
||||||
# claude_args: '--allowed-tools Bash(gh pr:*)'
|
|
||||||
|
|
||||||
@@ -31,6 +31,11 @@ The following data is available as context for Jinja2 templates:
|
|||||||
* `data` - A detailed representation of the object in its current state. This is typically equivalent to the model's representation in NetBox's REST API.
|
* `data` - A detailed representation of the object in its current state. This is typically equivalent to the model's representation in NetBox's REST API.
|
||||||
* `snapshots` - Minimal "snapshots" of the object state both before and after the change was made; provided as a dictionary with keys named `prechange` and `postchange`. These are not as extensive as the fully serialized representation, but contain enough information to convey what has changed.
|
* `snapshots` - Minimal "snapshots" of the object state both before and after the change was made; provided as a dictionary with keys named `prechange` and `postchange`. These are not as extensive as the fully serialized representation, but contain enough information to convey what has changed.
|
||||||
|
|
||||||
|
!!! warning "Deprecation of legacy fields"
|
||||||
|
The "request_id" and "username" fields in the webhook payload above are deprecated and should no longer be used. Support for them will be removed in NetBox v4.7.0.
|
||||||
|
|
||||||
|
Use `request.user.username` and `request.request_id` from the `request` object included in the callback context instead.
|
||||||
|
|
||||||
### Default Request Body
|
### Default Request Body
|
||||||
|
|
||||||
If no body template is specified, the request body will be populated with a JSON object containing the context data. For example, a newly created site might appear as follows:
|
If no body template is specified, the request body will be populated with a JSON object containing the context data. For example, a newly created site might appear as follows:
|
||||||
|
|||||||
@@ -88,3 +88,8 @@ The following context variables are available in to the text and link templates.
|
|||||||
| `request_id` | The unique request ID |
|
| `request_id` | The unique request ID |
|
||||||
| `data` | A complete serialized representation of the object |
|
| `data` | A complete serialized representation of the object |
|
||||||
| `snapshots` | Pre- and post-change snapshots of the object |
|
| `snapshots` | Pre- and post-change snapshots of the object |
|
||||||
|
|
||||||
|
!!! warning "Deprecation of legacy fields"
|
||||||
|
The "request_id" and "username" fields in the webhook payload above are deprecated and should no longer be used. Support for them will be removed in NetBox v4.7.0.
|
||||||
|
|
||||||
|
Use `request.user.username` and `request.request_id` from the `request` object included in the callback context instead.
|
||||||
|
|||||||
@@ -43,6 +43,11 @@ The resulting webhook payload will look like the following:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
!!! warning "Deprecation of legacy fields"
|
||||||
|
The "request_id" and "username" fields in the webhook payload above are deprecated and should no longer be used. Support for them will be removed in NetBox v4.7.0.
|
||||||
|
|
||||||
|
Use `request.user.username` and `request.request_id` from the `request` object included in the callback context instead.
|
||||||
|
|
||||||
!!! note "Consider namespacing webhook data"
|
!!! note "Consider namespacing webhook data"
|
||||||
The data returned from all webhook callbacks will be compiled into a single `context` dictionary. Any existing keys within this dictionary will be overwritten by subsequent callbacks which include those keys. To avoid collisions with webhook data provided by other plugins, consider namespacing your plugin's data within a nested dictionary as such:
|
The data returned from all webhook callbacks will be compiled into a single `context` dictionary. Any existing keys within this dictionary will be overwritten by subsequent callbacks which include those keys. To avoid collisions with webhook data provided by other plugins, consider namespacing your plugin's data within a nested dictionary as such:
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import re
|
|||||||
import typing
|
import typing
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
from drf_spectacular.contrib.django_filters import DjangoFilterExtension
|
|
||||||
from drf_spectacular.extensions import OpenApiSerializerExtension, OpenApiSerializerFieldExtension, _SchemaType
|
from drf_spectacular.extensions import OpenApiSerializerExtension, OpenApiSerializerFieldExtension, _SchemaType
|
||||||
from drf_spectacular.openapi import AutoSchema
|
from drf_spectacular.openapi import AutoSchema
|
||||||
from drf_spectacular.plumbing import (
|
from drf_spectacular.plumbing import (
|
||||||
@@ -10,7 +9,6 @@ from drf_spectacular.plumbing import (
|
|||||||
build_choice_field,
|
build_choice_field,
|
||||||
build_media_type_object,
|
build_media_type_object,
|
||||||
build_object_type,
|
build_object_type,
|
||||||
follow_field_source,
|
|
||||||
get_doc,
|
get_doc,
|
||||||
)
|
)
|
||||||
from drf_spectacular.types import OpenApiTypes
|
from drf_spectacular.types import OpenApiTypes
|
||||||
@@ -25,29 +23,6 @@ BULK_ACTIONS = ("bulk_destroy", "bulk_partial_update", "bulk_update")
|
|||||||
WRITABLE_ACTIONS = ("PATCH", "POST", "PUT")
|
WRITABLE_ACTIONS = ("PATCH", "POST", "PUT")
|
||||||
|
|
||||||
|
|
||||||
class NetBoxDjangoFilterExtension(DjangoFilterExtension):
|
|
||||||
"""
|
|
||||||
Overrides drf-spectacular's DjangoFilterExtension to fix a regression in v0.29.0 where
|
|
||||||
_get_model_field() incorrectly double-appends to_field_name when field_name already ends
|
|
||||||
with that value (e.g. field_name='tags__slug', to_field_name='slug' produces the invalid
|
|
||||||
path ['tags', 'slug', 'slug']). This caused hundreds of spurious warnings during schema
|
|
||||||
generation for filters such as TagFilter, TenancyFilterSet.tenant, and OwnerFilterMixin.owner.
|
|
||||||
|
|
||||||
See: https://github.com/netbox-community/netbox/issues/20787
|
|
||||||
https://github.com/tfranzel/drf-spectacular/issues/1475
|
|
||||||
"""
|
|
||||||
priority = 1
|
|
||||||
|
|
||||||
def _get_model_field(self, filter_field, model):
|
|
||||||
if not filter_field.field_name:
|
|
||||||
return None
|
|
||||||
path = filter_field.field_name.split('__')
|
|
||||||
to_field_name = filter_field.extra.get('to_field_name')
|
|
||||||
if to_field_name is not None and path[-1] != to_field_name:
|
|
||||||
path.append(to_field_name)
|
|
||||||
return follow_field_source(model, path, emit_warnings=False)
|
|
||||||
|
|
||||||
|
|
||||||
class FixTimeZoneSerializerField(OpenApiSerializerFieldExtension):
|
class FixTimeZoneSerializerField(OpenApiSerializerFieldExtension):
|
||||||
target_class = 'timezone_field.rest_framework.TimeZoneSerializerField'
|
target_class = 'timezone_field.rest_framework.TimeZoneSerializerField'
|
||||||
|
|
||||||
|
|||||||
@@ -921,7 +921,6 @@ class InterfaceTypeChoices(ChoiceSet):
|
|||||||
# 10 Gbps Ethernet
|
# 10 Gbps Ethernet
|
||||||
TYPE_10GE_BR_D = '10gbase-br-d'
|
TYPE_10GE_BR_D = '10gbase-br-d'
|
||||||
TYPE_10GE_BR_U = '10gbase-br-u'
|
TYPE_10GE_BR_U = '10gbase-br-u'
|
||||||
TYPE_10GE_CU = '10gbase-cu'
|
|
||||||
TYPE_10GE_CX4 = '10gbase-cx4'
|
TYPE_10GE_CX4 = '10gbase-cx4'
|
||||||
TYPE_10GE_ER = '10gbase-er'
|
TYPE_10GE_ER = '10gbase-er'
|
||||||
TYPE_10GE_LR = '10gbase-lr'
|
TYPE_10GE_LR = '10gbase-lr'
|
||||||
@@ -944,7 +943,6 @@ class InterfaceTypeChoices(ChoiceSet):
|
|||||||
TYPE_40GE_FR4 = '40gbase-fr4'
|
TYPE_40GE_FR4 = '40gbase-fr4'
|
||||||
TYPE_40GE_LR4 = '40gbase-lr4'
|
TYPE_40GE_LR4 = '40gbase-lr4'
|
||||||
TYPE_40GE_SR4 = '40gbase-sr4'
|
TYPE_40GE_SR4 = '40gbase-sr4'
|
||||||
TYPE_40GE_SR4_BD = '40gbase-sr4-bd'
|
|
||||||
|
|
||||||
# 50 Gbps Ethernet
|
# 50 Gbps Ethernet
|
||||||
TYPE_50GE_CR = '50gbase-cr'
|
TYPE_50GE_CR = '50gbase-cr'
|
||||||
@@ -1194,7 +1192,6 @@ class InterfaceTypeChoices(ChoiceSet):
|
|||||||
(
|
(
|
||||||
(TYPE_10GE_BR_D, '10GBASE-BR-D (10GE BiDi Down)'),
|
(TYPE_10GE_BR_D, '10GBASE-BR-D (10GE BiDi Down)'),
|
||||||
(TYPE_10GE_BR_U, '10GBASE-BR-U (10GE BiDi Up)'),
|
(TYPE_10GE_BR_U, '10GBASE-BR-U (10GE BiDi Up)'),
|
||||||
(TYPE_10GE_CU, '10GBASE-CU (10GE DAC Passive Twinax)'),
|
|
||||||
(TYPE_10GE_CX4, '10GBASE-CX4 (10GE DAC)'),
|
(TYPE_10GE_CX4, '10GBASE-CX4 (10GE DAC)'),
|
||||||
(TYPE_10GE_ER, '10GBASE-ER (10GE)'),
|
(TYPE_10GE_ER, '10GBASE-ER (10GE)'),
|
||||||
(TYPE_10GE_LR, '10GBASE-LR (10GE)'),
|
(TYPE_10GE_LR, '10GBASE-LR (10GE)'),
|
||||||
@@ -1223,7 +1220,6 @@ class InterfaceTypeChoices(ChoiceSet):
|
|||||||
(TYPE_40GE_FR4, '40GBASE-FR4 (40GE)'),
|
(TYPE_40GE_FR4, '40GBASE-FR4 (40GE)'),
|
||||||
(TYPE_40GE_LR4, '40GBASE-LR4 (40GE)'),
|
(TYPE_40GE_LR4, '40GBASE-LR4 (40GE)'),
|
||||||
(TYPE_40GE_SR4, '40GBASE-SR4 (40GE)'),
|
(TYPE_40GE_SR4, '40GBASE-SR4 (40GE)'),
|
||||||
(TYPE_40GE_SR4_BD, '40GBASE-SR4 (40GE BiDi)'),
|
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
|
|||||||
@@ -22,19 +22,7 @@ if TYPE_CHECKING:
|
|||||||
@strawberry.type
|
@strawberry.type
|
||||||
class ConfigContextMixin:
|
class ConfigContextMixin:
|
||||||
|
|
||||||
@classmethod
|
@strawberry_django.field
|
||||||
def get_queryset(cls, queryset, info: Info, **kwargs):
|
|
||||||
queryset = super().get_queryset(queryset, info, **kwargs)
|
|
||||||
|
|
||||||
# If `config_context` is requested, call annotate_config_context_data() on the queryset
|
|
||||||
selected = {f.name for f in info.selected_fields[0].selections}
|
|
||||||
if 'config_context' in selected and hasattr(queryset, 'annotate_config_context_data'):
|
|
||||||
return queryset.annotate_config_context_data()
|
|
||||||
|
|
||||||
return queryset
|
|
||||||
|
|
||||||
# Ensure `local_context_data` is fetched when `config_context` is requested
|
|
||||||
@strawberry_django.field(only=['local_context_data'])
|
|
||||||
def config_context(self) -> strawberry.scalars.JSON:
|
def config_context(self) -> strawberry.scalars.JSON:
|
||||||
return self.get_config_context()
|
return self.get_config_context()
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<span>
|
<a href="{{ value.get_absolute_url }}"{% if name %} id="attr_{{ name }}"{% endif %}>{{ value.address.ip }}</a>
|
||||||
<a href="{{ value.get_absolute_url }}"{% if name %} id="attr_{{ name }}"{% endif %}>{{ value.address.ip }}</a>
|
{% if value.nat_inside %}
|
||||||
{% if value.nat_inside %}
|
({% trans "NAT for" %} <a href="{{ value.nat_inside.get_absolute_url }}">{{ value.nat_inside.address.ip }}</a>)
|
||||||
({% trans "NAT for" %} <a href="{{ value.nat_inside.get_absolute_url }}">{{ value.nat_inside.address.ip }}</a>)
|
{% elif value.nat_outside.exists %}
|
||||||
{% elif value.nat_outside.exists %}
|
({% trans "NAT" %}: {% for nat in value.nat_outside.all %}<a href="{{ nat.get_absolute_url }}">{{ nat.address.ip }}</a>{% if not forloop.last %}, {% endif %}{% endfor %})
|
||||||
({% trans "NAT" %}: {% for nat in value.nat_outside.all %}<a href="{{ nat.get_absolute_url }}">{{ nat.address.ip }}</a>{% if not forloop.last %}, {% endif %}{% endfor %})
|
{% endif %}
|
||||||
{% endif %}
|
|
||||||
</span>
|
|
||||||
<a class="btn btn-sm btn-primary copy-content" data-clipboard-target="#attr_{{ name }}" title="{% trans "Copy to clipboard" %}">
|
<a class="btn btn-sm btn-primary copy-content" data-clipboard-target="#attr_{{ name }}" title="{% trans "Copy to clipboard" %}">
|
||||||
<i class="mdi mdi-content-copy"></i>
|
<i class="mdi mdi-content-copy"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2026-02-28 05:11+0000\n"
|
"POT-Creation-Date: 2026-02-21 05:16+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -41,9 +41,9 @@ msgstr ""
|
|||||||
|
|
||||||
#: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20
|
#: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20
|
||||||
#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204
|
#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204
|
||||||
#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933
|
#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1929
|
||||||
#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058
|
#: netbox/dcim/choices.py:1987 netbox/dcim/choices.py:2054
|
||||||
#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20
|
#: netbox/dcim/choices.py:2076 netbox/virtualization/choices.py:20
|
||||||
#: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18
|
#: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18
|
||||||
#: netbox/vpn/choices.py:281
|
#: netbox/vpn/choices.py:281
|
||||||
msgid "Planned"
|
msgid "Planned"
|
||||||
@@ -57,8 +57,8 @@ msgstr ""
|
|||||||
#: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22
|
#: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22
|
||||||
#: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155
|
#: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155
|
||||||
#: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256
|
#: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256
|
||||||
#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057
|
#: netbox/dcim/choices.py:1986 netbox/dcim/choices.py:2053
|
||||||
#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642
|
#: netbox/dcim/choices.py:2075 netbox/extras/tables/tables.py:642
|
||||||
#: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49
|
#: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49
|
||||||
#: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154
|
#: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154
|
||||||
#: netbox/templates/extras/configcontext.html:29
|
#: netbox/templates/extras/configcontext.html:29
|
||||||
@@ -70,8 +70,8 @@ msgid "Active"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202
|
#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202
|
||||||
#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989
|
#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1985
|
||||||
#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078
|
#: netbox/dcim/choices.py:2055 netbox/dcim/choices.py:2074
|
||||||
#: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44
|
#: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -84,7 +84,7 @@ msgstr ""
|
|||||||
msgid "Decommissioned"
|
msgid "Decommissioned"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002
|
#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1998
|
||||||
#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:148
|
#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:148
|
||||||
#: netbox/tenancy/choices.py:17
|
#: netbox/tenancy/choices.py:17
|
||||||
msgid "Primary"
|
msgid "Primary"
|
||||||
@@ -1995,7 +1995,7 @@ msgstr ""
|
|||||||
#: netbox/core/choices.py:22 netbox/core/choices.py:59
|
#: netbox/core/choices.py:22 netbox/core/choices.py:59
|
||||||
#: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35
|
#: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35
|
||||||
#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259
|
#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259
|
||||||
#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082
|
#: netbox/dcim/choices.py:1988 netbox/dcim/choices.py:2078
|
||||||
#: netbox/virtualization/choices.py:48
|
#: netbox/virtualization/choices.py:48
|
||||||
msgid "Failed"
|
msgid "Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -2181,7 +2181,7 @@ msgid "User name"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47
|
#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47
|
||||||
#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040
|
#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2036
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386
|
#: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386
|
||||||
#: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712
|
#: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712
|
||||||
#: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233
|
#: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233
|
||||||
@@ -2375,7 +2375,7 @@ msgstr ""
|
|||||||
msgid "Rack Elevations"
|
msgid "Rack Elevations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911
|
#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1907
|
||||||
#: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340
|
#: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144
|
#: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144
|
||||||
#: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320
|
#: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320
|
||||||
@@ -3041,8 +3041,8 @@ msgid "Staging"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208
|
#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208
|
||||||
#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934
|
#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1930
|
||||||
#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23
|
#: netbox/dcim/choices.py:2079 netbox/virtualization/choices.py:23
|
||||||
#: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282
|
#: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282
|
||||||
msgid "Decommissioning"
|
msgid "Decommissioning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3108,7 +3108,7 @@ msgstr ""
|
|||||||
msgid "Millimeters"
|
msgid "Millimeters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956
|
#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1952
|
||||||
msgid "Inches"
|
msgid "Inches"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3186,7 +3186,7 @@ msgid "Rear"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258
|
#: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258
|
||||||
#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47
|
#: netbox/dcim/choices.py:2077 netbox/virtualization/choices.py:47
|
||||||
msgid "Staged"
|
msgid "Staged"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3219,7 +3219,7 @@ msgid "Top to bottom"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280
|
#: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280
|
||||||
#: netbox/dcim/choices.py:1566
|
#: netbox/dcim/choices.py:1562
|
||||||
msgid "Passive"
|
msgid "Passive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3248,8 +3248,8 @@ msgid "Proprietary"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853
|
#: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853
|
||||||
#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480
|
#: netbox/dcim/choices.py:1474 netbox/dcim/choices.py:1476
|
||||||
#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718
|
#: netbox/dcim/choices.py:1712 netbox/dcim/choices.py:1714
|
||||||
#: netbox/netbox/navigation/menu.py:212
|
#: netbox/netbox/navigation/menu.py:212
|
||||||
msgid "Other"
|
msgid "Other"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3262,11 +3262,11 @@ msgstr ""
|
|||||||
msgid "Physical"
|
msgid "Physical"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153
|
#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1151
|
||||||
msgid "Virtual"
|
msgid "Virtual"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355
|
#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1351
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577
|
#: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577
|
||||||
#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125
|
#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125
|
||||||
#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150
|
#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150
|
||||||
@@ -3275,11 +3275,11 @@ msgstr ""
|
|||||||
msgid "Wireless"
|
msgid "Wireless"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1151
|
#: netbox/dcim/choices.py:1149
|
||||||
msgid "Virtual interfaces"
|
msgid "Virtual interfaces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399
|
#: netbox/dcim/choices.py:1152 netbox/dcim/forms/bulk_edit.py:1399
|
||||||
#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107
|
#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107
|
||||||
#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:112
|
#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:112
|
||||||
#: netbox/virtualization/forms/bulk_edit.py:177
|
#: netbox/virtualization/forms/bulk_edit.py:177
|
||||||
@@ -3288,67 +3288,67 @@ msgstr ""
|
|||||||
msgid "Bridge"
|
msgid "Bridge"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1155
|
#: netbox/dcim/choices.py:1153
|
||||||
msgid "Link Aggregation Group (LAG)"
|
msgid "Link Aggregation Group (LAG)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1159
|
#: netbox/dcim/choices.py:1157
|
||||||
msgid "FastEthernet (100 Mbps)"
|
msgid "FastEthernet (100 Mbps)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1168
|
#: netbox/dcim/choices.py:1166
|
||||||
msgid "GigabitEthernet (1 Gbps)"
|
msgid "GigabitEthernet (1 Gbps)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1186
|
#: netbox/dcim/choices.py:1184
|
||||||
msgid "2.5/5 Gbps Ethernet"
|
msgid "2.5/5 Gbps Ethernet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1193
|
#: netbox/dcim/choices.py:1191
|
||||||
msgid "10 Gbps Ethernet"
|
msgid "10 Gbps Ethernet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1209
|
#: netbox/dcim/choices.py:1206
|
||||||
msgid "25 Gbps Ethernet"
|
msgid "25 Gbps Ethernet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1219
|
#: netbox/dcim/choices.py:1216
|
||||||
msgid "40 Gbps Ethernet"
|
msgid "40 Gbps Ethernet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1230
|
#: netbox/dcim/choices.py:1226
|
||||||
msgid "50 Gbps Ethernet"
|
msgid "50 Gbps Ethernet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1240
|
#: netbox/dcim/choices.py:1236
|
||||||
msgid "100 Gbps Ethernet"
|
msgid "100 Gbps Ethernet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1261
|
#: netbox/dcim/choices.py:1257
|
||||||
msgid "200 Gbps Ethernet"
|
msgid "200 Gbps Ethernet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1275
|
#: netbox/dcim/choices.py:1271
|
||||||
msgid "400 Gbps Ethernet"
|
msgid "400 Gbps Ethernet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1293
|
#: netbox/dcim/choices.py:1289
|
||||||
msgid "800 Gbps Ethernet"
|
msgid "800 Gbps Ethernet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1302
|
#: netbox/dcim/choices.py:1298
|
||||||
msgid "Pluggable transceivers"
|
msgid "Pluggable transceivers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1339
|
#: netbox/dcim/choices.py:1335
|
||||||
msgid "Backplane Ethernet"
|
msgid "Backplane Ethernet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1371
|
#: netbox/dcim/choices.py:1367
|
||||||
msgid "Cellular"
|
msgid "Cellular"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425
|
#: netbox/dcim/choices.py:1419 netbox/dcim/forms/filtersets.py:425
|
||||||
#: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112
|
#: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112
|
||||||
#: netbox/dcim/forms/filtersets.py:1910
|
#: netbox/dcim/forms/filtersets.py:1910
|
||||||
#: netbox/templates/dcim/inventoryitem.html:56
|
#: netbox/templates/dcim/inventoryitem.html:56
|
||||||
@@ -3356,255 +3356,255 @@ msgstr ""
|
|||||||
msgid "Serial"
|
msgid "Serial"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1438
|
#: netbox/dcim/choices.py:1434
|
||||||
msgid "Coaxial"
|
msgid "Coaxial"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1459
|
#: netbox/dcim/choices.py:1455
|
||||||
msgid "Stacking"
|
msgid "Stacking"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1511
|
#: netbox/dcim/choices.py:1507
|
||||||
msgid "Half"
|
msgid "Half"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1512
|
#: netbox/dcim/choices.py:1508
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32
|
#: netbox/dcim/choices.py:1509 netbox/netbox/preferences.py:32
|
||||||
#: netbox/wireless/choices.py:480
|
#: netbox/wireless/choices.py:480
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1525
|
#: netbox/dcim/choices.py:1521
|
||||||
msgid "Access"
|
msgid "Access"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:150
|
#: netbox/dcim/choices.py:1522 netbox/ipam/tables/vlans.py:150
|
||||||
#: netbox/ipam/tables/vlans.py:210
|
#: netbox/ipam/tables/vlans.py:210
|
||||||
#: netbox/templates/dcim/inc/interface_vlans_table.html:7
|
#: netbox/templates/dcim/inc/interface_vlans_table.html:7
|
||||||
msgid "Tagged"
|
msgid "Tagged"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1527
|
#: netbox/dcim/choices.py:1523
|
||||||
msgid "Tagged (All)"
|
msgid "Tagged (All)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26
|
#: netbox/dcim/choices.py:1524 netbox/templates/ipam/vlan_edit.html:26
|
||||||
msgid "Q-in-Q (802.1ad)"
|
msgid "Q-in-Q (802.1ad)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1557
|
#: netbox/dcim/choices.py:1553
|
||||||
msgid "IEEE Standard"
|
msgid "IEEE Standard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1568
|
#: netbox/dcim/choices.py:1564
|
||||||
msgid "Passive 24V (2-pair)"
|
msgid "Passive 24V (2-pair)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1569
|
#: netbox/dcim/choices.py:1565
|
||||||
msgid "Passive 24V (4-pair)"
|
msgid "Passive 24V (4-pair)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1570
|
#: netbox/dcim/choices.py:1566
|
||||||
msgid "Passive 48V (2-pair)"
|
msgid "Passive 48V (2-pair)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1571
|
#: netbox/dcim/choices.py:1567
|
||||||
msgid "Passive 48V (4-pair)"
|
msgid "Passive 48V (4-pair)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1644
|
#: netbox/dcim/choices.py:1640
|
||||||
msgid "Copper"
|
msgid "Copper"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1667
|
#: netbox/dcim/choices.py:1663
|
||||||
msgid "Fiber Optic"
|
msgid "Fiber Optic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917
|
#: netbox/dcim/choices.py:1699 netbox/dcim/choices.py:1913
|
||||||
msgid "USB"
|
msgid "USB"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1759
|
#: netbox/dcim/choices.py:1755
|
||||||
msgid "Single"
|
msgid "Single"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1761
|
#: netbox/dcim/choices.py:1757
|
||||||
msgid "1C1P"
|
msgid "1C1P"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1762
|
#: netbox/dcim/choices.py:1758
|
||||||
msgid "1C2P"
|
msgid "1C2P"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1763
|
#: netbox/dcim/choices.py:1759
|
||||||
msgid "1C4P"
|
msgid "1C4P"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1764
|
#: netbox/dcim/choices.py:1760
|
||||||
msgid "1C6P"
|
msgid "1C6P"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1765
|
#: netbox/dcim/choices.py:1761
|
||||||
msgid "1C8P"
|
msgid "1C8P"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1766
|
#: netbox/dcim/choices.py:1762
|
||||||
msgid "1C12P"
|
msgid "1C12P"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1767
|
#: netbox/dcim/choices.py:1763
|
||||||
msgid "1C16P"
|
msgid "1C16P"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1771
|
#: netbox/dcim/choices.py:1767
|
||||||
msgid "Trunk"
|
msgid "Trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1773
|
#: netbox/dcim/choices.py:1769
|
||||||
msgid "2C1P trunk"
|
msgid "2C1P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1774
|
#: netbox/dcim/choices.py:1770
|
||||||
msgid "2C2P trunk"
|
msgid "2C2P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1775
|
#: netbox/dcim/choices.py:1771
|
||||||
msgid "2C4P trunk"
|
msgid "2C4P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1776
|
#: netbox/dcim/choices.py:1772
|
||||||
msgid "2C4P trunk (shuffle)"
|
msgid "2C4P trunk (shuffle)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1777
|
#: netbox/dcim/choices.py:1773
|
||||||
msgid "2C6P trunk"
|
msgid "2C6P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1778
|
#: netbox/dcim/choices.py:1774
|
||||||
msgid "2C8P trunk"
|
msgid "2C8P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1779
|
#: netbox/dcim/choices.py:1775
|
||||||
msgid "2C12P trunk"
|
msgid "2C12P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1780
|
#: netbox/dcim/choices.py:1776
|
||||||
msgid "4C1P trunk"
|
msgid "4C1P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1781
|
#: netbox/dcim/choices.py:1777
|
||||||
msgid "4C2P trunk"
|
msgid "4C2P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1782
|
#: netbox/dcim/choices.py:1778
|
||||||
msgid "4C4P trunk"
|
msgid "4C4P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1783
|
#: netbox/dcim/choices.py:1779
|
||||||
msgid "4C4P trunk (shuffle)"
|
msgid "4C4P trunk (shuffle)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1784
|
#: netbox/dcim/choices.py:1780
|
||||||
msgid "4C6P trunk"
|
msgid "4C6P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1785
|
#: netbox/dcim/choices.py:1781
|
||||||
msgid "4C8P trunk"
|
msgid "4C8P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1786
|
#: netbox/dcim/choices.py:1782
|
||||||
msgid "8C4P trunk"
|
msgid "8C4P trunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1790
|
#: netbox/dcim/choices.py:1786
|
||||||
msgid "Breakout"
|
msgid "Breakout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1792
|
#: netbox/dcim/choices.py:1788
|
||||||
msgid "1C4P:4C1P breakout"
|
msgid "1C4P:4C1P breakout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1793
|
#: netbox/dcim/choices.py:1789
|
||||||
msgid "1C6P:6C1P breakout"
|
msgid "1C6P:6C1P breakout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1794
|
#: netbox/dcim/choices.py:1790
|
||||||
msgid "2C4P:8C1P breakout (shuffle)"
|
msgid "2C4P:8C1P breakout (shuffle)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1852
|
#: netbox/dcim/choices.py:1848
|
||||||
msgid "Copper - Twisted Pair (UTP/STP)"
|
msgid "Copper - Twisted Pair (UTP/STP)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1866
|
#: netbox/dcim/choices.py:1862
|
||||||
msgid "Copper - Twinax (DAC)"
|
msgid "Copper - Twinax (DAC)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1873
|
#: netbox/dcim/choices.py:1869
|
||||||
msgid "Copper - Coaxial"
|
msgid "Copper - Coaxial"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1888
|
#: netbox/dcim/choices.py:1884
|
||||||
msgid "Fiber - Multimode"
|
msgid "Fiber - Multimode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1899
|
#: netbox/dcim/choices.py:1895
|
||||||
msgid "Fiber - Single-mode"
|
msgid "Fiber - Single-mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1907
|
#: netbox/dcim/choices.py:1903
|
||||||
msgid "Fiber - Other"
|
msgid "Fiber - Other"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402
|
#: netbox/dcim/choices.py:1928 netbox/dcim/forms/filtersets.py:1402
|
||||||
msgid "Connected"
|
msgid "Connected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177
|
#: netbox/dcim/choices.py:1947 netbox/netbox/choices.py:177
|
||||||
msgid "Kilometers"
|
msgid "Kilometers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178
|
#: netbox/dcim/choices.py:1948 netbox/netbox/choices.py:178
|
||||||
#: netbox/templates/dcim/cable_trace.html:65
|
#: netbox/templates/dcim/cable_trace.html:65
|
||||||
msgid "Meters"
|
msgid "Meters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1953
|
#: netbox/dcim/choices.py:1949
|
||||||
msgid "Centimeters"
|
msgid "Centimeters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179
|
#: netbox/dcim/choices.py:1950 netbox/netbox/choices.py:179
|
||||||
msgid "Miles"
|
msgid "Miles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180
|
#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:180
|
||||||
#: netbox/templates/dcim/cable_trace.html:66
|
#: netbox/templates/dcim/cable_trace.html:66
|
||||||
msgid "Feet"
|
msgid "Feet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:2003
|
#: netbox/dcim/choices.py:1999
|
||||||
msgid "Redundant"
|
msgid "Redundant"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:2024
|
#: netbox/dcim/choices.py:2020
|
||||||
msgid "Single phase"
|
msgid "Single phase"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:2025
|
#: netbox/dcim/choices.py:2021
|
||||||
msgid "Three-phase"
|
msgid "Three-phase"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53
|
#: netbox/dcim/choices.py:2037 netbox/extras/choices.py:53
|
||||||
#: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70
|
#: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70
|
||||||
#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20
|
#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20
|
||||||
#: netbox/wireless/choices.py:27
|
#: netbox/wireless/choices.py:27
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/choices.py:2042
|
#: netbox/dcim/choices.py:2038
|
||||||
msgid "Faulty"
|
msgid "Faulty"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -16677,7 +16677,7 @@ msgstr ""
|
|||||||
msgid "A column named {name} is already defined for table {table_name}"
|
msgid "A column named {name} is already defined for table {table_name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/utilities/templates/builtins/customfield_value.html:32
|
#: netbox/utilities/templates/builtins/customfield_value.html:30
|
||||||
msgid "Not defined"
|
msgid "Not defined"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% if customfield.type == 'integer' and value is not None %}
|
{% if customfield.type == 'integer' and value is not None %}
|
||||||
{{ value }}
|
{{ value }}
|
||||||
{% elif customfield.type == 'decimal' and value is not None %}
|
|
||||||
{{ value }}
|
|
||||||
{% elif customfield.type == 'longtext' and value %}
|
{% elif customfield.type == 'longtext' and value %}
|
||||||
{{ value|markdown }}
|
{{ value|markdown }}
|
||||||
{% elif customfield.type == 'boolean' and value == True %}
|
{% elif customfield.type == 'boolean' and value == True %}
|
||||||
|
|||||||
Reference in New Issue
Block a user