mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-09 00:58:16 -06:00
Addressed PR comment.
This commit is contained in:
commit
af84ad3f8c
2
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@ -26,7 +26,7 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: NetBox Version
|
label: NetBox Version
|
||||||
description: What version of NetBox are you currently running?
|
description: What version of NetBox are you currently running?
|
||||||
placeholder: v4.0.3
|
placeholder: v4.0.5
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
|
2
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
2
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
@ -14,7 +14,7 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: NetBox version
|
label: NetBox version
|
||||||
description: What version of NetBox are you currently running?
|
description: What version of NetBox are you currently running?
|
||||||
placeholder: v4.0.3
|
placeholder: v4.0.5
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
|
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -5,10 +5,12 @@ on:
|
|||||||
paths-ignore:
|
paths-ignore:
|
||||||
- 'contrib/**'
|
- 'contrib/**'
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
|
- 'netbox/translations/**'
|
||||||
pull_request:
|
pull_request:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- 'contrib/**'
|
- 'contrib/**'
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
|
- 'netbox/translations/**'
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
@ -323,6 +323,7 @@
|
|||||||
"100base-tx",
|
"100base-tx",
|
||||||
"100base-t1",
|
"100base-t1",
|
||||||
"1000base-t",
|
"1000base-t",
|
||||||
|
"1000base-tx",
|
||||||
"2.5gbase-t",
|
"2.5gbase-t",
|
||||||
"5gbase-t",
|
"5gbase-t",
|
||||||
"10gbase-t",
|
"10gbase-t",
|
||||||
|
@ -65,12 +65,6 @@ class AnotherCustomScript(Script):
|
|||||||
script_order = (MyCustomScript, AnotherCustomScript)
|
script_order = (MyCustomScript, AnotherCustomScript)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Module Attributes
|
|
||||||
|
|
||||||
### `name`
|
|
||||||
|
|
||||||
You can define `name` within a script module (the Python file which contains one or more scripts) to set the module name. If `name` is not defined, the module's file name will be used.
|
|
||||||
|
|
||||||
## Script Attributes
|
## Script Attributes
|
||||||
|
|
||||||
Script attributes are defined under a class named `Meta` within the script. These are optional, but encouraged.
|
Script attributes are defined under a class named `Meta` within the script. These are optional, but encouraged.
|
||||||
|
@ -1,18 +1,34 @@
|
|||||||
# NetBox v4.0
|
# NetBox v4.0
|
||||||
|
|
||||||
## v4.0.4 (FUTURE)
|
## v4.0.6 (FUTURE)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v4.0.5 (2024-06-06)
|
||||||
|
|
||||||
### Enhancements
|
### Enhancements
|
||||||
|
|
||||||
* [#14810](https://github.com/netbox-community/netbox/issues/14810) - Enable contact assignment for services
|
* [#14810](https://github.com/netbox-community/netbox/issues/14810) - Enable contact assignment for services
|
||||||
* [#15489](https://github.com/netbox-community/netbox/issues/15489) - Add 1000Base-TX interface type
|
* [#15489](https://github.com/netbox-community/netbox/issues/15489) - Add 1000Base-TX interface type
|
||||||
|
* [#15873](https://github.com/netbox-community/netbox/issues/15873) - Improve readability of allocates resource numbers for clusters
|
||||||
* [#16290](https://github.com/netbox-community/netbox/issues/16290) - Capture entire object in changelog data (but continue to display only non-internal attributes)
|
* [#16290](https://github.com/netbox-community/netbox/issues/16290) - Capture entire object in changelog data (but continue to display only non-internal attributes)
|
||||||
|
* [#16353](https://github.com/netbox-community/netbox/issues/16353) - Enable plugins to extend object change view with custom content
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* [#13422](https://github.com/netbox-community/netbox/issues/13422) - Rebuild MPTT trees for applicable models after merging staged changes
|
* [#13422](https://github.com/netbox-community/netbox/issues/13422) - Rebuild MPTT trees for applicable models after merging staged changes
|
||||||
|
* [#14567](https://github.com/netbox-community/netbox/issues/14567) - Apply active quicksearch value when exporting "current view" from object list
|
||||||
|
* [#15194](https://github.com/netbox-community/netbox/issues/15194) - Avoid enqueuing duplicate event triggers for a modified object
|
||||||
|
* [#16039](https://github.com/netbox-community/netbox/issues/16039) - Fix row highlighting for front & rear port connections under device view
|
||||||
|
* [#16050](https://github.com/netbox-community/netbox/issues/16050) - Fix display of names & descriptions defined for custom scripts
|
||||||
|
* [#16083](https://github.com/netbox-community/netbox/issues/16083) - Disable font ligatures to avoid peculiarities in rendered text
|
||||||
* [#16202](https://github.com/netbox-community/netbox/issues/16202) - Fix site map button URL for certain localizations
|
* [#16202](https://github.com/netbox-community/netbox/issues/16202) - Fix site map button URL for certain localizations
|
||||||
|
* [#16261](https://github.com/netbox-community/netbox/issues/16261) - Fix GraphQL filtering for certain multi-value filters
|
||||||
* [#16286](https://github.com/netbox-community/netbox/issues/16286) - Fix global search support for provider accounts
|
* [#16286](https://github.com/netbox-community/netbox/issues/16286) - Fix global search support for provider accounts
|
||||||
|
* [#16312](https://github.com/netbox-community/netbox/issues/16312) - Fix object list navigation for dashboard widgets
|
||||||
|
* [#16315](https://github.com/netbox-community/netbox/issues/16315) - Fix filtering change log & journal entries by object type in UI
|
||||||
|
* [#16376](https://github.com/netbox-community/netbox/issues/16376) - Update change log for the terminating object (e.g. interface) when attaching a cable
|
||||||
|
* [#16400](https://github.com/netbox-community/netbox/issues/16400) - Fix AttributeError when attempting to restore a previous configuration revision after deleting the current one
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ class ConfigRevisionRestoreView(ContentTypePermissionRequiredMixin, View):
|
|||||||
for param in PARAMS:
|
for param in PARAMS:
|
||||||
params.append((
|
params.append((
|
||||||
param.name,
|
param.name,
|
||||||
current_config.data.get(param.name, None),
|
current_config.data.get(param.name, None) if current_config else None,
|
||||||
candidate_config.data.get(param.name, None)
|
candidate_config.data.get(param.name, None)
|
||||||
))
|
))
|
||||||
|
|
||||||
|
@ -355,11 +355,11 @@ class CableTermination(ChangeLoggedModel):
|
|||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
# Set the cable on the terminating object
|
# Set the cable on the terminating object
|
||||||
termination_model = self.termination._meta.model
|
termination = self.termination._meta.model.objects.get(pk=self.termination_id)
|
||||||
termination_model.objects.filter(pk=self.termination_id).update(
|
termination.snapshot()
|
||||||
cable=self.cable,
|
termination.cable = self.cable
|
||||||
cable_end=self.cable_end
|
termination.cable_end = self.cable_end
|
||||||
)
|
termination.save()
|
||||||
|
|
||||||
def delete(self, *args, **kwargs):
|
def delete(self, *args, **kwargs):
|
||||||
|
|
||||||
|
@ -135,23 +135,23 @@ class ConditionSet:
|
|||||||
def __init__(self, ruleset):
|
def __init__(self, ruleset):
|
||||||
if type(ruleset) is not dict:
|
if type(ruleset) is not dict:
|
||||||
raise ValueError(_("Ruleset must be a dictionary, not {ruleset}.").format(ruleset=type(ruleset)))
|
raise ValueError(_("Ruleset must be a dictionary, not {ruleset}.").format(ruleset=type(ruleset)))
|
||||||
if len(ruleset) != 1:
|
|
||||||
raise ValueError(_("Ruleset must have exactly one logical operator (found {ruleset})").format(
|
|
||||||
ruleset=len(ruleset)))
|
|
||||||
|
|
||||||
# Determine the logic type
|
if len(ruleset) == 1:
|
||||||
logic = list(ruleset.keys())[0]
|
self.logic = (list(ruleset.keys())[0]).lower()
|
||||||
if type(logic) is not str or logic.lower() not in (AND, OR):
|
if self.logic not in (AND, OR):
|
||||||
raise ValueError(_("Invalid logic type: {logic} (must be '{op_and}' or '{op_or}')").format(
|
raise ValueError(_("Invalid logic type: must be 'AND' or 'OR'. Please check documentation."))
|
||||||
logic=logic, op_and=AND, op_or=OR
|
|
||||||
))
|
|
||||||
self.logic = logic.lower()
|
|
||||||
|
|
||||||
# Compile the set of Conditions
|
# Compile the set of Conditions
|
||||||
self.conditions = [
|
self.conditions = [
|
||||||
ConditionSet(rule) if is_ruleset(rule) else Condition(**rule)
|
ConditionSet(rule) if is_ruleset(rule) else Condition(**rule)
|
||||||
for rule in ruleset[self.logic]
|
for rule in ruleset[self.logic]
|
||||||
]
|
]
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
self.logic = None
|
||||||
|
self.conditions = [Condition(**ruleset)]
|
||||||
|
except TypeError:
|
||||||
|
raise ValueError(_("Incorrect key(s) informed. Please check documentation."))
|
||||||
|
|
||||||
def eval(self, data):
|
def eval(self, data):
|
||||||
"""
|
"""
|
||||||
|
@ -464,13 +464,10 @@ class JournalEntryFilterForm(NetBoxModelFilterSetForm):
|
|||||||
required=False,
|
required=False,
|
||||||
label=_('User')
|
label=_('User')
|
||||||
)
|
)
|
||||||
assigned_object_type_id = DynamicModelMultipleChoiceField(
|
assigned_object_type_id = ContentTypeMultipleChoiceField(
|
||||||
queryset=ObjectType.objects.all(),
|
queryset=ObjectType.objects.with_feature('journaling'),
|
||||||
required=False,
|
required=False,
|
||||||
label=_('Object Type'),
|
label=_('Object Type'),
|
||||||
widget=APISelectMultiple(
|
|
||||||
api_url='/api/extras/content-types/',
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
kind = forms.ChoiceField(
|
kind = forms.ChoiceField(
|
||||||
label=_('Kind'),
|
label=_('Kind'),
|
||||||
@ -507,11 +504,8 @@ class ObjectChangeFilterForm(SavedFiltersMixin, FilterForm):
|
|||||||
required=False,
|
required=False,
|
||||||
label=_('User')
|
label=_('User')
|
||||||
)
|
)
|
||||||
changed_object_type_id = DynamicModelMultipleChoiceField(
|
changed_object_type_id = ContentTypeMultipleChoiceField(
|
||||||
queryset=ObjectType.objects.all(),
|
queryset=ObjectType.objects.with_feature('change_logging'),
|
||||||
required=False,
|
required=False,
|
||||||
label=_('Object Type'),
|
label=_('Object Type'),
|
||||||
widget=APISelectMultiple(
|
|
||||||
api_url='/api/extras/content-types/',
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
|
from dcim.choices import SiteStatusChoices
|
||||||
|
from dcim.models import Site
|
||||||
from extras.conditions import Condition, ConditionSet
|
from extras.conditions import Condition, ConditionSet
|
||||||
|
from extras.events import serialize_for_event
|
||||||
|
from extras.forms import EventRuleForm
|
||||||
|
from extras.models import EventRule, Webhook
|
||||||
|
|
||||||
|
|
||||||
class ConditionTestCase(TestCase):
|
class ConditionTestCase(TestCase):
|
||||||
@ -217,3 +223,93 @@ class ConditionSetTest(TestCase):
|
|||||||
self.assertTrue(cs.eval({'a': 1, 'b': 2, 'c': 9}))
|
self.assertTrue(cs.eval({'a': 1, 'b': 2, 'c': 9}))
|
||||||
self.assertFalse(cs.eval({'a': 9, 'b': 2, 'c': 9}))
|
self.assertFalse(cs.eval({'a': 9, 'b': 2, 'c': 9}))
|
||||||
self.assertFalse(cs.eval({'a': 9, 'b': 9, 'c': 3}))
|
self.assertFalse(cs.eval({'a': 9, 'b': 9, 'c': 3}))
|
||||||
|
|
||||||
|
def test_event_rule_conditions_without_logic_operator(self):
|
||||||
|
"""
|
||||||
|
Test evaluation of EventRule conditions without logic operator.
|
||||||
|
"""
|
||||||
|
event_rule = EventRule(
|
||||||
|
name='Event Rule 1',
|
||||||
|
type_create=True,
|
||||||
|
type_update=True,
|
||||||
|
conditions={
|
||||||
|
'attr': 'status.value',
|
||||||
|
'value': 'active',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create a Site to evaluate - Status = active
|
||||||
|
site = Site.objects.create(name='Site 1', slug='site-1', status=SiteStatusChoices.STATUS_ACTIVE)
|
||||||
|
data = serialize_for_event(site)
|
||||||
|
|
||||||
|
# Evaluate the conditions (status='active')
|
||||||
|
self.assertTrue(event_rule.eval_conditions(data))
|
||||||
|
|
||||||
|
def test_event_rule_conditions_with_logical_operation(self):
|
||||||
|
"""
|
||||||
|
Test evaluation of EventRule conditions without logic operator, but with logical operation (in).
|
||||||
|
"""
|
||||||
|
event_rule = EventRule(
|
||||||
|
name='Event Rule 1',
|
||||||
|
type_create=True,
|
||||||
|
type_update=True,
|
||||||
|
conditions={
|
||||||
|
"attr": "status.value",
|
||||||
|
"value": ["planned", "staging"],
|
||||||
|
"op": "in",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create a Site to evaluate - Status = active
|
||||||
|
site = Site.objects.create(name='Site 1', slug='site-1', status=SiteStatusChoices.STATUS_ACTIVE)
|
||||||
|
data = serialize_for_event(site)
|
||||||
|
|
||||||
|
# Evaluate the conditions (status in ['planned, 'staging'])
|
||||||
|
self.assertFalse(event_rule.eval_conditions(data))
|
||||||
|
|
||||||
|
def test_event_rule_conditions_with_logical_operation_and_negate(self):
|
||||||
|
"""
|
||||||
|
Test evaluation of EventRule with logical operation (in) and negate.
|
||||||
|
"""
|
||||||
|
event_rule = EventRule(
|
||||||
|
name='Event Rule 1',
|
||||||
|
type_create=True,
|
||||||
|
type_update=True,
|
||||||
|
conditions={
|
||||||
|
"attr": "status.value",
|
||||||
|
"value": ["planned", "staging"],
|
||||||
|
"op": "in",
|
||||||
|
"negate": True,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create a Site to evaluate - Status = active
|
||||||
|
site = Site.objects.create(name='Site 1', slug='site-1', status=SiteStatusChoices.STATUS_ACTIVE)
|
||||||
|
data = serialize_for_event(site)
|
||||||
|
|
||||||
|
# Evaluate the conditions (status NOT in ['planned, 'staging'])
|
||||||
|
self.assertTrue(event_rule.eval_conditions(data))
|
||||||
|
|
||||||
|
def test_event_rule_conditions_with_incorrect_key_must_return_false(self):
|
||||||
|
"""
|
||||||
|
Test Event Rule with incorrect condition (key "foo" is wrong). Must return false.
|
||||||
|
"""
|
||||||
|
|
||||||
|
ct = ContentType.objects.get(app_label='extras', model='webhook')
|
||||||
|
site_ct = ContentType.objects.get_for_model(Site)
|
||||||
|
webhook = Webhook.objects.create(name='Webhook 100', payload_url='http://example.com/?1', http_method='POST')
|
||||||
|
form = EventRuleForm({
|
||||||
|
"name": "Event Rule 1",
|
||||||
|
"type_create": True,
|
||||||
|
"type_update": True,
|
||||||
|
"action_object_type": ct.pk,
|
||||||
|
"action_type": "webhook",
|
||||||
|
"action_choice": webhook.pk,
|
||||||
|
"content_types": [site_ct.pk],
|
||||||
|
"conditions": {
|
||||||
|
"foo": "status.value",
|
||||||
|
"value": "active"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
self.assertFalse(form.is_valid())
|
||||||
|
@ -649,7 +649,7 @@ class IPAddressTest(APIViewTestCases.APIViewTestCase):
|
|||||||
'description': 'New description',
|
'description': 'New description',
|
||||||
}
|
}
|
||||||
graphql_filter = {
|
graphql_filter = {
|
||||||
'address': '192.168.0.1/24',
|
'address': {'lookup': 'i_exact', 'value': '192.168.0.1/24'},
|
||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -23,8 +23,9 @@ def map_strawberry_type(field):
|
|||||||
elif isinstance(field, MultiValueArrayFilter):
|
elif isinstance(field, MultiValueArrayFilter):
|
||||||
pass
|
pass
|
||||||
elif isinstance(field, MultiValueCharFilter):
|
elif isinstance(field, MultiValueCharFilter):
|
||||||
should_create_function = True
|
# Note: Need to use the legacy FilterLookup from filters, not from
|
||||||
attr_type = List[str] | None
|
# strawberry_django.FilterLookup as we currently have USE_DEPRECATED_FILTERS
|
||||||
|
attr_type = strawberry_django.filters.FilterLookup[str] | None
|
||||||
elif isinstance(field, MultiValueDateFilter):
|
elif isinstance(field, MultiValueDateFilter):
|
||||||
attr_type = auto
|
attr_type = auto
|
||||||
elif isinstance(field, MultiValueDateTimeFilter):
|
elif isinstance(field, MultiValueDateTimeFilter):
|
||||||
|
@ -25,7 +25,7 @@ from utilities.string import trailing_slash
|
|||||||
# Environment setup
|
# Environment setup
|
||||||
#
|
#
|
||||||
|
|
||||||
VERSION = '4.0.4-dev'
|
VERSION = '4.0.6-dev'
|
||||||
HOSTNAME = platform.node()
|
HOSTNAME = platform.node()
|
||||||
# Set the base directory two levels up
|
# Set the base directory two levels up
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
@ -368,6 +368,8 @@ INSTALLED_APPS = [
|
|||||||
'drf_spectacular',
|
'drf_spectacular',
|
||||||
'drf_spectacular_sidecar',
|
'drf_spectacular_sidecar',
|
||||||
]
|
]
|
||||||
|
if not DEBUG:
|
||||||
|
INSTALLED_APPS.remove('debug_toolbar')
|
||||||
if not DJANGO_ADMIN_ENABLED:
|
if not DJANGO_ADMIN_ENABLED:
|
||||||
INSTALLED_APPS.remove('django.contrib.admin')
|
INSTALLED_APPS.remove('django.contrib.admin')
|
||||||
|
|
||||||
|
BIN
netbox/project-static/dist/netbox.css
vendored
BIN
netbox/project-static/dist/netbox.css
vendored
Binary file not shown.
BIN
netbox/project-static/dist/netbox.js
vendored
BIN
netbox/project-static/dist/netbox.js
vendored
Binary file not shown.
BIN
netbox/project-static/dist/netbox.js.map
vendored
BIN
netbox/project-static/dist/netbox.js.map
vendored
Binary file not shown.
@ -27,10 +27,10 @@
|
|||||||
"bootstrap": "5.3.3",
|
"bootstrap": "5.3.3",
|
||||||
"clipboard": "2.0.11",
|
"clipboard": "2.0.11",
|
||||||
"flatpickr": "4.6.13",
|
"flatpickr": "4.6.13",
|
||||||
"gridstack": "10.1.2",
|
"gridstack": "10.2.0",
|
||||||
"htmx.org": "1.9.12",
|
"htmx.org": "1.9.12",
|
||||||
"query-string": "9.0.0",
|
"query-string": "9.0.0",
|
||||||
"sass": "1.77.2",
|
"sass": "1.77.4",
|
||||||
"tom-select": "2.3.1",
|
"tom-select": "2.3.1",
|
||||||
"typeface-inter": "3.18.1",
|
"typeface-inter": "3.18.1",
|
||||||
"typeface-roboto-mono": "1.1.13"
|
"typeface-roboto-mono": "1.1.13"
|
||||||
|
@ -7,38 +7,74 @@ import { isTruthy } from './util';
|
|||||||
*/
|
*/
|
||||||
function quickSearchEventHandler(event: Event): void {
|
function quickSearchEventHandler(event: Event): void {
|
||||||
const quicksearch = event.currentTarget as HTMLInputElement;
|
const quicksearch = event.currentTarget as HTMLInputElement;
|
||||||
const clearbtn = document.getElementById("quicksearch_clear") as HTMLAnchorElement;
|
const clearbtn = document.getElementById('quicksearch_clear') as HTMLAnchorElement;
|
||||||
if (isTruthy(clearbtn)) {
|
if (isTruthy(clearbtn)) {
|
||||||
if (quicksearch.value === "") {
|
if (quicksearch.value === '') {
|
||||||
clearbtn.classList.add("invisible");
|
clearbtn.classList.add('invisible');
|
||||||
} else {
|
} else {
|
||||||
clearbtn.classList.remove("invisible");
|
clearbtn.classList.remove('invisible');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear the existing search parameters in the link to export Current View.
|
||||||
|
*/
|
||||||
|
function clearLinkParams(): void {
|
||||||
|
const link = document.getElementById('export_current_view') as HTMLLinkElement;
|
||||||
|
const linkUpdated = link?.href.split('&')[0];
|
||||||
|
link.setAttribute('href', linkUpdated);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the Export View link to add the Quick Search parameters.
|
||||||
|
* @param event
|
||||||
|
*/
|
||||||
|
function handleQuickSearchParams(event: Event): void {
|
||||||
|
const quickSearchParameters = event.currentTarget as HTMLInputElement;
|
||||||
|
|
||||||
|
// Clear the existing search parameters
|
||||||
|
clearLinkParams();
|
||||||
|
|
||||||
|
if (quickSearchParameters != null) {
|
||||||
|
const link = document.getElementById('export_current_view') as HTMLLinkElement;
|
||||||
|
const search_parameter = `q=${quickSearchParameters.value}`;
|
||||||
|
const linkUpdated = link?.href + '&' + search_parameter;
|
||||||
|
link.setAttribute('href', linkUpdated);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize Quicksearch Event listener/handlers.
|
* Initialize Quicksearch Event listener/handlers.
|
||||||
*/
|
*/
|
||||||
export function initQuickSearch(): void {
|
export function initQuickSearch(): void {
|
||||||
const quicksearch = document.getElementById("quicksearch") as HTMLInputElement;
|
const quicksearch = document.getElementById('quicksearch') as HTMLInputElement;
|
||||||
const clearbtn = document.getElementById("quicksearch_clear") as HTMLAnchorElement;
|
const clearbtn = document.getElementById('quicksearch_clear') as HTMLAnchorElement;
|
||||||
if (isTruthy(quicksearch)) {
|
if (isTruthy(quicksearch)) {
|
||||||
quicksearch.addEventListener("keyup", quickSearchEventHandler, {
|
quicksearch.addEventListener('keyup', quickSearchEventHandler, {
|
||||||
passive: true
|
passive: true,
|
||||||
})
|
});
|
||||||
quicksearch.addEventListener("search", quickSearchEventHandler, {
|
quicksearch.addEventListener('search', quickSearchEventHandler, {
|
||||||
passive: true
|
passive: true,
|
||||||
})
|
});
|
||||||
|
quicksearch.addEventListener('change', handleQuickSearchParams, {
|
||||||
|
passive: true,
|
||||||
|
});
|
||||||
|
|
||||||
if (isTruthy(clearbtn)) {
|
if (isTruthy(clearbtn)) {
|
||||||
clearbtn.addEventListener("click", async () => {
|
clearbtn.addEventListener(
|
||||||
const search = new Event('search');
|
'click',
|
||||||
quicksearch.value = '';
|
async () => {
|
||||||
await new Promise(f => setTimeout(f, 100));
|
const search = new Event('search');
|
||||||
quicksearch.dispatchEvent(search);
|
quicksearch.value = '';
|
||||||
}, {
|
await new Promise(f => setTimeout(f, 100));
|
||||||
passive: true
|
quicksearch.dispatchEvent(search);
|
||||||
})
|
clearLinkParams();
|
||||||
|
},
|
||||||
|
{
|
||||||
|
passive: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
// Disable font-ligatures for Chromium based browsers
|
||||||
|
// Chromium requires `font-variant-ligatures: none` in addition to `font-feature-settings "liga" 0`
|
||||||
|
* {
|
||||||
|
font-feature-settings: "liga" 0;
|
||||||
|
font-variant-ligatures: none;
|
||||||
|
}
|
||||||
|
|
||||||
// Restore default foreground & background colors for <pre> blocks
|
// Restore default foreground & background colors for <pre> blocks
|
||||||
pre {
|
pre {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
@ -32,3 +39,8 @@ table a {
|
|||||||
// Adjust table anchor link contrast as not enough contrast in dark mode
|
// Adjust table anchor link contrast as not enough contrast in dark mode
|
||||||
filter: brightness(110%);
|
filter: brightness(110%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Override background color alpha value
|
||||||
|
[data-bs-theme=dark] ::selection {
|
||||||
|
background-color: rgba(var(--tblr-primary-rgb),.48)
|
||||||
|
}
|
||||||
|
@ -1754,10 +1754,10 @@ graphql@16.8.1:
|
|||||||
resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07"
|
resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07"
|
||||||
integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==
|
integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==
|
||||||
|
|
||||||
gridstack@10.1.2:
|
gridstack@10.2.0:
|
||||||
version "10.1.2"
|
version "10.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/gridstack/-/gridstack-10.1.2.tgz#58b5ae0057a8aa5e4f6563041c4ca2def3aa4268"
|
resolved "https://registry.yarnpkg.com/gridstack/-/gridstack-10.2.0.tgz#4ba9c7ee69a730851721a9f5cb33dc55026ded1f"
|
||||||
integrity sha512-Nn27XGQ68WtBC513cKQQ4t/dA2uuN/xnNUU50puXEJv6IFk5SzT0Dnsq68GpopO1n0tXUKZKm1Rw7uOUMDz1KQ==
|
integrity sha512-svKAOq/dfinpvhe/nnxdyZOOEd9qynXiOPHvL96PALE0yWChWp/6lechnqKwud0tL/rRyAfMJ6Hh/z2fS13pBA==
|
||||||
|
|
||||||
has-bigints@^1.0.1, has-bigints@^1.0.2:
|
has-bigints@^1.0.1, has-bigints@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
@ -2482,10 +2482,10 @@ safe-regex-test@^1.0.3:
|
|||||||
es-errors "^1.3.0"
|
es-errors "^1.3.0"
|
||||||
is-regex "^1.1.4"
|
is-regex "^1.1.4"
|
||||||
|
|
||||||
sass@1.77.2:
|
sass@1.77.4:
|
||||||
version "1.77.2"
|
version "1.77.4"
|
||||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.2.tgz#18d4ed2eefc260cdc8099c5439ec1303fd5863aa"
|
resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.4.tgz#92059c7bfc56b827c56eb116778d157ec017a5cd"
|
||||||
integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==
|
integrity sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==
|
||||||
dependencies:
|
dependencies:
|
||||||
chokidar ">=3.0.0 <4.0.0"
|
chokidar ">=3.0.0 <4.0.0"
|
||||||
immutable "^4.0.0"
|
immutable "^4.0.0"
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col col-md-12">
|
<div class="col col-md-12">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body table-responsive">
|
<div class="table-responsive">
|
||||||
{% render_table table 'inc/table.html' %}
|
{% render_table table 'inc/table.html' %}
|
||||||
{% include 'inc/paginator.html' with paginator=table.paginator page=table.page %}
|
{% include 'inc/paginator.html' with paginator=table.paginator page=table.page %}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{% extends 'generic/object.html' %}
|
{% extends 'generic/object.html' %}
|
||||||
{% load helpers %}
|
{% load helpers %}
|
||||||
|
{% load plugins %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
|
||||||
{% block title %}{{ object }}{% endblock %}
|
{% block title %}{{ object }}{% endblock %}
|
||||||
@ -22,7 +23,7 @@
|
|||||||
{% block subtitle %}{% endblock %}
|
{% block subtitle %}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row mb-3">
|
<div class="row">
|
||||||
<div class="col col-md-5">
|
<div class="col col-md-5">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h5 class="card-header">{% trans "Change" %}</h5>
|
<h5 class="card-header">{% trans "Change" %}</h5>
|
||||||
@ -104,7 +105,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-3">
|
<div class="row">
|
||||||
<div class="col col-md-6">
|
<div class="col col-md-6">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h5 class="card-header">{% trans "Pre-Change Data" %}</h5>
|
<h5 class="card-header">{% trans "Pre-Change Data" %}</h5>
|
||||||
@ -144,7 +145,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-3">
|
<div class="row">
|
||||||
|
<div class="col col-md-6">
|
||||||
|
{% plugin_left_page object %}
|
||||||
|
</div>
|
||||||
|
<div class="col col-md-6">
|
||||||
|
{% plugin_right_page object %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
<div class="col col-md-12">
|
<div class="col col-md-12">
|
||||||
{% include 'inc/panel_table.html' with table=related_changes_table heading='Related Changes' panel_class='default' %}
|
{% include 'inc/panel_table.html' with table=related_changes_table heading='Related Changes' panel_class='default' %}
|
||||||
{% if related_changes_count > related_changes_table.rows|length %}
|
{% if related_changes_count > related_changes_table.rows|length %}
|
||||||
@ -158,4 +167,9 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col col-md-12">
|
||||||
|
{% plugin_full_width_page object %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
{% load log_levels %}
|
{% load log_levels %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
|
||||||
{% block title %}{{ script }}{% endblock %}
|
{% block title %}{{ script.python_class.name }}{% endblock %}
|
||||||
|
|
||||||
{% block object_identifier %}
|
{% block object_identifier %}
|
||||||
{{ script.full_name }}
|
{{ script.full_name }}
|
||||||
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
{% block subtitle %}
|
{% block subtitle %}
|
||||||
<div class="text-secondary fs-5">
|
<div class="text-secondary fs-5">
|
||||||
{{ script.Meta.description|markdown }}
|
{{ script.python_class.Meta.description|markdown }}
|
||||||
</div>
|
</div>
|
||||||
{% endblock subtitle %}
|
{% endblock subtitle %}
|
||||||
|
|
||||||
|
@ -56,15 +56,15 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{% if script.is_executable %}
|
{% if script.is_executable %}
|
||||||
<a href="{% url 'extras:script' script.pk %}" id="{{ script.module }}.{{ script.class_name }}">{{ script.name }}</a>
|
<a href="{% url 'extras:script' script.pk %}" id="{{ script.module }}.{{ script.class_name }}">{{ script.python_class.name }}</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{% url 'extras:script_jobs' script.pk %}" id="{{ script.module }}.{{ script.class_name }}">{{ script.name }}</a>
|
<a href="{% url 'extras:script_jobs' script.pk %}" id="{{ script.module }}.{{ script.class_name }}">{{ script.python_class.name }}</a>
|
||||||
<span class="text-danger">
|
<span class="text-danger">
|
||||||
<i class="mdi mdi-alert" title="{% trans "Script is no longer present in the source file" %}"></i>
|
<i class="mdi mdi-alert" title="{% trans "Script is no longer present in the source file" %}"></i>
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td>{{ script.description|markdown|placeholder }}</td>
|
<td>{{ script.python_class.Meta.description|markdown|placeholder }}</td>
|
||||||
{% if last_job %}
|
{% if last_job %}
|
||||||
<td>
|
<td>
|
||||||
<a href="{% url 'extras:script_result' job_pk=last_job.pk %}">{{ last_job.created|isodatetime }}</a>
|
<a href="{% url 'extras:script_result' job_pk=last_job.pk %}">{{ last_job.created|isodatetime }}</a>
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
<th scope="row"><i class="mdi mdi-chip"></i> {% trans "Memory" %}</th>
|
<th scope="row"><i class="mdi mdi-chip"></i> {% trans "Memory" %}</th>
|
||||||
<td>
|
<td>
|
||||||
{% if memory_sum %}
|
{% if memory_sum %}
|
||||||
{{ memory_sum|humanize_megabytes }}
|
<span title={{ memory_sum }}>{{ memory_sum|humanize_megabytes }}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ ''|placeholder }}
|
{{ ''|placeholder }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -125,7 +125,7 @@
|
|||||||
<th scope="row"><i class="mdi mdi-chip"></i> {% trans "Memory" %}</th>
|
<th scope="row"><i class="mdi mdi-chip"></i> {% trans "Memory" %}</th>
|
||||||
<td>
|
<td>
|
||||||
{% if object.memory %}
|
{% if object.memory %}
|
||||||
{{ object.memory|humanize_megabytes }}
|
<span title={{ object.memory }}>{{ object.memory|humanize_megabytes }}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ ''|placeholder }}
|
{{ ''|placeholder }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -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: 2024-06-01 05:02+0000\n"
|
"POT-Creation-Date: 2024-06-08 05:02+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"
|
||||||
@ -172,7 +172,7 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/model_forms.py:136
|
#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/model_forms.py:136
|
||||||
#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206
|
#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206
|
||||||
#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:668
|
#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:668
|
||||||
#: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:158
|
#: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:150
|
||||||
#: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93
|
#: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93
|
||||||
#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138
|
#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138
|
||||||
#: netbox/dcim/tables/sites.py:129 netbox/extras/filtersets.py:477
|
#: netbox/dcim/tables/sites.py:129 netbox/extras/filtersets.py:477
|
||||||
@ -492,8 +492,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098
|
#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1571 netbox/dcim/forms/filtersets.py:983
|
#: netbox/dcim/forms/bulk_edit.py:1571 netbox/dcim/forms/filtersets.py:983
|
||||||
#: netbox/dcim/forms/filtersets.py:1359 netbox/dcim/forms/filtersets.py:1380
|
#: netbox/dcim/forms/filtersets.py:1359 netbox/dcim/forms/filtersets.py:1380
|
||||||
#: netbox/dcim/tables/devices.py:699 netbox/dcim/tables/devices.py:759
|
#: netbox/dcim/tables/devices.py:687 netbox/dcim/tables/devices.py:744
|
||||||
#: netbox/dcim/tables/devices.py:986 netbox/dcim/tables/devicetypes.py:245
|
#: netbox/dcim/tables/devices.py:968 netbox/dcim/tables/devicetypes.py:245
|
||||||
#: netbox/dcim/tables/devicetypes.py:260 netbox/dcim/tables/racks.py:32
|
#: netbox/dcim/tables/devicetypes.py:260 netbox/dcim/tables/racks.py:32
|
||||||
#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:333
|
#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:333
|
||||||
#: netbox/templates/circuits/circuittype.html:30
|
#: netbox/templates/circuits/circuittype.html:30
|
||||||
@ -527,8 +527,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/filtersets.py:1354 netbox/dcim/forms/filtersets.py:1375
|
#: netbox/dcim/forms/filtersets.py:1354 netbox/dcim/forms/filtersets.py:1375
|
||||||
#: netbox/dcim/forms/model_forms.py:643 netbox/dcim/forms/model_forms.py:649
|
#: netbox/dcim/forms/model_forms.py:643 netbox/dcim/forms/model_forms.py:649
|
||||||
#: netbox/dcim/forms/object_import.py:84 netbox/dcim/forms/object_import.py:113
|
#: 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:183
|
#: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:175
|
||||||
#: netbox/dcim/tables/devices.py:815 netbox/dcim/tables/power.py:77
|
#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/power.py:77
|
||||||
#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:283
|
#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:283
|
||||||
#: netbox/extras/tables/tables.py:355 netbox/extras/tables/tables.py:473
|
#: netbox/extras/tables/tables.py:355 netbox/extras/tables/tables.py:473
|
||||||
#: netbox/netbox/tables/tables.py:239 netbox/templates/circuits/circuit.html:30
|
#: netbox/netbox/tables/tables.py:239 netbox/templates/circuits/circuit.html:30
|
||||||
@ -583,8 +583,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/filtersets.py:282 netbox/dcim/forms/filtersets.py:728
|
#: netbox/dcim/forms/filtersets.py:282 netbox/dcim/forms/filtersets.py:728
|
||||||
#: netbox/dcim/forms/filtersets.py:843 netbox/dcim/forms/filtersets.py:877
|
#: netbox/dcim/forms/filtersets.py:843 netbox/dcim/forms/filtersets.py:877
|
||||||
#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1089
|
#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1089
|
||||||
#: netbox/dcim/tables/devices.py:145 netbox/dcim/tables/devices.py:818
|
#: netbox/dcim/tables/devices.py:137 netbox/dcim/tables/devices.py:800
|
||||||
#: netbox/dcim/tables/devices.py:1046 netbox/dcim/tables/modules.py:69
|
#: netbox/dcim/tables/devices.py:1028 netbox/dcim/tables/modules.py:69
|
||||||
#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66
|
#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66
|
||||||
#: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:133
|
#: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:133
|
||||||
#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:290
|
#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:290
|
||||||
@ -868,7 +868,7 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1420
|
#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1420
|
||||||
#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211
|
#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211
|
||||||
#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:673
|
#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:673
|
||||||
#: netbox/dcim/tables/devices.py:162 netbox/dcim/tables/power.py:30
|
#: netbox/dcim/tables/devices.py:154 netbox/dcim/tables/power.py:30
|
||||||
#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143
|
#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143
|
||||||
#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329
|
#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329
|
||||||
#: netbox/ipam/forms/bulk_edit.py:457 netbox/ipam/forms/filtersets.py:173
|
#: netbox/ipam/forms/bulk_edit.py:457 netbox/ipam/forms/filtersets.py:173
|
||||||
@ -913,7 +913,7 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/filtersets.py:1055 netbox/dcim/forms/filtersets.py:1468
|
#: netbox/dcim/forms/filtersets.py:1055 netbox/dcim/forms/filtersets.py:1468
|
||||||
#: netbox/dcim/forms/filtersets.py:1492 netbox/dcim/forms/filtersets.py:1516
|
#: netbox/dcim/forms/filtersets.py:1492 netbox/dcim/forms/filtersets.py:1516
|
||||||
#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375
|
#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375
|
||||||
#: netbox/dcim/tables/devices.py:148 netbox/dcim/tables/sites.py:85
|
#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/sites.py:85
|
||||||
#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206
|
#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206
|
||||||
#: netbox/ipam/forms/bulk_edit.py:438 netbox/ipam/forms/bulk_edit.py:512
|
#: netbox/ipam/forms/bulk_edit.py:438 netbox/ipam/forms/bulk_edit.py:512
|
||||||
#: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422
|
#: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422
|
||||||
@ -965,7 +965,7 @@ msgstr ""
|
|||||||
#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183
|
#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183
|
||||||
#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230
|
#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230
|
||||||
#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450
|
#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450
|
||||||
#: netbox/extras/forms/filtersets.py:488 netbox/ipam/forms/filtersets.py:99
|
#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99
|
||||||
#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307
|
#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307
|
||||||
#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475
|
#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475
|
||||||
#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552
|
#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552
|
||||||
@ -1207,14 +1207,14 @@ msgstr ""
|
|||||||
#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13
|
#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13
|
||||||
#: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115
|
#: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115
|
||||||
#: netbox/dcim/forms/filtersets.py:61 netbox/dcim/forms/object_create.py:43
|
#: netbox/dcim/forms/filtersets.py:61 netbox/dcim/forms/object_create.py:43
|
||||||
#: netbox/dcim/tables/devices.py:60 netbox/dcim/tables/devices.py:97
|
#: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:89
|
||||||
#: netbox/dcim/tables/devices.py:139 netbox/dcim/tables/devices.py:294
|
#: netbox/dcim/tables/devices.py:131 netbox/dcim/tables/devices.py:286
|
||||||
#: netbox/dcim/tables/devices.py:380 netbox/dcim/tables/devices.py:424
|
#: netbox/dcim/tables/devices.py:380 netbox/dcim/tables/devices.py:421
|
||||||
#: netbox/dcim/tables/devices.py:476 netbox/dcim/tables/devices.py:528
|
#: netbox/dcim/tables/devices.py:470 netbox/dcim/tables/devices.py:519
|
||||||
#: netbox/dcim/tables/devices.py:644 netbox/dcim/tables/devices.py:726
|
#: netbox/dcim/tables/devices.py:632 netbox/dcim/tables/devices.py:714
|
||||||
#: netbox/dcim/tables/devices.py:776 netbox/dcim/tables/devices.py:842
|
#: netbox/dcim/tables/devices.py:761 netbox/dcim/tables/devices.py:824
|
||||||
#: netbox/dcim/tables/devices.py:957 netbox/dcim/tables/devices.py:977
|
#: netbox/dcim/tables/devices.py:939 netbox/dcim/tables/devices.py:959
|
||||||
#: netbox/dcim/tables/devices.py:1006 netbox/dcim/tables/devices.py:1036
|
#: netbox/dcim/tables/devices.py:988 netbox/dcim/tables/devices.py:1018
|
||||||
#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22
|
#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22
|
||||||
#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23
|
#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23
|
||||||
#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24
|
#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24
|
||||||
@ -1304,7 +1304,7 @@ msgstr ""
|
|||||||
#: netbox/virtualization/tables/clusters.py:62
|
#: netbox/virtualization/tables/clusters.py:62
|
||||||
#: netbox/virtualization/tables/virtualmachines.py:54
|
#: netbox/virtualization/tables/virtualmachines.py:54
|
||||||
#: netbox/virtualization/tables/virtualmachines.py:132
|
#: netbox/virtualization/tables/virtualmachines.py:132
|
||||||
#: netbox/virtualization/tables/virtualmachines.py:185
|
#: netbox/virtualization/tables/virtualmachines.py:187
|
||||||
#: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57
|
#: 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:93 netbox/vpn/tables/crypto.py:129
|
||||||
#: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23
|
#: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23
|
||||||
@ -1344,7 +1344,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: netbox/circuits/tables/circuits.py:76 netbox/circuits/tables/providers.py:48
|
#: netbox/circuits/tables/circuits.py:76 netbox/circuits/tables/providers.py:48
|
||||||
#: netbox/circuits/tables/providers.py:82
|
#: netbox/circuits/tables/providers.py:82
|
||||||
#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1019
|
#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1001
|
||||||
#: netbox/dcim/tables/devicetypes.py:92 netbox/dcim/tables/modules.py:29
|
#: 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/modules.py:72 netbox/dcim/tables/power.py:39
|
||||||
#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76
|
#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76
|
||||||
@ -1515,7 +1515,7 @@ msgstr ""
|
|||||||
#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40
|
#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40
|
||||||
#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020
|
#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1293 netbox/dcim/forms/filtersets.py:1276
|
#: netbox/dcim/forms/bulk_edit.py:1293 netbox/dcim/forms/filtersets.py:1276
|
||||||
#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:221
|
#: netbox/dcim/tables/devices.py:541 netbox/dcim/tables/devicetypes.py:221
|
||||||
#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162
|
#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162
|
||||||
#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120
|
#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120
|
||||||
#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268
|
#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268
|
||||||
@ -1577,9 +1577,9 @@ msgid "Creation"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470
|
#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470
|
||||||
#: netbox/extras/forms/filtersets.py:513 netbox/extras/tables/tables.py:183
|
#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:183
|
||||||
#: netbox/extras/tables/tables.py:504 netbox/templates/core/job.html:20
|
#: netbox/extras/tables/tables.py:504 netbox/templates/core/job.html:20
|
||||||
#: netbox/templates/extras/objectchange.html:51
|
#: netbox/templates/extras/objectchange.html:52
|
||||||
#: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59
|
#: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59
|
||||||
msgid "Object Type"
|
msgid "Object Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1619,9 +1619,9 @@ msgstr ""
|
|||||||
#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361
|
#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361
|
||||||
#: netbox/dcim/forms/filtersets.py:353 netbox/dcim/forms/filtersets.py:397
|
#: netbox/dcim/forms/filtersets.py:353 netbox/dcim/forms/filtersets.py:397
|
||||||
#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465
|
#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465
|
||||||
#: netbox/extras/forms/filtersets.py:508
|
#: netbox/extras/forms/filtersets.py:505
|
||||||
#: netbox/templates/dcim/rackreservation.html:58
|
#: netbox/templates/dcim/rackreservation.html:58
|
||||||
#: netbox/templates/extras/objectchange.html:35
|
#: netbox/templates/extras/objectchange.html:36
|
||||||
#: netbox/templates/extras/savedfilter.html:21
|
#: netbox/templates/extras/savedfilter.html:21
|
||||||
#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21
|
#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21
|
||||||
#: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14
|
#: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14
|
||||||
@ -1976,7 +1976,7 @@ msgstr ""
|
|||||||
#: netbox/extras/tables/tables.py:509 netbox/extras/tables/tables.py:574
|
#: netbox/extras/tables/tables.py:509 netbox/extras/tables/tables.py:574
|
||||||
#: netbox/netbox/tables/tables.py:243 netbox/templates/extras/eventrule.html:84
|
#: netbox/netbox/tables/tables.py:243 netbox/templates/extras/eventrule.html:84
|
||||||
#: netbox/templates/extras/journalentry.html:18
|
#: netbox/templates/extras/journalentry.html:18
|
||||||
#: netbox/templates/extras/objectchange.html:57
|
#: netbox/templates/extras/objectchange.html:58
|
||||||
#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64
|
#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64
|
||||||
msgid "Object"
|
msgid "Object"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2163,7 +2163,7 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92
|
#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92
|
||||||
#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1007
|
#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1007
|
||||||
#: netbox/dcim/forms/model_forms.py:1446 netbox/dcim/forms/object_import.py:176
|
#: netbox/dcim/forms/model_forms.py:1446 netbox/dcim/forms/object_import.py:176
|
||||||
#: netbox/dcim/tables/devices.py:652 netbox/dcim/tables/devices.py:937
|
#: netbox/dcim/tables/devices.py:640 netbox/dcim/tables/devices.py:919
|
||||||
#: netbox/extras/tables/tables.py:186 netbox/ipam/tables/fhrp.py:59
|
#: netbox/extras/tables/tables.py:186 netbox/ipam/tables/fhrp.py:59
|
||||||
#: netbox/ipam/tables/ip.py:374 netbox/ipam/tables/services.py:44
|
#: netbox/ipam/tables/ip.py:374 netbox/ipam/tables/services.py:44
|
||||||
#: netbox/templates/dcim/interface.html:102
|
#: netbox/templates/dcim/interface.html:102
|
||||||
@ -2297,7 +2297,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: netbox/dcim/choices.py:979 netbox/dcim/forms/bulk_edit.py:1303
|
#: netbox/dcim/choices.py:979 netbox/dcim/forms/bulk_edit.py:1303
|
||||||
#: netbox/dcim/forms/bulk_import.py:785 netbox/dcim/forms/model_forms.py:919
|
#: netbox/dcim/forms/bulk_import.py:785 netbox/dcim/forms/model_forms.py:919
|
||||||
#: netbox/dcim/tables/devices.py:656 netbox/templates/dcim/interface.html:106
|
#: netbox/dcim/tables/devices.py:644 netbox/templates/dcim/interface.html:106
|
||||||
#: netbox/templates/virtualization/vminterface.html:43
|
#: netbox/templates/virtualization/vminterface.html:43
|
||||||
#: netbox/virtualization/forms/bulk_edit.py:212
|
#: netbox/virtualization/forms/bulk_edit.py:212
|
||||||
#: netbox/virtualization/forms/bulk_import.py:158
|
#: netbox/virtualization/forms/bulk_import.py:158
|
||||||
@ -2781,7 +2781,7 @@ msgid "Virtual Chassis (ID)"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/filtersets.py:1401 netbox/dcim/forms/filtersets.py:107
|
#: netbox/dcim/filtersets.py:1401 netbox/dcim/forms/filtersets.py:107
|
||||||
#: netbox/dcim/tables/devices.py:211 netbox/netbox/navigation/menu.py:66
|
#: netbox/dcim/tables/devices.py:203 netbox/netbox/navigation/menu.py:66
|
||||||
#: netbox/templates/dcim/device.html:120
|
#: netbox/templates/dcim/device.html:120
|
||||||
#: netbox/templates/dcim/device_edit.html:93
|
#: netbox/templates/dcim/device_edit.html:93
|
||||||
#: netbox/templates/dcim/virtualchassis.html:20
|
#: netbox/templates/dcim/virtualchassis.html:20
|
||||||
@ -2811,7 +2811,7 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/bulk_import.py:836 netbox/dcim/forms/filtersets.py:1334
|
#: netbox/dcim/forms/bulk_import.py:836 netbox/dcim/forms/filtersets.py:1334
|
||||||
#: netbox/dcim/forms/model_forms.py:1322
|
#: netbox/dcim/forms/model_forms.py:1322
|
||||||
#: netbox/dcim/models/device_components.py:712
|
#: netbox/dcim/models/device_components.py:712
|
||||||
#: netbox/dcim/tables/devices.py:622 netbox/ipam/filtersets.py:316
|
#: netbox/dcim/tables/devices.py:610 netbox/ipam/filtersets.py:316
|
||||||
#: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483
|
#: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483
|
||||||
#: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595
|
#: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595
|
||||||
#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:282
|
#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:282
|
||||||
@ -2852,7 +2852,7 @@ msgid "L2VPN (ID)"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/filtersets.py:1563 netbox/dcim/forms/filtersets.py:1339
|
#: netbox/dcim/filtersets.py:1563 netbox/dcim/forms/filtersets.py:1339
|
||||||
#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1022
|
#: netbox/dcim/tables/devices.py:558 netbox/ipam/filtersets.py:1022
|
||||||
#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133
|
#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133
|
||||||
#: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66
|
#: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66
|
||||||
#: netbox/templates/vpn/l2vpntermination.html:12
|
#: netbox/templates/vpn/l2vpntermination.html:12
|
||||||
@ -2902,7 +2902,7 @@ msgstr ""
|
|||||||
msgid "Wireless LAN"
|
msgid "Wireless LAN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/filtersets.py:1667 netbox/dcim/tables/devices.py:609
|
#: netbox/dcim/filtersets.py:1667 netbox/dcim/tables/devices.py:597
|
||||||
msgid "Wireless link"
|
msgid "Wireless link"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2957,8 +2957,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1396
|
#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1396
|
||||||
#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:486
|
#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:486
|
||||||
#: netbox/dcim/forms/object_create.py:197
|
#: netbox/dcim/forms/object_create.py:197
|
||||||
#: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:170
|
#: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:162
|
||||||
#: netbox/dcim/tables/devices.py:702 netbox/dcim/tables/devicetypes.py:242
|
#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devicetypes.py:242
|
||||||
#: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:130
|
#: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:130
|
||||||
#: netbox/templates/dcim/modulebay.html:34
|
#: netbox/templates/dcim/modulebay.html:34
|
||||||
#: netbox/templates/dcim/virtualchassis.html:66
|
#: netbox/templates/dcim/virtualchassis.html:66
|
||||||
@ -3035,8 +3035,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/filtersets.py:706 netbox/dcim/forms/filtersets.py:1426
|
#: netbox/dcim/forms/filtersets.py:706 netbox/dcim/forms/filtersets.py:1426
|
||||||
#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1015
|
#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1015
|
||||||
#: netbox/dcim/forms/model_forms.py:1454 netbox/dcim/forms/object_import.py:181
|
#: netbox/dcim/forms/model_forms.py:1454 netbox/dcim/forms/object_import.py:181
|
||||||
#: netbox/dcim/tables/devices.py:174 netbox/dcim/tables/devices.py:810
|
#: netbox/dcim/tables/devices.py:166 netbox/dcim/tables/devices.py:792
|
||||||
#: netbox/dcim/tables/devices.py:921 netbox/dcim/tables/devicetypes.py:300
|
#: netbox/dcim/tables/devices.py:903 netbox/dcim/tables/devicetypes.py:300
|
||||||
#: netbox/dcim/tables/racks.py:69 netbox/extras/filtersets.py:504
|
#: netbox/dcim/tables/racks.py:69 netbox/extras/filtersets.py:504
|
||||||
#: netbox/ipam/forms/bulk_edit.py:246 netbox/ipam/forms/bulk_edit.py:295
|
#: netbox/ipam/forms/bulk_edit.py:246 netbox/ipam/forms/bulk_edit.py:295
|
||||||
#: netbox/ipam/forms/bulk_edit.py:343 netbox/ipam/forms/bulk_edit.py:549
|
#: netbox/ipam/forms/bulk_edit.py:343 netbox/ipam/forms/bulk_edit.py:549
|
||||||
@ -3159,7 +3159,7 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/filtersets.py:954 netbox/dcim/forms/filtersets.py:1086
|
#: netbox/dcim/forms/filtersets.py:954 netbox/dcim/forms/filtersets.py:1086
|
||||||
#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248
|
#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248
|
||||||
#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:700
|
#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:700
|
||||||
#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:166
|
#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:158
|
||||||
#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148
|
#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148
|
||||||
#: netbox/ipam/forms/bulk_edit.py:465 netbox/ipam/forms/filtersets.py:442
|
#: netbox/ipam/forms/bulk_edit.py:465 netbox/ipam/forms/filtersets.py:442
|
||||||
#: netbox/ipam/forms/model_forms.py:610 netbox/templates/dcim/device.html:30
|
#: netbox/ipam/forms/model_forms.py:610 netbox/templates/dcim/device.html:30
|
||||||
@ -3193,8 +3193,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293
|
#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293
|
||||||
#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379
|
#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379
|
||||||
#: netbox/dcim/forms/model_forms.py:1020 netbox/dcim/forms/model_forms.py:1459
|
#: netbox/dcim/forms/model_forms.py:1020 netbox/dcim/forms/model_forms.py:1459
|
||||||
#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:101
|
#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:93
|
||||||
#: netbox/dcim/tables/devices.py:177 netbox/dcim/tables/devices.py:924
|
#: netbox/dcim/tables/devices.py:169 netbox/dcim/tables/devices.py:906
|
||||||
#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:304
|
#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:304
|
||||||
#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60
|
#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60
|
||||||
#: netbox/templates/dcim/devicetype.html:14
|
#: netbox/templates/dcim/devicetype.html:14
|
||||||
@ -3277,7 +3277,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:443
|
#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:443
|
||||||
#: netbox/dcim/forms/filtersets.py:725 netbox/dcim/forms/model_forms.py:394
|
#: netbox/dcim/forms/filtersets.py:725 netbox/dcim/forms/model_forms.py:394
|
||||||
#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:187
|
#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:179
|
||||||
#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:184
|
#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:184
|
||||||
#: netbox/templates/dcim/platform.html:26
|
#: netbox/templates/dcim/platform.html:26
|
||||||
#: netbox/templates/virtualization/virtualmachine.html:27
|
#: netbox/templates/virtualization/virtualmachine.html:27
|
||||||
@ -3309,13 +3309,13 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/model_forms.py:794 netbox/dcim/forms/model_forms.py:1153
|
#: netbox/dcim/forms/model_forms.py:794 netbox/dcim/forms/model_forms.py:1153
|
||||||
#: netbox/dcim/forms/model_forms.py:1608 netbox/dcim/forms/object_create.py:257
|
#: netbox/dcim/forms/model_forms.py:1608 netbox/dcim/forms/object_create.py:257
|
||||||
#: netbox/dcim/tables/connections.py:22 netbox/dcim/tables/connections.py:41
|
#: netbox/dcim/tables/connections.py:22 netbox/dcim/tables/connections.py:41
|
||||||
#: netbox/dcim/tables/connections.py:60 netbox/dcim/tables/devices.py:290
|
#: netbox/dcim/tables/connections.py:60 netbox/dcim/tables/devices.py:282
|
||||||
#: netbox/dcim/tables/devices.py:359 netbox/dcim/tables/devices.py:403
|
#: netbox/dcim/tables/devices.py:359 netbox/dcim/tables/devices.py:400
|
||||||
#: netbox/dcim/tables/devices.py:448 netbox/dcim/tables/devices.py:502
|
#: netbox/dcim/tables/devices.py:442 netbox/dcim/tables/devices.py:493
|
||||||
#: netbox/dcim/tables/devices.py:594 netbox/dcim/tables/devices.py:692
|
#: netbox/dcim/tables/devices.py:582 netbox/dcim/tables/devices.py:680
|
||||||
#: netbox/dcim/tables/devices.py:752 netbox/dcim/tables/devices.py:802
|
#: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:784
|
||||||
#: netbox/dcim/tables/devices.py:862 netbox/dcim/tables/devices.py:914
|
#: netbox/dcim/tables/devices.py:844 netbox/dcim/tables/devices.py:896
|
||||||
#: netbox/dcim/tables/devices.py:1040 netbox/dcim/tables/modules.py:52
|
#: netbox/dcim/tables/devices.py:1022 netbox/dcim/tables/modules.py:52
|
||||||
#: netbox/extras/forms/filtersets.py:330 netbox/ipam/forms/bulk_import.py:303
|
#: netbox/extras/forms/filtersets.py:330 netbox/ipam/forms/bulk_import.py:303
|
||||||
#: netbox/ipam/forms/bulk_import.py:489 netbox/ipam/forms/filtersets.py:558
|
#: netbox/ipam/forms/bulk_import.py:489 netbox/ipam/forms/filtersets.py:558
|
||||||
#: netbox/ipam/forms/model_forms.py:317 netbox/ipam/forms/model_forms.py:725
|
#: netbox/ipam/forms/model_forms.py:317 netbox/ipam/forms/model_forms.py:725
|
||||||
@ -3489,7 +3489,7 @@ msgid "Wireless role"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:609
|
#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:609
|
||||||
#: netbox/dcim/forms/model_forms.py:1168 netbox/dcim/tables/devices.py:313
|
#: netbox/dcim/forms/model_forms.py:1168 netbox/dcim/tables/devices.py:305
|
||||||
#: netbox/templates/dcim/consoleport.html:24
|
#: netbox/templates/dcim/consoleport.html:24
|
||||||
#: netbox/templates/dcim/consoleserverport.html:24
|
#: netbox/templates/dcim/consoleserverport.html:24
|
||||||
#: netbox/templates/dcim/frontport.html:24
|
#: netbox/templates/dcim/frontport.html:24
|
||||||
@ -3501,7 +3501,7 @@ msgstr ""
|
|||||||
msgid "Module"
|
msgid "Module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1313 netbox/dcim/tables/devices.py:661
|
#: netbox/dcim/forms/bulk_edit.py:1313 netbox/dcim/tables/devices.py:649
|
||||||
#: netbox/templates/dcim/interface.html:110
|
#: netbox/templates/dcim/interface.html:110
|
||||||
msgid "LAG"
|
msgid "LAG"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3513,7 +3513,7 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/bulk_edit.py:1324 netbox/dcim/forms/bulk_import.py:659
|
#: netbox/dcim/forms/bulk_edit.py:1324 netbox/dcim/forms/bulk_import.py:659
|
||||||
#: netbox/dcim/forms/bulk_import.py:685 netbox/dcim/forms/filtersets.py:1169
|
#: netbox/dcim/forms/bulk_import.py:685 netbox/dcim/forms/filtersets.py:1169
|
||||||
#: netbox/dcim/forms/filtersets.py:1191 netbox/dcim/forms/filtersets.py:1264
|
#: netbox/dcim/forms/filtersets.py:1191 netbox/dcim/forms/filtersets.py:1264
|
||||||
#: netbox/dcim/tables/devices.py:606
|
#: netbox/dcim/tables/devices.py:594
|
||||||
#: netbox/templates/circuits/inc/circuit_termination_fields.html:67
|
#: netbox/templates/circuits/inc/circuit_termination_fields.html:67
|
||||||
#: netbox/templates/dcim/consoleport.html:40
|
#: netbox/templates/dcim/consoleport.html:40
|
||||||
#: netbox/templates/dcim/consoleserverport.html:40
|
#: netbox/templates/dcim/consoleserverport.html:40
|
||||||
@ -3542,14 +3542,14 @@ msgid "VLAN group"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1369 netbox/dcim/forms/model_forms.py:1304
|
#: netbox/dcim/forms/bulk_edit.py:1369 netbox/dcim/forms/model_forms.py:1304
|
||||||
#: netbox/dcim/tables/devices.py:579
|
#: netbox/dcim/tables/devices.py:567
|
||||||
#: netbox/virtualization/forms/bulk_edit.py:248
|
#: netbox/virtualization/forms/bulk_edit.py:248
|
||||||
#: netbox/virtualization/forms/model_forms.py:326
|
#: netbox/virtualization/forms/model_forms.py:326
|
||||||
msgid "Untagged VLAN"
|
msgid "Untagged VLAN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1377 netbox/dcim/forms/model_forms.py:1313
|
#: netbox/dcim/forms/bulk_edit.py:1377 netbox/dcim/forms/model_forms.py:1313
|
||||||
#: netbox/dcim/tables/devices.py:585
|
#: netbox/dcim/tables/devices.py:573
|
||||||
#: netbox/virtualization/forms/bulk_edit.py:256
|
#: netbox/virtualization/forms/bulk_edit.py:256
|
||||||
#: netbox/virtualization/forms/model_forms.py:335
|
#: netbox/virtualization/forms/model_forms.py:335
|
||||||
msgid "Tagged VLANs"
|
msgid "Tagged VLANs"
|
||||||
@ -3560,7 +3560,7 @@ msgid "Wireless LAN group"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1291
|
#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1291
|
||||||
#: netbox/dcim/tables/devices.py:615 netbox/netbox/navigation/menu.py:133
|
#: netbox/dcim/tables/devices.py:603 netbox/netbox/navigation/menu.py:133
|
||||||
#: netbox/templates/dcim/interface.html:280
|
#: netbox/templates/dcim/interface.html:280
|
||||||
#: netbox/wireless/tables/wirelesslan.py:24
|
#: netbox/wireless/tables/wirelesslan.py:24
|
||||||
msgid "Wireless LANs"
|
msgid "Wireless LANs"
|
||||||
@ -3740,7 +3740,7 @@ msgid "Virtual chassis"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/bulk_import.py:462 netbox/dcim/forms/model_forms.py:465
|
#: netbox/dcim/forms/bulk_import.py:462 netbox/dcim/forms/model_forms.py:465
|
||||||
#: netbox/dcim/tables/devices.py:207 netbox/extras/filtersets.py:548
|
#: netbox/dcim/tables/devices.py:199 netbox/extras/filtersets.py:548
|
||||||
#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:479
|
#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:479
|
||||||
#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459
|
#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459
|
||||||
#: netbox/ipam/forms/model_forms.py:627 netbox/templates/dcim/device.html:232
|
#: netbox/ipam/forms/model_forms.py:627 netbox/templates/dcim/device.html:232
|
||||||
@ -3935,7 +3935,7 @@ msgstr ""
|
|||||||
msgid "Physical medium classification"
|
msgid "Physical medium classification"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/bulk_import.py:973 netbox/dcim/tables/devices.py:823
|
#: netbox/dcim/forms/bulk_import.py:973 netbox/dcim/tables/devices.py:805
|
||||||
msgid "Installed device"
|
msgid "Installed device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4024,7 +4024,7 @@ msgid "{side_upper} side termination not found: {device} {name}"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/bulk_import.py:1244 netbox/dcim/forms/model_forms.py:730
|
#: netbox/dcim/forms/bulk_import.py:1244 netbox/dcim/forms/model_forms.py:730
|
||||||
#: netbox/dcim/tables/devices.py:1010 netbox/templates/dcim/device.html:131
|
#: netbox/dcim/tables/devices.py:992 netbox/templates/dcim/device.html:131
|
||||||
#: netbox/templates/dcim/virtualchassis.html:27
|
#: netbox/templates/dcim/virtualchassis.html:27
|
||||||
#: netbox/templates/dcim/virtualchassis.html:67
|
#: netbox/templates/dcim/virtualchassis.html:67
|
||||||
msgid "Master"
|
msgid "Master"
|
||||||
@ -4172,7 +4172,7 @@ msgid "Connection"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/filtersets.py:1254 netbox/extras/forms/bulk_edit.py:316
|
#: netbox/dcim/forms/filtersets.py:1254 netbox/extras/forms/bulk_edit.py:316
|
||||||
#: netbox/extras/forms/bulk_import.py:242 netbox/extras/forms/filtersets.py:476
|
#: netbox/extras/forms/bulk_import.py:242 netbox/extras/forms/filtersets.py:473
|
||||||
#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:512
|
#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:512
|
||||||
#: netbox/templates/extras/journalentry.html:30
|
#: netbox/templates/extras/journalentry.html:30
|
||||||
msgid "Kind"
|
msgid "Kind"
|
||||||
@ -4205,7 +4205,7 @@ msgid "Transmit power (dBm)"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/filtersets.py:1350 netbox/dcim/forms/filtersets.py:1372
|
#: netbox/dcim/forms/filtersets.py:1350 netbox/dcim/forms/filtersets.py:1372
|
||||||
#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12
|
#: netbox/dcim/tables/devices.py:316 netbox/templates/dcim/cable.html:12
|
||||||
#: netbox/templates/dcim/cable_trace.html:46
|
#: netbox/templates/dcim/cable_trace.html:46
|
||||||
#: netbox/templates/dcim/frontport.html:77
|
#: netbox/templates/dcim/frontport.html:77
|
||||||
#: netbox/templates/dcim/htmx/cable_edit.html:50
|
#: netbox/templates/dcim/htmx/cable_edit.html:50
|
||||||
@ -4215,7 +4215,7 @@ msgstr ""
|
|||||||
msgid "Cable"
|
msgid "Cable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/filtersets.py:1442 netbox/dcim/tables/devices.py:933
|
#: netbox/dcim/forms/filtersets.py:1442 netbox/dcim/tables/devices.py:915
|
||||||
msgid "Discovered"
|
msgid "Discovered"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4381,7 +4381,7 @@ msgid "Front Port"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531
|
#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531
|
||||||
#: netbox/dcim/tables/devices.py:705
|
#: netbox/dcim/tables/devices.py:693
|
||||||
#: netbox/templates/circuits/inc/circuit_termination_fields.html:53
|
#: netbox/templates/circuits/inc/circuit_termination_fields.html:53
|
||||||
#: netbox/templates/dcim/consoleport.html:79
|
#: netbox/templates/dcim/consoleport.html:79
|
||||||
#: netbox/templates/dcim/consoleserverport.html:80
|
#: netbox/templates/dcim/consoleserverport.html:80
|
||||||
@ -4394,7 +4394,7 @@ msgid "Rear Port"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532
|
#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532
|
||||||
#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509
|
#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:500
|
||||||
#: netbox/templates/dcim/poweroutlet.html:44
|
#: netbox/templates/dcim/poweroutlet.html:44
|
||||||
#: netbox/templates/dcim/powerport.html:17
|
#: netbox/templates/dcim/powerport.html:17
|
||||||
msgid "Power Port"
|
msgid "Power Port"
|
||||||
@ -4481,7 +4481,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/object_create.py:110
|
#: netbox/dcim/forms/object_create.py:110
|
||||||
#: netbox/dcim/forms/object_create.py:271 netbox/dcim/tables/devices.py:257
|
#: netbox/dcim/forms/object_create.py:271 netbox/dcim/tables/devices.py:249
|
||||||
msgid "Rear ports"
|
msgid "Rear ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4511,7 +4511,7 @@ msgid ""
|
|||||||
"selected number of rear port positions ({rearport_count})."
|
"selected number of rear port positions ({rearport_count})."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1016
|
#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:998
|
||||||
#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53
|
#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53
|
||||||
#: netbox/templates/dcim/virtualchassis_edit.html:47
|
#: netbox/templates/dcim/virtualchassis_edit.html:47
|
||||||
#: netbox/templates/ipam/fhrpgroup.html:38
|
#: netbox/templates/ipam/fhrpgroup.html:38
|
||||||
@ -5968,7 +5968,7 @@ msgstr ""
|
|||||||
msgid "Reachable"
|
msgid "Reachable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:66 netbox/dcim/tables/devices.py:111
|
#: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:103
|
||||||
#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:143
|
#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:143
|
||||||
#: netbox/extras/tables/tables.py:435 netbox/netbox/navigation/menu.py:56
|
#: netbox/extras/tables/tables.py:435 netbox/netbox/navigation/menu.py:56
|
||||||
#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62
|
#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62
|
||||||
@ -5978,12 +5978,12 @@ msgstr ""
|
|||||||
msgid "Devices"
|
msgid "Devices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:71 netbox/dcim/tables/devices.py:116
|
#: netbox/dcim/tables/devices.py:63 netbox/dcim/tables/devices.py:108
|
||||||
#: netbox/virtualization/tables/clusters.py:88
|
#: netbox/virtualization/tables/clusters.py:88
|
||||||
msgid "VMs"
|
msgid "VMs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:105 netbox/dcim/tables/devices.py:221
|
#: netbox/dcim/tables/devices.py:97 netbox/dcim/tables/devices.py:213
|
||||||
#: netbox/extras/forms/model_forms.py:506 netbox/templates/dcim/device.html:112
|
#: netbox/extras/forms/model_forms.py:506 netbox/templates/dcim/device.html:112
|
||||||
#: netbox/templates/dcim/device/render_config.html:11
|
#: netbox/templates/dcim/device/render_config.html:11
|
||||||
#: netbox/templates/dcim/device/render_config.html:14
|
#: netbox/templates/dcim/device/render_config.html:14
|
||||||
@ -5997,11 +5997,11 @@ msgstr ""
|
|||||||
msgid "Config Template"
|
msgid "Config Template"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:155 netbox/templates/dcim/sitegroup.html:26
|
#: netbox/dcim/tables/devices.py:147 netbox/templates/dcim/sitegroup.html:26
|
||||||
msgid "Site Group"
|
msgid "Site Group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:192 netbox/dcim/tables/devices.py:1051
|
#: netbox/dcim/tables/devices.py:184 netbox/dcim/tables/devices.py:1033
|
||||||
#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:304
|
#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:304
|
||||||
#: netbox/ipam/forms/model_forms.py:313 netbox/ipam/tables/ip.py:352
|
#: netbox/ipam/forms/model_forms.py:313 netbox/ipam/tables/ip.py:352
|
||||||
#: netbox/ipam/tables/ip.py:418 netbox/ipam/tables/ip.py:441
|
#: netbox/ipam/tables/ip.py:418 netbox/ipam/tables/ip.py:441
|
||||||
@ -6010,50 +6010,50 @@ msgstr ""
|
|||||||
msgid "IP Address"
|
msgid "IP Address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:196 netbox/dcim/tables/devices.py:1055
|
#: netbox/dcim/tables/devices.py:188 netbox/dcim/tables/devices.py:1037
|
||||||
#: netbox/virtualization/tables/virtualmachines.py:85
|
#: netbox/virtualization/tables/virtualmachines.py:85
|
||||||
msgid "IPv4 Address"
|
msgid "IPv4 Address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:200 netbox/dcim/tables/devices.py:1059
|
#: netbox/dcim/tables/devices.py:192 netbox/dcim/tables/devices.py:1041
|
||||||
#: netbox/virtualization/tables/virtualmachines.py:89
|
#: netbox/virtualization/tables/virtualmachines.py:89
|
||||||
msgid "IPv6 Address"
|
msgid "IPv6 Address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:215
|
#: netbox/dcim/tables/devices.py:207
|
||||||
msgid "VC Position"
|
msgid "VC Position"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:218
|
#: netbox/dcim/tables/devices.py:210
|
||||||
msgid "VC Priority"
|
msgid "VC Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:225 netbox/templates/dcim/device_edit.html:38
|
#: netbox/dcim/tables/devices.py:217 netbox/templates/dcim/device_edit.html:38
|
||||||
#: netbox/templates/dcim/devicebay_populate.html:16
|
#: netbox/templates/dcim/devicebay_populate.html:16
|
||||||
msgid "Parent Device"
|
msgid "Parent Device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:230
|
#: netbox/dcim/tables/devices.py:222
|
||||||
msgid "Position (Device Bay)"
|
msgid "Position (Device Bay)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:239
|
#: netbox/dcim/tables/devices.py:231
|
||||||
msgid "Console ports"
|
msgid "Console ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:242
|
#: netbox/dcim/tables/devices.py:234
|
||||||
msgid "Console server ports"
|
msgid "Console server ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:245
|
#: netbox/dcim/tables/devices.py:237
|
||||||
msgid "Power ports"
|
msgid "Power ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:248
|
#: netbox/dcim/tables/devices.py:240
|
||||||
msgid "Power outlets"
|
msgid "Power outlets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:251 netbox/dcim/tables/devices.py:1064
|
#: netbox/dcim/tables/devices.py:243 netbox/dcim/tables/devices.py:1046
|
||||||
#: netbox/dcim/tables/devicetypes.py:125 netbox/dcim/views.py:1006
|
#: netbox/dcim/tables/devicetypes.py:125 netbox/dcim/views.py:1006
|
||||||
#: netbox/dcim/views.py:1245 netbox/dcim/views.py:1931
|
#: netbox/dcim/views.py:1245 netbox/dcim/views.py:1931
|
||||||
#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237
|
#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237
|
||||||
@ -6071,28 +6071,28 @@ msgstr ""
|
|||||||
msgid "Interfaces"
|
msgid "Interfaces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:254
|
#: netbox/dcim/tables/devices.py:246
|
||||||
msgid "Front ports"
|
msgid "Front ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:260
|
#: netbox/dcim/tables/devices.py:252
|
||||||
msgid "Device bays"
|
msgid "Device bays"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:263
|
#: netbox/dcim/tables/devices.py:255
|
||||||
msgid "Module bays"
|
msgid "Module bays"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:266
|
#: netbox/dcim/tables/devices.py:258
|
||||||
msgid "Inventory items"
|
msgid "Inventory items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:305 netbox/dcim/tables/modules.py:56
|
#: netbox/dcim/tables/devices.py:297 netbox/dcim/tables/modules.py:56
|
||||||
#: netbox/templates/dcim/modulebay.html:17
|
#: netbox/templates/dcim/modulebay.html:17
|
||||||
msgid "Module Bay"
|
msgid "Module Bay"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48
|
#: netbox/dcim/tables/devices.py:310 netbox/dcim/tables/devicetypes.py:48
|
||||||
#: netbox/dcim/tables/devicetypes.py:140 netbox/dcim/views.py:1081
|
#: netbox/dcim/tables/devicetypes.py:140 netbox/dcim/views.py:1081
|
||||||
#: netbox/dcim/views.py:2024 netbox/netbox/navigation/menu.py:90
|
#: netbox/dcim/views.py:2024 netbox/netbox/navigation/menu.py:90
|
||||||
#: netbox/templates/dcim/device/base.html:52
|
#: netbox/templates/dcim/device/base.html:52
|
||||||
@ -6103,27 +6103,27 @@ msgstr ""
|
|||||||
msgid "Inventory Items"
|
msgid "Inventory Items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:330
|
#: netbox/dcim/tables/devices.py:322
|
||||||
msgid "Cable Color"
|
msgid "Cable Color"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:336
|
#: netbox/dcim/tables/devices.py:328
|
||||||
msgid "Link Peers"
|
msgid "Link Peers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:339
|
#: netbox/dcim/tables/devices.py:331
|
||||||
msgid "Mark Connected"
|
msgid "Mark Connected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:455
|
#: netbox/dcim/tables/devices.py:449
|
||||||
msgid "Maximum draw (W)"
|
msgid "Maximum draw (W)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:458
|
#: netbox/dcim/tables/devices.py:452
|
||||||
msgid "Allocated draw (W)"
|
msgid "Allocated draw (W)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:747
|
#: netbox/dcim/tables/devices.py:546 netbox/ipam/forms/model_forms.py:747
|
||||||
#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:602
|
#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:602
|
||||||
#: netbox/ipam/views.py:701 netbox/netbox/navigation/menu.py:145
|
#: netbox/ipam/views.py:701 netbox/netbox/navigation/menu.py:145
|
||||||
#: netbox/netbox/navigation/menu.py:147
|
#: netbox/netbox/navigation/menu.py:147
|
||||||
@ -6135,12 +6135,12 @@ msgstr ""
|
|||||||
msgid "IP Addresses"
|
msgid "IP Addresses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:189
|
#: netbox/dcim/tables/devices.py:552 netbox/netbox/navigation/menu.py:189
|
||||||
#: netbox/templates/ipam/inc/panels/fhrp_groups.html:6
|
#: netbox/templates/ipam/inc/panels/fhrp_groups.html:6
|
||||||
msgid "FHRP Groups"
|
msgid "FHRP Groups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89
|
#: netbox/dcim/tables/devices.py:564 netbox/templates/dcim/interface.html:89
|
||||||
#: netbox/templates/virtualization/vminterface.html:67
|
#: netbox/templates/virtualization/vminterface.html:67
|
||||||
#: netbox/templates/vpn/tunnel.html:18
|
#: netbox/templates/vpn/tunnel.html:18
|
||||||
#: netbox/templates/vpn/tunneltermination.html:13
|
#: netbox/templates/vpn/tunneltermination.html:13
|
||||||
@ -6151,37 +6151,37 @@ msgstr ""
|
|||||||
msgid "Tunnel"
|
msgid "Tunnel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:224
|
#: netbox/dcim/tables/devices.py:589 netbox/dcim/tables/devicetypes.py:224
|
||||||
#: netbox/templates/dcim/interface.html:65
|
#: netbox/templates/dcim/interface.html:65
|
||||||
msgid "Management Only"
|
msgid "Management Only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:619
|
#: netbox/dcim/tables/devices.py:607
|
||||||
msgid "VDCs"
|
msgid "VDCs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:870 netbox/templates/dcim/modulebay.html:49
|
#: netbox/dcim/tables/devices.py:852 netbox/templates/dcim/modulebay.html:49
|
||||||
msgid "Installed Module"
|
msgid "Installed Module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:873
|
#: netbox/dcim/tables/devices.py:855
|
||||||
msgid "Module Serial"
|
msgid "Module Serial"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:877
|
#: netbox/dcim/tables/devices.py:859
|
||||||
msgid "Module Asset Tag"
|
msgid "Module Asset Tag"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:886
|
#: netbox/dcim/tables/devices.py:868
|
||||||
msgid "Module Status"
|
msgid "Module Status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:928 netbox/dcim/tables/devicetypes.py:308
|
#: netbox/dcim/tables/devices.py:910 netbox/dcim/tables/devicetypes.py:308
|
||||||
#: netbox/templates/dcim/inventoryitem.html:40
|
#: netbox/templates/dcim/inventoryitem.html:40
|
||||||
msgid "Component"
|
msgid "Component"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/tables/devices.py:983
|
#: netbox/dcim/tables/devices.py:965
|
||||||
msgid "Items"
|
msgid "Items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -6674,14 +6674,12 @@ msgstr ""
|
|||||||
msgid "Ruleset must be a dictionary, not {ruleset}."
|
msgid "Ruleset must be a dictionary, not {ruleset}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/conditions.py:139
|
#: netbox/extras/conditions.py:142
|
||||||
#, python-brace-format
|
msgid "Invalid logic type: must be 'AND' or 'OR'. Please check documentation."
|
||||||
msgid "Ruleset must have exactly one logical operator (found {ruleset})"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/conditions.py:145
|
#: netbox/extras/conditions.py:154
|
||||||
#, python-brace-format
|
msgid "Incorrect key(s) informed. Please check documentation."
|
||||||
msgid "Invalid logic type: {logic} (must be '{op_and}' or '{op_or}')"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/dashboard/forms.py:38
|
#: netbox/extras/dashboard/forms.py:38
|
||||||
@ -6770,12 +6768,12 @@ msgstr ""
|
|||||||
msgid "Show your personal bookmarks"
|
msgid "Show your personal bookmarks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/events.py:128
|
#: netbox/extras/events.py:134
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Unknown action type for an event rule: {action_type}"
|
msgid "Unknown action type for an event rule: {action_type}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/events.py:176
|
#: netbox/extras/events.py:182
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Cannot import events pipeline {name} error: {error}"
|
msgid "Cannot import events pipeline {name} error: {error}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -7144,23 +7142,23 @@ msgstr ""
|
|||||||
msgid "Tenant groups"
|
msgid "Tenant groups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:492
|
#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489
|
||||||
msgid "After"
|
msgid "After"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:497
|
#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494
|
||||||
msgid "Before"
|
msgid "Before"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/forms/filtersets.py:487 netbox/extras/tables/tables.py:456
|
#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:456
|
||||||
#: netbox/extras/tables/tables.py:542 netbox/extras/tables/tables.py:567
|
#: netbox/extras/tables/tables.py:542 netbox/extras/tables/tables.py:567
|
||||||
#: netbox/templates/extras/objectchange.html:31
|
#: netbox/templates/extras/objectchange.html:32
|
||||||
msgid "Time"
|
msgid "Time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/forms/filtersets.py:501 netbox/extras/forms/model_forms.py:282
|
#: netbox/extras/forms/filtersets.py:498 netbox/extras/forms/model_forms.py:282
|
||||||
#: netbox/extras/tables/tables.py:470 netbox/templates/extras/eventrule.html:77
|
#: netbox/extras/tables/tables.py:470 netbox/templates/extras/eventrule.html:77
|
||||||
#: netbox/templates/extras/objectchange.html:45
|
#: netbox/templates/extras/objectchange.html:46
|
||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8156,7 +8154,7 @@ msgstr ""
|
|||||||
msgid "Database changes have been reverted due to error."
|
msgid "Database changes have been reverted due to error."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/signals.py:146
|
#: netbox/extras/signals.py:133
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Deletion is prevented by a protection rule: {message}"
|
msgid "Deletion is prevented by a protection rule: {message}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -8256,7 +8254,7 @@ msgid "Full Name"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/extras/tables/tables.py:483
|
#: netbox/extras/tables/tables.py:483
|
||||||
#: netbox/templates/extras/objectchange.html:67
|
#: netbox/templates/extras/objectchange.html:68
|
||||||
msgid "Request ID"
|
msgid "Request ID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8937,7 +8935,7 @@ msgstr ""
|
|||||||
#: netbox/virtualization/forms/filtersets.py:238
|
#: netbox/virtualization/forms/filtersets.py:238
|
||||||
#: netbox/virtualization/forms/model_forms.py:220
|
#: netbox/virtualization/forms/model_forms.py:220
|
||||||
#: netbox/virtualization/tables/virtualmachines.py:128
|
#: netbox/virtualization/tables/virtualmachines.py:128
|
||||||
#: netbox/virtualization/tables/virtualmachines.py:181 netbox/vpn/choices.py:45
|
#: netbox/virtualization/tables/virtualmachines.py:183 netbox/vpn/choices.py:45
|
||||||
#: netbox/vpn/forms/filtersets.py:293 netbox/vpn/forms/model_forms.py:160
|
#: 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:171 netbox/vpn/forms/model_forms.py:273
|
||||||
#: netbox/vpn/forms/model_forms.py:454
|
#: netbox/vpn/forms/model_forms.py:454
|
||||||
@ -10275,7 +10273,7 @@ msgid "Journal Entries"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/navigation/menu.py:359
|
#: netbox/netbox/navigation/menu.py:359
|
||||||
#: netbox/templates/extras/objectchange.html:8
|
#: netbox/templates/extras/objectchange.html:9
|
||||||
#: netbox/templates/extras/objectchange_list.html:4
|
#: netbox/templates/extras/objectchange_list.html:4
|
||||||
msgid "Change Log"
|
msgid "Change Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -10452,43 +10450,43 @@ msgstr ""
|
|||||||
msgid "Cannot delete stores from registry"
|
msgid "Cannot delete stores from registry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/settings.py:722
|
#: netbox/netbox/settings.py:724
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/settings.py:723
|
#: netbox/netbox/settings.py:725
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/settings.py:724
|
#: netbox/netbox/settings.py:726
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/settings.py:725
|
#: netbox/netbox/settings.py:727
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/settings.py:726
|
#: netbox/netbox/settings.py:728
|
||||||
msgid "Japanese"
|
msgid "Japanese"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/settings.py:727
|
#: netbox/netbox/settings.py:729
|
||||||
msgid "Portuguese"
|
msgid "Portuguese"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/settings.py:728
|
#: netbox/netbox/settings.py:730
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/settings.py:729
|
#: netbox/netbox/settings.py:731
|
||||||
msgid "Turkish"
|
msgid "Turkish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/settings.py:730
|
#: netbox/netbox/settings.py:732
|
||||||
msgid "Ukrainian"
|
msgid "Ukrainian"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/settings.py:731
|
#: netbox/netbox/settings.py:733
|
||||||
msgid "Chinese"
|
msgid "Chinese"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10734,8 +10732,8 @@ msgstr ""
|
|||||||
#: netbox/templates/extras/configcontext.html:70
|
#: netbox/templates/extras/configcontext.html:70
|
||||||
#: netbox/templates/extras/eventrule.html:72
|
#: netbox/templates/extras/eventrule.html:72
|
||||||
#: netbox/templates/extras/htmx/script_result.html:56
|
#: netbox/templates/extras/htmx/script_result.html:56
|
||||||
#: netbox/templates/extras/objectchange.html:123
|
#: netbox/templates/extras/objectchange.html:124
|
||||||
#: netbox/templates/extras/objectchange.html:141
|
#: netbox/templates/extras/objectchange.html:142
|
||||||
#: netbox/templates/extras/webhook.html:67
|
#: netbox/templates/extras/webhook.html:67
|
||||||
#: netbox/templates/extras/webhook.html:79
|
#: netbox/templates/extras/webhook.html:79
|
||||||
#: netbox/templates/inc/panel_table.html:13
|
#: netbox/templates/inc/panel_table.html:13
|
||||||
@ -12308,48 +12306,48 @@ msgstr ""
|
|||||||
msgid "New Journal Entry"
|
msgid "New Journal Entry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:28
|
#: netbox/templates/extras/objectchange.html:29
|
||||||
#: netbox/templates/users/objectpermission.html:42
|
#: netbox/templates/users/objectpermission.html:42
|
||||||
msgid "Change"
|
msgid "Change"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:78
|
#: netbox/templates/extras/objectchange.html:79
|
||||||
msgid "Difference"
|
msgid "Difference"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:81
|
#: netbox/templates/extras/objectchange.html:82
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:84
|
#: netbox/templates/extras/objectchange.html:85
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:92
|
#: netbox/templates/extras/objectchange.html:93
|
||||||
msgid "Object Created"
|
msgid "Object Created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:94
|
#: netbox/templates/extras/objectchange.html:95
|
||||||
msgid "Object Deleted"
|
msgid "Object Deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:96
|
#: netbox/templates/extras/objectchange.html:97
|
||||||
msgid "No Changes"
|
msgid "No Changes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:110
|
#: netbox/templates/extras/objectchange.html:111
|
||||||
msgid "Pre-Change Data"
|
msgid "Pre-Change Data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:121
|
#: netbox/templates/extras/objectchange.html:122
|
||||||
msgid "Warning: Comparing non-atomic change to previous change record"
|
msgid "Warning: Comparing non-atomic change to previous change record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:130
|
#: netbox/templates/extras/objectchange.html:131
|
||||||
msgid "Post-Change Data"
|
msgid "Post-Change Data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/extras/objectchange.html:153
|
#: netbox/templates/extras/objectchange.html:162
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "See All %(count)s Changes"
|
msgid "See All %(count)s Changes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@
|
|||||||
<i class="mdi mdi-download"></i> {% trans "Export" %}
|
<i class="mdi mdi-download"></i> {% trans "Export" %}
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu dropdown-menu-end">
|
<ul class="dropdown-menu dropdown-menu-end">
|
||||||
<li><a class="dropdown-item" href="?{% if url_params %}{{ url_params }}&{% endif %}export=table">{% trans "Current View" %}</a></li>
|
<li><a id="export_current_view" class="dropdown-item" href="?{% if url_params %}{{ url_params }}&{% endif %}export=table">{% trans "Current View" %}</a></li>
|
||||||
<li><a class="dropdown-item" href="?{% if url_params %}{{ url_params }}&{% endif %}export">{% trans "All Data" %} ({{ data_format }})</a></li>
|
<li><a class="dropdown-item" href="?{% if url_params %}{{ url_params }}&{% endif %}export">{% trans "All Data" %} ({{ data_format }})</a></li>
|
||||||
{% if export_templates %}
|
{% if export_templates %}
|
||||||
<li>
|
<li>
|
||||||
|
@ -1,14 +1,9 @@
|
|||||||
import datetime
|
|
||||||
import json
|
import json
|
||||||
from typing import Dict, Any
|
from typing import Dict, Any
|
||||||
from urllib.parse import quote
|
from urllib.parse import quote
|
||||||
|
|
||||||
from django import template
|
from django import template
|
||||||
from django.conf import settings
|
|
||||||
from django.template.defaultfilters import date
|
|
||||||
from django.urls import NoReverseMatch, reverse
|
from django.urls import NoReverseMatch, reverse
|
||||||
from django.utils import timezone
|
|
||||||
from django.utils.safestring import mark_safe
|
|
||||||
|
|
||||||
from core.models import ObjectType
|
from core.models import ObjectType
|
||||||
from utilities.forms import get_selected_values, TableConfigForm
|
from utilities.forms import get_selected_values, TableConfigForm
|
||||||
@ -92,15 +87,22 @@ def humanize_speed(speed):
|
|||||||
@register.filter()
|
@register.filter()
|
||||||
def humanize_megabytes(mb):
|
def humanize_megabytes(mb):
|
||||||
"""
|
"""
|
||||||
Express a number of megabytes in the most suitable unit (e.g. gigabytes or terabytes).
|
Express a number of megabytes in the most suitable unit (e.g. gigabytes, terabytes, etc.).
|
||||||
"""
|
"""
|
||||||
if not mb:
|
if not mb:
|
||||||
return ''
|
return ""
|
||||||
if not mb % 1048576: # 1024^2
|
|
||||||
return f'{int(mb / 1048576)} TB'
|
PB_SIZE = 1000000000
|
||||||
if not mb % 1024:
|
TB_SIZE = 1000000
|
||||||
return f'{int(mb / 1024)} GB'
|
GB_SIZE = 1000
|
||||||
return f'{mb} MB'
|
|
||||||
|
if mb >= PB_SIZE:
|
||||||
|
return f"{mb / PB_SIZE:.2f} PB"
|
||||||
|
if mb >= TB_SIZE:
|
||||||
|
return f"{mb / TB_SIZE:.2f} TB"
|
||||||
|
if mb >= GB_SIZE:
|
||||||
|
return f"{mb / GB_SIZE:.2f} GB"
|
||||||
|
return f"{mb} MB"
|
||||||
|
|
||||||
|
|
||||||
@register.filter()
|
@register.filter()
|
||||||
|
@ -493,10 +493,18 @@ class APIViewTestCases:
|
|||||||
|
|
||||||
def _build_filtered_query(self, name, **filters):
|
def _build_filtered_query(self, name, **filters):
|
||||||
"""
|
"""
|
||||||
Create a filtered query: i.e. ip_address_list(filters: {address: "1.1.1.1/24"}){.
|
Create a filtered query: i.e. device_list(filters: {name: {i_contains: "akron"}}){.
|
||||||
"""
|
"""
|
||||||
|
# TODO: This should be extended to support AND, OR multi-lookups
|
||||||
if filters:
|
if filters:
|
||||||
filter_string = ', '.join(f'{k}: "{v}"' for k, v in filters.items())
|
for field_name, params in filters.items():
|
||||||
|
lookup = params['lookup']
|
||||||
|
value = params['value']
|
||||||
|
if lookup:
|
||||||
|
query = f'{{{lookup}: "{value}"}}'
|
||||||
|
filter_string = f'{field_name}: {query}'
|
||||||
|
else:
|
||||||
|
filter_string = f'{field_name}: "{value}"'
|
||||||
filter_string = f'(filters: {{{filter_string}}})'
|
filter_string = f'(filters: {{{filter_string}}})'
|
||||||
else:
|
else:
|
||||||
filter_string = ''
|
filter_string = ''
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
Django==5.0.6
|
Django==5.0.6
|
||||||
django-cors-headers==4.3.1
|
django-cors-headers==4.3.1
|
||||||
django-debug-toolbar==4.3.0
|
django-debug-toolbar==4.4.2
|
||||||
django-filter==24.2
|
django-filter==24.2
|
||||||
django-htmx==1.17.3
|
django-htmx==1.17.3
|
||||||
django-graphiql-debug-toolbar==0.2.0
|
django-graphiql-debug-toolbar==0.2.0
|
||||||
@ -15,23 +15,23 @@ django-tables2==2.7.0
|
|||||||
django-timezone-field==6.1.0
|
django-timezone-field==6.1.0
|
||||||
djangorestframework==3.15.1
|
djangorestframework==3.15.1
|
||||||
drf-spectacular==0.27.2
|
drf-spectacular==0.27.2
|
||||||
drf-spectacular-sidecar==2024.5.1
|
drf-spectacular-sidecar==2024.6.1
|
||||||
feedparser==6.0.11
|
feedparser==6.0.11
|
||||||
gunicorn==22.0.0
|
gunicorn==22.0.0
|
||||||
Jinja2==3.1.4
|
Jinja2==3.1.4
|
||||||
Markdown==3.6
|
Markdown==3.6
|
||||||
mkdocs-material==9.5.24
|
mkdocs-material==9.5.26
|
||||||
mkdocstrings[python-legacy]==0.25.1
|
mkdocstrings[python-legacy]==0.25.1
|
||||||
netaddr==1.2.1
|
netaddr==1.3.0
|
||||||
nh3==0.2.17
|
nh3==0.2.17
|
||||||
Pillow==10.3.0
|
Pillow==10.3.0
|
||||||
psycopg[c,pool]==3.1.19
|
psycopg[c,pool]==3.1.19
|
||||||
PyYAML==6.0.1
|
PyYAML==6.0.1
|
||||||
requests==2.32.2
|
requests==2.32.3
|
||||||
social-auth-app-django==5.4.1
|
social-auth-app-django==5.4.1
|
||||||
social-auth-core==4.5.4
|
social-auth-core==4.5.4
|
||||||
strawberry-graphql==0.230.0
|
strawberry-graphql==0.234.0
|
||||||
strawberry-graphql-django==0.40.0
|
strawberry-graphql-django==0.42.0
|
||||||
svgwrite==1.4.3
|
svgwrite==1.4.3
|
||||||
tablib==3.6.1
|
tablib==3.6.1
|
||||||
tzdata==2024.1
|
tzdata==2024.1
|
||||||
|
Loading…
Reference in New Issue
Block a user