diff --git a/.github/workflows/auto-assign-issue.yml b/.github/workflows/auto-assign-issue.yml index e32e23c84..309f79800 100644 --- a/.github/workflows/auto-assign-issue.yml +++ b/.github/workflows/auto-assign-issue.yml @@ -12,10 +12,10 @@ jobs: auto-assign: runs-on: ubuntu-latest steps: - - uses: pozil/auto-assign-issue@v1 + - uses: pozil/auto-assign-issue@v2 if: "contains(github.event.issue.labels.*.name, 'status: needs triage')" with: # Weighted assignments - assignees: arthanson:3, jeffgdotorg:3, jeremystretch:3, abhi1693, DanSheps + assignees: arthanson:3, jeffgdotorg:3, jeremystretch:3, DanSheps numOfAssignee: 1 abortIfPreviousAssignees: true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d794786f1..a84359bf9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,18 @@ name: CI -on: [push, pull_request] + +on: + push: + paths-ignore: + - 'contrib/**' + - 'docs/**' + pull_request: + paths-ignore: + - 'contrib/**' + - 'docs/**' + permissions: contents: read + jobs: build: runs-on: ubuntu-latest @@ -34,12 +45,12 @@ jobs: uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} @@ -47,7 +58,7 @@ jobs: run: npm install -g yarn - name: Setup Node.js with Yarn Caching - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: yarn diff --git a/.github/workflows/update-translation-strings.yml b/.github/workflows/update-translation-strings.yml new file mode 100644 index 000000000..bcd68c887 --- /dev/null +++ b/.github/workflows/update-translation-strings.yml @@ -0,0 +1,45 @@ +name: Update translation strings + +on: + schedule: + - cron: '0 5 * * *' + workflow_dispatch: + +permissions: + contents: write + +env: + LOCALE: "en" + +jobs: + makemessages: + runs-on: ubuntu-latest + env: + NETBOX_CONFIGURATION: netbox.configuration_testing + + steps: + - name: Check out repo + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: 3.11 + + - name: Install system dependencies + run: sudo apt install -y gettext + + - name: Install Python dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run makemessages + run: python netbox/manage.py makemessages -l ${{ env.LOCALE }} + + - name: Commit changes + uses: EndBug/add-and-commit@v9 + with: + add: 'netbox/translations/' + default_author: github_actions + message: 'Update source translation strings' diff --git a/docs/development/release-checklist.md b/docs/development/release-checklist.md index 875b2b869..4f6e2f25f 100644 --- a/docs/development/release-checklist.md +++ b/docs/development/release-checklist.md @@ -86,15 +86,7 @@ This will automatically update the schema file at `contrib/generated_schema.json ### Update & Compile Translations -Log into [Transifex](https://app.transifex.com/netbox-community/netbox/dashboard/) to download the updated string maps. Download the resource (portable object, or `.po`) file for each language and save them to `netbox/translations/$lang/LC_MESSAGES/django.po`, overwriting the current files. (Be sure to click the **Download for use** link.) - - - -Once the resource files for all languages have been updated, compile the machine object (`.mo`) files using the `compilemessages` management command: - -```nohighlight -./manage.py compilemessages -``` +Updated language translations should be pulled from [Transifex](https://app.transifex.com/netbox-community/netbox/dashboard/) and re-compiled for each new release. Follow the documented process for [updating translated strings](./translations.md#updating-translated-strings) to do this. ### Update Version and Changelog diff --git a/docs/development/translations.md b/docs/development/translations.md index e40f996c5..b23e89d71 100644 --- a/docs/development/translations.md +++ b/docs/development/translations.md @@ -6,17 +6,38 @@ All language translations in NetBox are generated from the source file found at Reviewers log into Transifex and navigate to their designated language(s) to translate strings. The initial translation for most strings will be machine-generated via the AWS Translate service. Human reviewers are responsible for reviewing these translations and making corrections where necessary. -Immediately prior to each NetBox release, the translation maps for all completed languages will be downloaded from Transifex, compiled, and checked into the NetBox code base by a maintainer. - ## Updating Translation Sources -To update the English `.po` file from which all translations are derived, use the `makemessages` management command: +To update the English `.po` file from which all translations are derived, use the `makemessages` management command (ignoring the `project-static/` directory): ```nohighlight -./manage.py makemessages -l en +./manage.py makemessages -l en -i "project-static/*" ``` -Then, commit the change and push to the `develop` branch on GitHub. After some time, any new strings will appear for translation on Transifex automatically. +Then, commit the change and push to the `develop` branch on GitHub. Any new strings will appear for translation on Transifex automatically. + +## Updating Translated Strings + +Typically, translated strings need to be updated only as part of the NetBox [release process](./release-checklist.md). + +To update translated strings, start by initiating a sync from Transifex. From the Transifex dashboard, navigate to Settings > Integrations > GitHub > Manage, and click the **Manual Sync** button at top right. + + + +Enter a threshold percentage of 1 (to ensure all translations are captured) and select the `develop` branch, then click **Sync**. This will initiate a pull request to GitHub to update any newly modified translation (`.po`) files. + +!!! tip + The new PR should appear within a few minutes. If it does not, check that there are in fact new translations to be added. + + + +Once the PR has been merged, the updated strings need to be compiled into new `.mo` files so they can be used by the application. Update the `develop` branch locally to pull in the changes from the Transifex PR, then run Django's [`compilemessages`](https://docs.djangoproject.com/en/stable/ref/django-admin/#django-admin-compilemessages) management command: + +```nohighlight +./manage.py compilemessages +``` + +Once any new `.mo` files have been generated, they need to be committed and pushed back up to GitHub. (Again, this is typically done as part of publishing a new NetBox release.) ## Proposing New Languages diff --git a/docs/media/development/transifex_download.png b/docs/media/development/transifex_download.png deleted file mode 100644 index 99429ce11..000000000 Binary files a/docs/media/development/transifex_download.png and /dev/null differ diff --git a/docs/media/development/transifex_pull_request.png b/docs/media/development/transifex_pull_request.png new file mode 100644 index 000000000..e3ae76991 Binary files /dev/null and b/docs/media/development/transifex_pull_request.png differ diff --git a/docs/media/development/transifex_sync.png b/docs/media/development/transifex_sync.png new file mode 100644 index 000000000..44022cc4d Binary files /dev/null and b/docs/media/development/transifex_sync.png differ diff --git a/docs/release-notes/version-4.0.md b/docs/release-notes/version-4.0.md index 14fdbd1d0..d837d0cf2 100644 --- a/docs/release-notes/version-4.0.md +++ b/docs/release-notes/version-4.0.md @@ -2,6 +2,18 @@ ## v4.0.4 (FUTURE) +### Enhancements + +* [#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 +* [#16290](https://github.com/netbox-community/netbox/issues/16290) - Capture entire object in changelog data (but continue to display only non-internal attributes) + +### Bug Fixes + +* [#13422](https://github.com/netbox-community/netbox/issues/13422) - Rebuild MPTT trees for applicable models after merging staged changes +* [#16202](https://github.com/netbox-community/netbox/issues/16202) - Fix site map button URL for certain localizations +* [#16286](https://github.com/netbox-community/netbox/issues/16286) - Fix global search support for provider accounts + --- ## v4.0.3 (2024-05-22) diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 4925fb517..7fa307bc8 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -43,14 +43,6 @@ MODULEBAY_STATUS = """ """ -def get_cabletermination_row_class(record): - if record.mark_connected: - return 'success' - elif record.cable: - return record.cable.get_status_color() - return '' - - # # Device roles # @@ -339,6 +331,14 @@ class CableTerminationTable(NetBoxTable): verbose_name=_('Mark Connected'), ) + class Meta: + row_attrs = { + 'data-name': lambda record: record.name, + 'data-mark-connected': lambda record: "true" if record.mark_connected else "false", + 'data-cable-status': lambda record: record.cable.status if record.cable else "", + 'data-type': lambda record: record.type + } + def value_link_peer(self, value): return ', '.join([ f"{termination.parent_object} > {termination}" for termination in value @@ -386,16 +386,13 @@ class DeviceConsolePortTable(ConsolePortTable): extra_buttons=CONSOLEPORT_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.ConsolePort fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'speed', 'description', 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'actions' ) default_columns = ('pk', 'name', 'label', 'type', 'speed', 'description', 'cable', 'connection') - row_attrs = { - 'class': get_cabletermination_row_class - } class ConsoleServerPortTable(ModularDeviceComponentTable, PathEndpointTable): @@ -431,16 +428,13 @@ class DeviceConsoleServerPortTable(ConsoleServerPortTable): extra_buttons=CONSOLESERVERPORT_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.ConsoleServerPort fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'speed', 'description', 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'actions', ) default_columns = ('pk', 'name', 'label', 'type', 'speed', 'description', 'cable', 'connection') - row_attrs = { - 'class': get_cabletermination_row_class - } class PowerPortTable(ModularDeviceComponentTable, PathEndpointTable): @@ -483,7 +477,7 @@ class DevicePowerPortTable(PowerPortTable): extra_buttons=POWERPORT_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.PowerPort fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'maximum_draw', 'allocated_draw', @@ -492,9 +486,6 @@ class DevicePowerPortTable(PowerPortTable): default_columns = ( 'pk', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description', 'cable', 'connection', ) - row_attrs = { - 'class': get_cabletermination_row_class - } class PowerOutletTable(ModularDeviceComponentTable, PathEndpointTable): @@ -534,7 +525,7 @@ class DevicePowerOutletTable(PowerOutletTable): extra_buttons=POWEROUTLET_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.PowerOutlet fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'power_port', 'feed_leg', 'description', @@ -543,9 +534,6 @@ class DevicePowerOutletTable(PowerOutletTable): default_columns = ( 'pk', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description', 'cable', 'connection', ) - row_attrs = { - 'class': get_cabletermination_row_class - } class BaseInterfaceTable(NetBoxTable): @@ -733,7 +721,7 @@ class DeviceFrontPortTable(FrontPortTable): extra_buttons=FRONTPORT_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.FrontPort fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'rear_port', 'rear_port_position', @@ -742,9 +730,6 @@ class DeviceFrontPortTable(FrontPortTable): default_columns = ( 'pk', 'name', 'label', 'type', 'rear_port', 'rear_port_position', 'description', 'cable', 'link_peer', ) - row_attrs = { - 'class': get_cabletermination_row_class - } class RearPortTable(ModularDeviceComponentTable, CableTerminationTable): @@ -783,7 +768,7 @@ class DeviceRearPortTable(RearPortTable): extra_buttons=REARPORT_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.RearPort fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'positions', 'description', 'mark_connected', @@ -792,9 +777,6 @@ class DeviceRearPortTable(RearPortTable): default_columns = ( 'pk', 'name', 'label', 'type', 'positions', 'description', 'cable', 'link_peer', ) - row_attrs = { - 'class': get_cabletermination_row_class - } class DeviceBayTable(DeviceComponentTable): diff --git a/netbox/extras/api/serializers_/change_logging.py b/netbox/extras/api/serializers_/change_logging.py index 32585637c..46fb901ff 100644 --- a/netbox/extras/api/serializers_/change_logging.py +++ b/netbox/extras/api/serializers_/change_logging.py @@ -30,6 +30,16 @@ class ObjectChangeSerializer(BaseModelSerializer): changed_object = serializers.SerializerMethodField( read_only=True ) + prechange_data = serializers.JSONField( + source='prechange_data_clean', + read_only=True, + allow_null=True + ) + postchange_data = serializers.JSONField( + source='postchange_data_clean', + read_only=True, + allow_null=True + ) class Meta: model = ObjectChange diff --git a/netbox/extras/context_managers.py b/netbox/extras/context_managers.py index 8de47465e..e72cb8cc2 100644 --- a/netbox/extras/context_managers.py +++ b/netbox/extras/context_managers.py @@ -13,13 +13,14 @@ def event_tracking(request): :param request: WSGIRequest object with a unique `id` set """ current_request.set(request) - events_queue.set([]) + events_queue.set({}) yield # Flush queued webhooks to RQ - flush_events(events_queue.get()) + if events := list(events_queue.get().values()): + flush_events(events) # Clear context vars current_request.set(None) - events_queue.set([]) + events_queue.set({}) diff --git a/netbox/extras/dashboard/widgets.py b/netbox/extras/dashboard/widgets.py index a3d7f05a3..add81a318 100644 --- a/netbox/extras/dashboard/widgets.py +++ b/netbox/extras/dashboard/widgets.py @@ -265,6 +265,7 @@ class ObjectListWidget(DashboardWidget): parameters = self.config.get('url_params') or {} if page_size := self.config.get('page_size'): parameters['per_page'] = page_size + parameters['embedded'] = True if parameters: try: diff --git a/netbox/extras/events.py b/netbox/extras/events.py index 34d2ec159..22ce26ba9 100644 --- a/netbox/extras/events.py +++ b/netbox/extras/events.py @@ -58,15 +58,21 @@ def enqueue_object(queue, instance, user, request_id, action): if model_name not in registry['model_features']['event_rules'].get(app_label, []): return - queue.append({ - 'content_type': ContentType.objects.get_for_model(instance), - 'object_id': instance.pk, - 'event': action, - 'data': serialize_for_event(instance), - 'snapshots': get_snapshots(instance, action), - 'username': user.username, - 'request_id': request_id - }) + assert instance.pk is not None + key = f'{app_label}.{model_name}:{instance.pk}' + if key in queue: + queue[key]['data'] = serialize_for_event(instance) + queue[key]['snapshots']['postchange'] = get_snapshots(instance, action)['postchange'] + else: + queue[key] = { + 'content_type': ContentType.objects.get_for_model(instance), + 'object_id': instance.pk, + 'event': action, + 'data': serialize_for_event(instance), + 'snapshots': get_snapshots(instance, action), + 'username': user.username, + 'request_id': request_id + } def process_event_rules(event_rules, model_name, event, data, username=None, snapshots=None, request_id=None): @@ -163,14 +169,14 @@ def process_event_queue(events): ) -def flush_events(queue): +def flush_events(events): """ - Flush a list of object representation to RQ for webhook processing. + Flush a list of object representations to RQ for event processing. """ - if queue: + if events: for name in settings.EVENTS_PIPELINE: try: func = import_string(name) - func(queue) + func(events) except Exception as e: logger.error(_("Cannot import events pipeline {name} error: {error}").format(name=name, error=e)) diff --git a/netbox/extras/models/change_logging.py b/netbox/extras/models/change_logging.py index ebcebc09a..8451a0d15 100644 --- a/netbox/extras/models/change_logging.py +++ b/netbox/extras/models/change_logging.py @@ -1,12 +1,17 @@ +from functools import cached_property + from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse from django.utils.translation import gettext_lazy as _ +from mptt.models import MPTTModel from core.models import ObjectType from extras.choices import * +from netbox.models.features import ChangeLoggingMixin +from utilities.data import shallow_compare_dict from ..querysets import ObjectChangeQuerySet __all__ = ( @@ -136,6 +141,71 @@ class ObjectChange(models.Model): def get_action_color(self): return ObjectChangeActionChoices.colors.get(self.action) - @property + @cached_property def has_changes(self): return self.prechange_data != self.postchange_data + + @cached_property + def diff_exclude_fields(self): + """ + Return a set of attributes which should be ignored when calculating a diff + between the pre- and post-change data. (For instance, it would not make + sense to compare the "last updated" times as these are expected to differ.) + """ + model = self.changed_object_type.model_class() + attrs = set() + + # Exclude auto-populated change tracking fields + if issubclass(model, ChangeLoggingMixin): + attrs.update({'created', 'last_updated'}) + + # Exclude MPTT-internal fields + if issubclass(model, MPTTModel): + attrs.update({'level', 'lft', 'rght', 'tree_id'}) + + return attrs + + def get_clean_data(self, prefix): + """ + Return only the pre-/post-change attributes which are relevant for calculating a diff. + """ + ret = {} + change_data = getattr(self, f'{prefix}_data') or {} + for k, v in change_data.items(): + if k not in self.diff_exclude_fields and not k.startswith('_'): + ret[k] = v + return ret + + @cached_property + def prechange_data_clean(self): + return self.get_clean_data('prechange') + + @cached_property + def postchange_data_clean(self): + return self.get_clean_data('postchange') + + def diff(self): + """ + Return a dictionary of pre- and post-change values for attributes which have changed. + """ + prechange_data = self.prechange_data_clean + postchange_data = self.postchange_data_clean + + # Determine which attributes have changed + if self.action == ObjectChangeActionChoices.ACTION_CREATE: + changed_attrs = sorted(postchange_data.keys()) + elif self.action == ObjectChangeActionChoices.ACTION_DELETE: + changed_attrs = sorted(prechange_data.keys()) + else: + # TODO: Support deep (recursive) comparison + changed_data = shallow_compare_dict(prechange_data, postchange_data) + changed_attrs = sorted(changed_data.keys()) + + return { + 'pre': { + k: prechange_data.get(k) for k in changed_attrs + }, + 'post': { + k: postchange_data.get(k) for k in changed_attrs + }, + } diff --git a/netbox/extras/models/staging.py b/netbox/extras/models/staging.py index 6e381ce70..7ffbde089 100644 --- a/netbox/extras/models/staging.py +++ b/netbox/extras/models/staging.py @@ -4,6 +4,7 @@ from django.contrib.auth import get_user_model from django.contrib.contenttypes.fields import GenericForeignKey from django.db import models, transaction from django.utils.translation import gettext_lazy as _ +from mptt.models import MPTTModel from extras.choices import ChangeActionChoices from netbox.models import ChangeLoggedModel @@ -124,6 +125,11 @@ class StagedChange(CustomValidationMixin, EventRulesMixin, models.Model): instance = self.model.objects.get(pk=self.object_id) logger.info(f'Deleting {self.model._meta.verbose_name} {instance}') instance.delete() + + # Rebuild the MPTT tree where applicable + if issubclass(self.model, MPTTModel): + self.model.objects.rebuild() + apply.alters_data = True def get_action_color(self): diff --git a/netbox/extras/signals.py b/netbox/extras/signals.py index 2813ed7ae..9d439ace9 100644 --- a/netbox/extras/signals.py +++ b/netbox/extras/signals.py @@ -55,18 +55,6 @@ def run_validators(instance, validators): clear_events = Signal() -def is_same_object(instance, webhook_data, request_id): - """ - Compare the given instance to the most recent queued webhook object, returning True - if they match. This check is used to avoid creating duplicate webhook entries. - """ - return ( - ContentType.objects.get_for_model(instance) == webhook_data['content_type'] and - instance.pk == webhook_data['object_id'] and - request_id == webhook_data['request_id'] - ) - - @receiver((post_save, m2m_changed)) def handle_changed_object(sender, instance, **kwargs): """ @@ -112,14 +100,13 @@ def handle_changed_object(sender, instance, **kwargs): objectchange.request_id = request.id objectchange.save() - # If this is an M2M change, update the previously queued webhook (from post_save) + # Ensure that we're working with fresh M2M assignments + if m2m_changed: + instance.refresh_from_db() + + # Enqueue the object for event processing queue = events_queue.get() - if m2m_changed and queue and is_same_object(instance, queue[-1], request.id): - instance.refresh_from_db() # Ensure that we're working with fresh M2M assignments - queue[-1]['data'] = serialize_for_event(instance) - queue[-1]['snapshots']['postchange'] = get_snapshots(instance, action)['postchange'] - else: - enqueue_object(queue, instance, request.user, request.id, action) + enqueue_object(queue, instance, request.user, request.id, action) events_queue.set(queue) # Increment metric counters @@ -179,7 +166,7 @@ def handle_deleted_object(sender, instance, **kwargs): obj.snapshot() # Ensure the change record includes the "before" state getattr(obj, related_field_name).remove(instance) - # Enqueue webhooks + # Enqueue the object for event processing queue = events_queue.get() enqueue_object(queue, instance, request.user, request.id, ObjectChangeActionChoices.ACTION_DELETE) events_queue.set(queue) @@ -195,7 +182,7 @@ def clear_events_queue(sender, **kwargs): """ logger = logging.getLogger('events') logger.info(f"Clearing {len(events_queue.get())} queued events ({sender})") - events_queue.set([]) + events_queue.set({}) # diff --git a/netbox/extras/tests/test_changelog.py b/netbox/extras/tests/test_changelog.py index d9d6f1f45..aac526e0f 100644 --- a/netbox/extras/tests/test_changelog.py +++ b/netbox/extras/tests/test_changelog.py @@ -75,6 +75,10 @@ class ChangeLogViewTest(ModelViewTestCase): self.assertEqual(oc.postchange_data['custom_fields']['cf2'], form_data['cf_cf2']) self.assertEqual(oc.postchange_data['tags'], ['Tag 1', 'Tag 2']) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.postchange_data) + self.assertNotIn('_name', oc.postchange_data_clean) + def test_update_object(self): site = Site(name='Site 1', slug='site-1') site.save() @@ -112,6 +116,12 @@ class ChangeLogViewTest(ModelViewTestCase): self.assertEqual(oc.postchange_data['custom_fields']['cf2'], form_data['cf_cf2']) self.assertEqual(oc.postchange_data['tags'], ['Tag 3']) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.prechange_data) + self.assertNotIn('_name', oc.prechange_data_clean) + self.assertIn('_name', oc.postchange_data) + self.assertNotIn('_name', oc.postchange_data_clean) + def test_delete_object(self): site = Site( name='Site 1', @@ -142,6 +152,10 @@ class ChangeLogViewTest(ModelViewTestCase): self.assertEqual(oc.prechange_data['tags'], ['Tag 1', 'Tag 2']) self.assertEqual(oc.postchange_data, None) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.prechange_data) + self.assertNotIn('_name', oc.prechange_data_clean) + def test_bulk_update_objects(self): sites = ( Site(name='Site 1', slug='site-1', status=SiteStatusChoices.STATUS_ACTIVE), @@ -338,6 +352,10 @@ class ChangeLogAPITest(APITestCase): self.assertEqual(oc.postchange_data['custom_fields'], data['custom_fields']) self.assertEqual(oc.postchange_data['tags'], ['Tag 1', 'Tag 2']) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.postchange_data) + self.assertNotIn('_name', oc.postchange_data_clean) + def test_update_object(self): site = Site(name='Site 1', slug='site-1') site.save() @@ -370,6 +388,12 @@ class ChangeLogAPITest(APITestCase): self.assertEqual(oc.postchange_data['custom_fields'], data['custom_fields']) self.assertEqual(oc.postchange_data['tags'], ['Tag 3']) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.prechange_data) + self.assertNotIn('_name', oc.prechange_data_clean) + self.assertIn('_name', oc.postchange_data) + self.assertNotIn('_name', oc.postchange_data_clean) + def test_delete_object(self): site = Site( name='Site 1', @@ -398,6 +422,10 @@ class ChangeLogAPITest(APITestCase): self.assertEqual(oc.prechange_data['tags'], ['Tag 1', 'Tag 2']) self.assertEqual(oc.postchange_data, None) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.prechange_data) + self.assertNotIn('_name', oc.prechange_data_clean) + def test_bulk_create_objects(self): data = ( { diff --git a/netbox/extras/tests/test_event_rules.py b/netbox/extras/tests/test_event_rules.py index 8cea2078a..a1dd8b48e 100644 --- a/netbox/extras/tests/test_event_rules.py +++ b/netbox/extras/tests/test_event_rules.py @@ -4,6 +4,7 @@ from unittest.mock import patch import django_rq from django.http import HttpResponse +from django.test import RequestFactory from django.urls import reverse from requests import Session from rest_framework import status @@ -12,6 +13,7 @@ from core.models import ObjectType from dcim.choices import SiteStatusChoices from dcim.models import Site from extras.choices import EventRuleActionChoices, ObjectChangeActionChoices +from extras.context_managers import event_tracking from extras.events import enqueue_object, flush_events, serialize_for_event from extras.models import EventRule, Tag, Webhook from extras.webhooks import generate_signature, send_webhook @@ -360,7 +362,7 @@ class EventRuleTest(APITestCase): return HttpResponse() # Enqueue a webhook for processing - webhooks_queue = [] + webhooks_queue = {} site = Site.objects.create(name='Site 1', slug='site-1') enqueue_object( webhooks_queue, @@ -369,7 +371,7 @@ class EventRuleTest(APITestCase): request_id=request_id, action=ObjectChangeActionChoices.ACTION_CREATE ) - flush_events(webhooks_queue) + flush_events(list(webhooks_queue.values())) # Retrieve the job from queue job = self.queue.jobs[0] @@ -377,3 +379,24 @@ class EventRuleTest(APITestCase): # Patch the Session object with our dummy_send() method, then process the webhook for sending with patch.object(Session, 'send', dummy_send) as mock_send: send_webhook(**job.kwargs) + + def test_duplicate_triggers(self): + """ + Test for erroneous duplicate event triggers resulting from saving an object multiple times + within the span of a single request. + """ + url = reverse('dcim:site_add') + request = RequestFactory().get(url) + request.id = uuid.uuid4() + request.user = self.user + + self.assertEqual(self.queue.count, 0, msg="Unexpected jobs found in queue") + + with event_tracking(request): + site = Site(name='Site 1', slug='site-1') + site.save() + + # Save the site a second time + site.save() + + self.assertEqual(self.queue.count, 1, msg="Duplicate jobs found in queue") diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 3a82539fb..82f519c00 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -723,15 +723,15 @@ class ObjectChangeView(generic.ObjectView): if not instance.prechange_data and instance.action in ['update', 'delete'] and prev_change: non_atomic_change = True - prechange_data = prev_change.postchange_data + prechange_data = prev_change.postchange_data_clean else: non_atomic_change = False - prechange_data = instance.prechange_data + prechange_data = instance.prechange_data_clean if prechange_data and instance.postchange_data: diff_added = shallow_compare_dict( prechange_data or dict(), - instance.postchange_data or dict(), + instance.postchange_data_clean or dict(), exclude=['last_updated'], ) diff_removed = { diff --git a/netbox/netbox/context.py b/netbox/netbox/context.py index 56e41cb63..744c36df4 100644 --- a/netbox/netbox/context.py +++ b/netbox/netbox/context.py @@ -7,4 +7,4 @@ __all__ = ( current_request = ContextVar('current_request', default=None) -events_queue = ContextVar('events_queue', default=[]) +events_queue = ContextVar('events_queue', default=dict()) diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css index a1179a319..082a5b64d 100644 Binary files a/netbox/project-static/dist/netbox.css and b/netbox/project-static/dist/netbox.css differ diff --git a/netbox/project-static/styles/custom/_code.scss b/netbox/project-static/styles/custom/_code.scss index 4b068b94d..1be563b21 100644 --- a/netbox/project-static/styles/custom/_code.scss +++ b/netbox/project-static/styles/custom/_code.scss @@ -1,7 +1,7 @@ // Serialized data from change records pre.change-data { - padding-right: 0; - padding-left: 0; + border-radius: 0; + padding: 0; // Display each line individually for highlighting > span { diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index bf53ef002..12ba4a8d4 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -5,6 +5,7 @@ {% load helpers %} {% load plugins %} {% load i18n %} +{% load l10n %} {% load mptt %} {% block content %} @@ -63,7 +64,7 @@ {% if object.latitude and object.longitude %} {% if config.MAPS_URL %}
diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index d3a44f3ac..1ad0a75ae 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -3,6 +3,7 @@ {% load plugins %} {% load tz %} {% load i18n %} +{% load l10n %} {% load mptt %} {% block breadcrumbs %} @@ -95,7 +96,7 @@ {% if object.latitude and object.longitude %} {% if config.MAPS_URL %} diff --git a/netbox/templates/extras/objectchange.html b/netbox/templates/extras/objectchange.html index 0aee6185b..368a71821 100644 --- a/netbox/templates/extras/objectchange.html +++ b/netbox/templates/extras/objectchange.html @@ -112,7 +112,7 @@ {% if object.prechange_data %} {% spaceless %}
- {% for k, v in object.prechange_data.items %}
+ {% for k, v in object.prechange_data_clean.items %}
{{ k }}: {{ v|json }}
{% endfor %}
@@ -132,7 +132,7 @@
{% if object.postchange_data %}
{% spaceless %}
- {% for k, v in object.postchange_data.items %}
+ {% for k, v in object.postchange_data_clean.items %}
{{ k }}: {{ v|json }}
{% endfor %}
diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po
index be10d5686..bb938e9d7 100644
--- a/netbox/translations/en/LC_MESSAGES/django.po
+++ b/netbox/translations/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 17:41+0000\n"
+"POT-Creation-Date: 2024-06-01 05:02+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME {module}
will be replaced with the position of the "
"assigned module, if any."
msgstr ""
-#: dcim/forms/object_create.py:320
+#: netbox/dcim/forms/object_create.py:320
#, python-brace-format
msgid ""
"The number of front ports to be created ({frontport_count}) must match the "
"selected number of rear port positions ({rearport_count})."
msgstr ""
-#: dcim/forms/object_create.py:409 dcim/tables/devices.py:1016
-#: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:53
-#: templates/dcim/virtualchassis_edit.html:47 templates/ipam/fhrpgroup.html:38
+#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1016
+#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53
+#: netbox/templates/dcim/virtualchassis_edit.html:47
+#: netbox/templates/ipam/fhrpgroup.html:38
msgid "Members"
msgstr ""
-#: dcim/forms/object_create.py:418
+#: netbox/dcim/forms/object_create.py:418
msgid "Initial position"
msgstr ""
-#: dcim/forms/object_create.py:421
+#: netbox/dcim/forms/object_create.py:421
msgid ""
"Position of the first member device. Increases by one for each additional "
"member."
msgstr ""
-#: dcim/forms/object_create.py:435
+#: netbox/dcim/forms/object_create.py:435
msgid "A position must be specified for the first VC member."
msgstr ""
-#: dcim/models/cables.py:62 dcim/models/device_component_templates.py:55
-#: dcim/models/device_components.py:63 extras/models/customfields.py:109
+#: netbox/dcim/models/cables.py:62
+#: netbox/dcim/models/device_component_templates.py:55
+#: netbox/dcim/models/device_components.py:63
+#: netbox/extras/models/customfields.py:109
msgid "label"
msgstr ""
-#: dcim/models/cables.py:71
+#: netbox/dcim/models/cables.py:71
msgid "length"
msgstr ""
-#: dcim/models/cables.py:78
+#: netbox/dcim/models/cables.py:78
msgid "length unit"
msgstr ""
-#: dcim/models/cables.py:93
+#: netbox/dcim/models/cables.py:93
msgid "cable"
msgstr ""
-#: dcim/models/cables.py:94
+#: netbox/dcim/models/cables.py:94
msgid "cables"
msgstr ""
-#: dcim/models/cables.py:163
+#: netbox/dcim/models/cables.py:163
msgid "Must specify a unit when setting a cable length"
msgstr ""
-#: dcim/models/cables.py:166
+#: netbox/dcim/models/cables.py:166
msgid "Must define A and B terminations when creating a new cable."
msgstr ""
-#: dcim/models/cables.py:173
+#: netbox/dcim/models/cables.py:173
msgid "Cannot connect different termination types to same end of cable."
msgstr ""
-#: dcim/models/cables.py:181
+#: netbox/dcim/models/cables.py:181
#, python-brace-format
msgid "Incompatible termination types: {type_a} and {type_b}"
msgstr ""
-#: dcim/models/cables.py:191
+#: netbox/dcim/models/cables.py:191
msgid "A and B terminations cannot connect to the same object."
msgstr ""
-#: dcim/models/cables.py:258 ipam/models/asns.py:37
+#: netbox/dcim/models/cables.py:258 netbox/ipam/models/asns.py:37
msgid "end"
msgstr ""
-#: dcim/models/cables.py:311
+#: netbox/dcim/models/cables.py:311
msgid "cable termination"
msgstr ""
-#: dcim/models/cables.py:312
+#: netbox/dcim/models/cables.py:312
msgid "cable terminations"
msgstr ""
-#: dcim/models/cables.py:331
+#: netbox/dcim/models/cables.py:331
#, python-brace-format
msgid ""
"Duplicate termination found for {app_label}.{model} {termination_id}: cable "
"{cable_pk}"
msgstr ""
-#: dcim/models/cables.py:341
+#: netbox/dcim/models/cables.py:341
#, python-brace-format
msgid "Cables cannot be terminated to {type_display} interfaces"
msgstr ""
-#: dcim/models/cables.py:348
+#: netbox/dcim/models/cables.py:348
msgid "Circuit terminations attached to a provider network may not be cabled."
msgstr ""
-#: dcim/models/cables.py:446 extras/models/configs.py:50
+#: netbox/dcim/models/cables.py:446 netbox/extras/models/configs.py:50
msgid "is active"
msgstr ""
-#: dcim/models/cables.py:450
+#: netbox/dcim/models/cables.py:450
msgid "is complete"
msgstr ""
-#: dcim/models/cables.py:454
+#: netbox/dcim/models/cables.py:454
msgid "is split"
msgstr ""
-#: dcim/models/cables.py:462
+#: netbox/dcim/models/cables.py:462
msgid "cable path"
msgstr ""
-#: dcim/models/cables.py:463
+#: netbox/dcim/models/cables.py:463
msgid "cable paths"
msgstr ""
-#: dcim/models/device_component_templates.py:46
+#: netbox/dcim/models/device_component_templates.py:46
#, python-brace-format
msgid ""
"{module} is accepted as a substitution for the module bay position when "
"attached to a module type."
msgstr ""
-#: dcim/models/device_component_templates.py:58
-#: dcim/models/device_components.py:66
+#: netbox/dcim/models/device_component_templates.py:58
+#: netbox/dcim/models/device_components.py:66
msgid "Physical label"
msgstr ""
-#: dcim/models/device_component_templates.py:103
+#: netbox/dcim/models/device_component_templates.py:103
msgid "Component templates cannot be moved to a different device type."
msgstr ""
-#: dcim/models/device_component_templates.py:154
+#: netbox/dcim/models/device_component_templates.py:154
msgid ""
"A component template cannot be associated with both a device type and a "
"module type."
msgstr ""
-#: dcim/models/device_component_templates.py:158
+#: netbox/dcim/models/device_component_templates.py:158
msgid ""
"A component template must be associated with either a device type or a "
"module type."
msgstr ""
-#: dcim/models/device_component_templates.py:186
+#: netbox/dcim/models/device_component_templates.py:186
msgid "console port template"
msgstr ""
-#: dcim/models/device_component_templates.py:187
+#: netbox/dcim/models/device_component_templates.py:187
msgid "console port templates"
msgstr ""
-#: dcim/models/device_component_templates.py:220
+#: netbox/dcim/models/device_component_templates.py:220
msgid "console server port template"
msgstr ""
-#: dcim/models/device_component_templates.py:221
+#: netbox/dcim/models/device_component_templates.py:221
msgid "console server port templates"
msgstr ""
-#: dcim/models/device_component_templates.py:252
-#: dcim/models/device_components.py:353
+#: netbox/dcim/models/device_component_templates.py:252
+#: netbox/dcim/models/device_components.py:353
msgid "maximum draw"
msgstr ""
-#: dcim/models/device_component_templates.py:259
-#: dcim/models/device_components.py:360
+#: netbox/dcim/models/device_component_templates.py:259
+#: netbox/dcim/models/device_components.py:360
msgid "allocated draw"
msgstr ""
-#: dcim/models/device_component_templates.py:269
+#: netbox/dcim/models/device_component_templates.py:269
msgid "power port template"
msgstr ""
-#: dcim/models/device_component_templates.py:270
+#: netbox/dcim/models/device_component_templates.py:270
msgid "power port templates"
msgstr ""
-#: dcim/models/device_component_templates.py:289
-#: dcim/models/device_components.py:383
+#: netbox/dcim/models/device_component_templates.py:289
+#: netbox/dcim/models/device_components.py:383
#, python-brace-format
msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)."
msgstr ""
-#: dcim/models/device_component_templates.py:321
-#: dcim/models/device_components.py:478
+#: netbox/dcim/models/device_component_templates.py:321
+#: netbox/dcim/models/device_components.py:478
msgid "feed leg"
msgstr ""
-#: dcim/models/device_component_templates.py:325
-#: dcim/models/device_components.py:482
+#: netbox/dcim/models/device_component_templates.py:325
+#: netbox/dcim/models/device_components.py:482
msgid "Phase (for three-phase feeds)"
msgstr ""
-#: dcim/models/device_component_templates.py:331
+#: netbox/dcim/models/device_component_templates.py:331
msgid "power outlet template"
msgstr ""
-#: dcim/models/device_component_templates.py:332
+#: netbox/dcim/models/device_component_templates.py:332
msgid "power outlet templates"
msgstr ""
-#: dcim/models/device_component_templates.py:341
+#: netbox/dcim/models/device_component_templates.py:341
#, python-brace-format
msgid "Parent power port ({power_port}) must belong to the same device type"
msgstr ""
-#: dcim/models/device_component_templates.py:345
+#: netbox/dcim/models/device_component_templates.py:345
#, python-brace-format
msgid "Parent power port ({power_port}) must belong to the same module type"
msgstr ""
-#: dcim/models/device_component_templates.py:397
-#: dcim/models/device_components.py:612
+#: netbox/dcim/models/device_component_templates.py:397
+#: netbox/dcim/models/device_components.py:612
msgid "management only"
msgstr ""
-#: dcim/models/device_component_templates.py:405
-#: dcim/models/device_components.py:551
+#: netbox/dcim/models/device_component_templates.py:405
+#: netbox/dcim/models/device_components.py:551
msgid "bridge interface"
msgstr ""
-#: dcim/models/device_component_templates.py:423
-#: dcim/models/device_components.py:637
+#: netbox/dcim/models/device_component_templates.py:423
+#: netbox/dcim/models/device_components.py:637
msgid "wireless role"
msgstr ""
-#: dcim/models/device_component_templates.py:429
+#: netbox/dcim/models/device_component_templates.py:429
msgid "interface template"
msgstr ""
-#: dcim/models/device_component_templates.py:430
+#: netbox/dcim/models/device_component_templates.py:430
msgid "interface templates"
msgstr ""
-#: dcim/models/device_component_templates.py:437
-#: dcim/models/device_components.py:805
-#: virtualization/models/virtualmachines.py:400
+#: netbox/dcim/models/device_component_templates.py:437
+#: netbox/dcim/models/device_components.py:805
+#: netbox/virtualization/models/virtualmachines.py:400
msgid "An interface cannot be bridged to itself."
msgstr ""
-#: dcim/models/device_component_templates.py:440
+#: netbox/dcim/models/device_component_templates.py:440
#, python-brace-format
msgid "Bridge interface ({bridge}) must belong to the same device type"
msgstr ""
-#: dcim/models/device_component_templates.py:444
+#: netbox/dcim/models/device_component_templates.py:444
#, python-brace-format
msgid "Bridge interface ({bridge}) must belong to the same module type"
msgstr ""
-#: dcim/models/device_component_templates.py:500
-#: dcim/models/device_components.py:985
+#: netbox/dcim/models/device_component_templates.py:500
+#: netbox/dcim/models/device_components.py:985
msgid "rear port position"
msgstr ""
-#: dcim/models/device_component_templates.py:525
+#: netbox/dcim/models/device_component_templates.py:525
msgid "front port template"
msgstr ""
-#: dcim/models/device_component_templates.py:526
+#: netbox/dcim/models/device_component_templates.py:526
msgid "front port templates"
msgstr ""
-#: dcim/models/device_component_templates.py:536
+#: netbox/dcim/models/device_component_templates.py:536
#, python-brace-format
msgid "Rear port ({name}) must belong to the same device type"
msgstr ""
-#: dcim/models/device_component_templates.py:542
+#: netbox/dcim/models/device_component_templates.py:542
#, python-brace-format
msgid ""
"Invalid rear port position ({position}); rear port {name} has only {count} "
"positions"
msgstr ""
-#: dcim/models/device_component_templates.py:595
-#: dcim/models/device_components.py:1054
+#: netbox/dcim/models/device_component_templates.py:595
+#: netbox/dcim/models/device_components.py:1054
msgid "positions"
msgstr ""
-#: dcim/models/device_component_templates.py:606
+#: netbox/dcim/models/device_component_templates.py:606
msgid "rear port template"
msgstr ""
-#: dcim/models/device_component_templates.py:607
+#: netbox/dcim/models/device_component_templates.py:607
msgid "rear port templates"
msgstr ""
-#: dcim/models/device_component_templates.py:636
-#: dcim/models/device_components.py:1095
+#: netbox/dcim/models/device_component_templates.py:636
+#: netbox/dcim/models/device_components.py:1095
msgid "position"
msgstr ""
-#: dcim/models/device_component_templates.py:639
-#: dcim/models/device_components.py:1098
+#: netbox/dcim/models/device_component_templates.py:639
+#: netbox/dcim/models/device_components.py:1098
msgid "Identifier to reference when renaming installed components"
msgstr ""
-#: dcim/models/device_component_templates.py:645
+#: netbox/dcim/models/device_component_templates.py:645
msgid "module bay template"
msgstr ""
-#: dcim/models/device_component_templates.py:646
+#: netbox/dcim/models/device_component_templates.py:646
msgid "module bay templates"
msgstr ""
-#: dcim/models/device_component_templates.py:673
+#: netbox/dcim/models/device_component_templates.py:673
msgid "device bay template"
msgstr ""
-#: dcim/models/device_component_templates.py:674
+#: netbox/dcim/models/device_component_templates.py:674
msgid "device bay templates"
msgstr ""
-#: dcim/models/device_component_templates.py:687
+#: netbox/dcim/models/device_component_templates.py:687
#, python-brace-format
msgid ""
"Subdevice role of device type ({device_type}) must be set to \"parent\" to "
"allow device bays."
msgstr ""
-#: dcim/models/device_component_templates.py:742
-#: dcim/models/device_components.py:1224
+#: netbox/dcim/models/device_component_templates.py:742
+#: netbox/dcim/models/device_components.py:1224
msgid "part ID"
msgstr ""
-#: dcim/models/device_component_templates.py:744
-#: dcim/models/device_components.py:1226
+#: netbox/dcim/models/device_component_templates.py:744
+#: netbox/dcim/models/device_components.py:1226
msgid "Manufacturer-assigned part identifier"
msgstr ""
-#: dcim/models/device_component_templates.py:761
+#: netbox/dcim/models/device_component_templates.py:761
msgid "inventory item template"
msgstr ""
-#: dcim/models/device_component_templates.py:762
+#: netbox/dcim/models/device_component_templates.py:762
msgid "inventory item templates"
msgstr ""
-#: dcim/models/device_components.py:106
+#: netbox/dcim/models/device_components.py:106
msgid "Components cannot be moved to a different device."
msgstr ""
-#: dcim/models/device_components.py:145
+#: netbox/dcim/models/device_components.py:145
msgid "cable end"
msgstr ""
-#: dcim/models/device_components.py:151
+#: netbox/dcim/models/device_components.py:151
msgid "mark connected"
msgstr ""
-#: dcim/models/device_components.py:153
+#: netbox/dcim/models/device_components.py:153
msgid "Treat as if a cable is connected"
msgstr ""
-#: dcim/models/device_components.py:171
+#: netbox/dcim/models/device_components.py:171
msgid "Must specify cable end (A or B) when attaching a cable."
msgstr ""
-#: dcim/models/device_components.py:175
+#: netbox/dcim/models/device_components.py:175
msgid "Cable end must not be set without a cable."
msgstr ""
-#: dcim/models/device_components.py:179
+#: netbox/dcim/models/device_components.py:179
msgid "Cannot mark as connected with a cable attached."
msgstr ""
-#: dcim/models/device_components.py:203
+#: netbox/dcim/models/device_components.py:203
#, python-brace-format
msgid "{class_name} models must declare a parent_object property"
msgstr ""
-#: dcim/models/device_components.py:288 dcim/models/device_components.py:317
-#: dcim/models/device_components.py:350 dcim/models/device_components.py:468
+#: netbox/dcim/models/device_components.py:288
+#: netbox/dcim/models/device_components.py:317
+#: netbox/dcim/models/device_components.py:350
+#: netbox/dcim/models/device_components.py:468
msgid "Physical port type"
msgstr ""
-#: dcim/models/device_components.py:291 dcim/models/device_components.py:320
+#: netbox/dcim/models/device_components.py:291
+#: netbox/dcim/models/device_components.py:320
msgid "speed"
msgstr ""
-#: dcim/models/device_components.py:295 dcim/models/device_components.py:324
+#: netbox/dcim/models/device_components.py:295
+#: netbox/dcim/models/device_components.py:324
msgid "Port speed in bits per second"
msgstr ""
-#: dcim/models/device_components.py:301
+#: netbox/dcim/models/device_components.py:301
msgid "console port"
msgstr ""
-#: dcim/models/device_components.py:302
+#: netbox/dcim/models/device_components.py:302
msgid "console ports"
msgstr ""
-#: dcim/models/device_components.py:330
+#: netbox/dcim/models/device_components.py:330
msgid "console server port"
msgstr ""
-#: dcim/models/device_components.py:331
+#: netbox/dcim/models/device_components.py:331
msgid "console server ports"
msgstr ""
-#: dcim/models/device_components.py:370
+#: netbox/dcim/models/device_components.py:370
msgid "power port"
msgstr ""
-#: dcim/models/device_components.py:371
+#: netbox/dcim/models/device_components.py:371
msgid "power ports"
msgstr ""
-#: dcim/models/device_components.py:488
+#: netbox/dcim/models/device_components.py:488
msgid "power outlet"
msgstr ""
-#: dcim/models/device_components.py:489
+#: netbox/dcim/models/device_components.py:489
msgid "power outlets"
msgstr ""
-#: dcim/models/device_components.py:500
+#: netbox/dcim/models/device_components.py:500
#, python-brace-format
msgid "Parent power port ({power_port}) must belong to the same device"
msgstr ""
-#: dcim/models/device_components.py:531 vpn/models/crypto.py:81
-#: vpn/models/crypto.py:226
+#: netbox/dcim/models/device_components.py:531 netbox/vpn/models/crypto.py:81
+#: netbox/vpn/models/crypto.py:226
msgid "mode"
msgstr ""
-#: dcim/models/device_components.py:535
+#: netbox/dcim/models/device_components.py:535
msgid "IEEE 802.1Q tagging strategy"
msgstr ""
-#: dcim/models/device_components.py:543
+#: netbox/dcim/models/device_components.py:543
msgid "parent interface"
msgstr ""
-#: dcim/models/device_components.py:603
+#: netbox/dcim/models/device_components.py:603
msgid "parent LAG"
msgstr ""
-#: dcim/models/device_components.py:613
+#: netbox/dcim/models/device_components.py:613
msgid "This interface is used only for out-of-band management"
msgstr ""
-#: dcim/models/device_components.py:618
+#: netbox/dcim/models/device_components.py:618
msgid "speed (Kbps)"
msgstr ""
-#: dcim/models/device_components.py:621
+#: netbox/dcim/models/device_components.py:621
msgid "duplex"
msgstr ""
-#: dcim/models/device_components.py:631
+#: netbox/dcim/models/device_components.py:631
msgid "64-bit World Wide Name"
msgstr ""
-#: dcim/models/device_components.py:643
+#: netbox/dcim/models/device_components.py:643
msgid "wireless channel"
msgstr ""
-#: dcim/models/device_components.py:650
+#: netbox/dcim/models/device_components.py:650
msgid "channel frequency (MHz)"
msgstr ""
-#: dcim/models/device_components.py:651 dcim/models/device_components.py:659
+#: netbox/dcim/models/device_components.py:651
+#: netbox/dcim/models/device_components.py:659
msgid "Populated by selected channel (if set)"
msgstr ""
-#: dcim/models/device_components.py:665
+#: netbox/dcim/models/device_components.py:665
msgid "transmit power (dBm)"
msgstr ""
-#: dcim/models/device_components.py:690 wireless/models.py:116
+#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116
msgid "wireless LANs"
msgstr ""
-#: dcim/models/device_components.py:698
-#: virtualization/models/virtualmachines.py:330
+#: netbox/dcim/models/device_components.py:698
+#: netbox/virtualization/models/virtualmachines.py:330
msgid "untagged VLAN"
msgstr ""
-#: dcim/models/device_components.py:704
-#: virtualization/models/virtualmachines.py:336
+#: netbox/dcim/models/device_components.py:704
+#: netbox/virtualization/models/virtualmachines.py:336
msgid "tagged VLANs"
msgstr ""
-#: dcim/models/device_components.py:746
-#: virtualization/models/virtualmachines.py:372
+#: netbox/dcim/models/device_components.py:746
+#: netbox/virtualization/models/virtualmachines.py:372
msgid "interface"
msgstr ""
-#: dcim/models/device_components.py:747
-#: virtualization/models/virtualmachines.py:373
+#: netbox/dcim/models/device_components.py:747
+#: netbox/virtualization/models/virtualmachines.py:373
msgid "interfaces"
msgstr ""
-#: dcim/models/device_components.py:758
+#: netbox/dcim/models/device_components.py:758
#, python-brace-format
msgid "{display_type} interfaces cannot have a cable attached."
msgstr ""
-#: dcim/models/device_components.py:766
+#: netbox/dcim/models/device_components.py:766
#, python-brace-format
msgid "{display_type} interfaces cannot be marked as connected."
msgstr ""
-#: dcim/models/device_components.py:775
-#: virtualization/models/virtualmachines.py:385
+#: netbox/dcim/models/device_components.py:775
+#: netbox/virtualization/models/virtualmachines.py:385
msgid "An interface cannot be its own parent."
msgstr ""
-#: dcim/models/device_components.py:779
+#: netbox/dcim/models/device_components.py:779
msgid "Only virtual interfaces may be assigned to a parent interface."
msgstr ""
-#: dcim/models/device_components.py:786
+#: netbox/dcim/models/device_components.py:786
#, python-brace-format
msgid ""
"The selected parent interface ({interface}) belongs to a different device "
"({device})"
msgstr ""
-#: dcim/models/device_components.py:792
+#: netbox/dcim/models/device_components.py:792
#, python-brace-format
msgid ""
"The selected parent interface ({interface}) belongs to {device}, which is "
"not part of virtual chassis {virtual_chassis}."
msgstr ""
-#: dcim/models/device_components.py:812
+#: netbox/dcim/models/device_components.py:812
#, python-brace-format
msgid ""
"The selected bridge interface ({bridge}) belongs to a different device "
"({device})."
msgstr ""
-#: dcim/models/device_components.py:818
+#: netbox/dcim/models/device_components.py:818
#, python-brace-format
msgid ""
"The selected bridge interface ({interface}) belongs to {device}, which is "
"not part of virtual chassis {virtual_chassis}."
msgstr ""
-#: dcim/models/device_components.py:829
+#: netbox/dcim/models/device_components.py:829
msgid "Virtual interfaces cannot have a parent LAG interface."
msgstr ""
-#: dcim/models/device_components.py:833
+#: netbox/dcim/models/device_components.py:833
msgid "A LAG interface cannot be its own parent."
msgstr ""
-#: dcim/models/device_components.py:840
+#: netbox/dcim/models/device_components.py:840
#, python-brace-format
msgid ""
"The selected LAG interface ({lag}) belongs to a different device ({device})."
msgstr ""
-#: dcim/models/device_components.py:846
+#: netbox/dcim/models/device_components.py:846
#, python-brace-format
msgid ""
"The selected LAG interface ({lag}) belongs to {device}, which is not part of "
"virtual chassis {virtual_chassis}."
msgstr ""
-#: dcim/models/device_components.py:857
+#: netbox/dcim/models/device_components.py:857
msgid "Virtual interfaces cannot have a PoE mode."
msgstr ""
-#: dcim/models/device_components.py:861
+#: netbox/dcim/models/device_components.py:861
msgid "Virtual interfaces cannot have a PoE type."
msgstr ""
-#: dcim/models/device_components.py:867
+#: netbox/dcim/models/device_components.py:867
msgid "Must specify PoE mode when designating a PoE type."
msgstr ""
-#: dcim/models/device_components.py:874
+#: netbox/dcim/models/device_components.py:874
msgid "Wireless role may be set only on wireless interfaces."
msgstr ""
-#: dcim/models/device_components.py:876
+#: netbox/dcim/models/device_components.py:876
msgid "Channel may be set only on wireless interfaces."
msgstr ""
-#: dcim/models/device_components.py:882
+#: netbox/dcim/models/device_components.py:882
msgid "Channel frequency may be set only on wireless interfaces."
msgstr ""
-#: dcim/models/device_components.py:886
+#: netbox/dcim/models/device_components.py:886
msgid "Cannot specify custom frequency with channel selected."
msgstr ""
-#: dcim/models/device_components.py:892
+#: netbox/dcim/models/device_components.py:892
msgid "Channel width may be set only on wireless interfaces."
msgstr ""
-#: dcim/models/device_components.py:894
+#: netbox/dcim/models/device_components.py:894
msgid "Cannot specify custom width with channel selected."
msgstr ""
-#: dcim/models/device_components.py:902
+#: netbox/dcim/models/device_components.py:902
#, python-brace-format
msgid ""
"The untagged VLAN ({untagged_vlan}) must belong to the same site as the "
"interface's parent device, or it must be global."
msgstr ""
-#: dcim/models/device_components.py:991
+#: netbox/dcim/models/device_components.py:991
msgid "Mapped position on corresponding rear port"
msgstr ""
-#: dcim/models/device_components.py:1007
+#: netbox/dcim/models/device_components.py:1007
msgid "front port"
msgstr ""
-#: dcim/models/device_components.py:1008
+#: netbox/dcim/models/device_components.py:1008
msgid "front ports"
msgstr ""
-#: dcim/models/device_components.py:1022
+#: netbox/dcim/models/device_components.py:1022
#, python-brace-format
msgid "Rear port ({rear_port}) must belong to the same device"
msgstr ""
-#: dcim/models/device_components.py:1030
+#: netbox/dcim/models/device_components.py:1030
#, python-brace-format
msgid ""
"Invalid rear port position ({rear_port_position}): Rear port {name} has only "
"{positions} positions."
msgstr ""
-#: dcim/models/device_components.py:1060
+#: netbox/dcim/models/device_components.py:1060
msgid "Number of front ports which may be mapped"
msgstr ""
-#: dcim/models/device_components.py:1065
+#: netbox/dcim/models/device_components.py:1065
msgid "rear port"
msgstr ""
-#: dcim/models/device_components.py:1066
+#: netbox/dcim/models/device_components.py:1066
msgid "rear ports"
msgstr ""
-#: dcim/models/device_components.py:1080
+#: netbox/dcim/models/device_components.py:1080
#, python-brace-format
msgid ""
"The number of positions cannot be less than the number of mapped front ports "
"({frontport_count})"
msgstr ""
-#: dcim/models/device_components.py:1104
+#: netbox/dcim/models/device_components.py:1104
msgid "module bay"
msgstr ""
-#: dcim/models/device_components.py:1105
+#: netbox/dcim/models/device_components.py:1105
msgid "module bays"
msgstr ""
-#: dcim/models/device_components.py:1126
+#: netbox/dcim/models/device_components.py:1126
msgid "device bay"
msgstr ""
-#: dcim/models/device_components.py:1127
+#: netbox/dcim/models/device_components.py:1127
msgid "device bays"
msgstr ""
-#: dcim/models/device_components.py:1137
+#: netbox/dcim/models/device_components.py:1137
#, python-brace-format
msgid "This type of device ({device_type}) does not support device bays."
msgstr ""
-#: dcim/models/device_components.py:1143
+#: netbox/dcim/models/device_components.py:1143
msgid "Cannot install a device into itself."
msgstr ""
-#: dcim/models/device_components.py:1151
+#: netbox/dcim/models/device_components.py:1151
#, python-brace-format
msgid ""
"Cannot install the specified device; device is already installed in {bay}."
msgstr ""
-#: dcim/models/device_components.py:1172
+#: netbox/dcim/models/device_components.py:1172
msgid "inventory item role"
msgstr ""
-#: dcim/models/device_components.py:1173
+#: netbox/dcim/models/device_components.py:1173
msgid "inventory item roles"
msgstr ""
-#: dcim/models/device_components.py:1230 dcim/models/devices.py:597
-#: dcim/models/devices.py:1163 dcim/models/racks.py:114
+#: netbox/dcim/models/device_components.py:1230
+#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163
+#: netbox/dcim/models/racks.py:114
msgid "serial number"
msgstr ""
-#: dcim/models/device_components.py:1238 dcim/models/devices.py:605
-#: dcim/models/devices.py:1170 dcim/models/racks.py:121
+#: netbox/dcim/models/device_components.py:1238
+#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170
+#: netbox/dcim/models/racks.py:121
msgid "asset tag"
msgstr ""
-#: dcim/models/device_components.py:1239
+#: netbox/dcim/models/device_components.py:1239
msgid "A unique tag used to identify this item"
msgstr ""
-#: dcim/models/device_components.py:1242
+#: netbox/dcim/models/device_components.py:1242
msgid "discovered"
msgstr ""
-#: dcim/models/device_components.py:1244
+#: netbox/dcim/models/device_components.py:1244
msgid "This item was automatically discovered"
msgstr ""
-#: dcim/models/device_components.py:1262
+#: netbox/dcim/models/device_components.py:1262
msgid "inventory item"
msgstr ""
-#: dcim/models/device_components.py:1263
+#: netbox/dcim/models/device_components.py:1263
msgid "inventory items"
msgstr ""
-#: dcim/models/device_components.py:1274
+#: netbox/dcim/models/device_components.py:1274
msgid "Cannot assign self as parent."
msgstr ""
-#: dcim/models/device_components.py:1282
+#: netbox/dcim/models/device_components.py:1282
msgid "Parent inventory item does not belong to the same device."
msgstr ""
-#: dcim/models/device_components.py:1288
+#: netbox/dcim/models/device_components.py:1288
msgid "Cannot move an inventory item with dependent children"
msgstr ""
-#: dcim/models/device_components.py:1296
+#: netbox/dcim/models/device_components.py:1296
msgid "Cannot assign inventory item to component on another device"
msgstr ""
-#: dcim/models/devices.py:54
+#: netbox/dcim/models/devices.py:54
msgid "manufacturer"
msgstr ""
-#: dcim/models/devices.py:55
+#: netbox/dcim/models/devices.py:55
msgid "manufacturers"
msgstr ""
-#: dcim/models/devices.py:82 dcim/models/devices.py:382
+#: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382
msgid "model"
msgstr ""
-#: dcim/models/devices.py:95
+#: netbox/dcim/models/devices.py:95
msgid "default platform"
msgstr ""
-#: dcim/models/devices.py:98 dcim/models/devices.py:386
+#: netbox/dcim/models/devices.py:98 netbox/dcim/models/devices.py:386
msgid "part number"
msgstr ""
-#: dcim/models/devices.py:101 dcim/models/devices.py:389
+#: netbox/dcim/models/devices.py:101 netbox/dcim/models/devices.py:389
msgid "Discrete part number (optional)"
msgstr ""
-#: dcim/models/devices.py:107 dcim/models/racks.py:138
+#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138
msgid "height (U)"
msgstr ""
-#: dcim/models/devices.py:111
+#: netbox/dcim/models/devices.py:111
msgid "exclude from utilization"
msgstr ""
-#: dcim/models/devices.py:112
+#: netbox/dcim/models/devices.py:112
msgid "Devices of this type are excluded when calculating rack utilization."
msgstr ""
-#: dcim/models/devices.py:116
+#: netbox/dcim/models/devices.py:116
msgid "is full depth"
msgstr ""
-#: dcim/models/devices.py:117
+#: netbox/dcim/models/devices.py:117
msgid "Device consumes both front and rear rack faces."
msgstr ""
-#: dcim/models/devices.py:123
+#: netbox/dcim/models/devices.py:123
msgid "parent/child status"
msgstr ""
-#: dcim/models/devices.py:124
+#: netbox/dcim/models/devices.py:124
msgid ""
"Parent devices house child devices in device bays. Leave blank if this "
"device type is neither a parent nor a child."
msgstr ""
-#: dcim/models/devices.py:128 dcim/models/devices.py:649
+#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649
msgid "airflow"
msgstr ""
-#: dcim/models/devices.py:204
+#: netbox/dcim/models/devices.py:204
msgid "device type"
msgstr ""
-#: dcim/models/devices.py:205
+#: netbox/dcim/models/devices.py:205
msgid "device types"
msgstr ""
-#: dcim/models/devices.py:290
+#: netbox/dcim/models/devices.py:290
msgid "U height must be in increments of 0.5 rack units."
msgstr ""
-#: dcim/models/devices.py:307
+#: netbox/dcim/models/devices.py:307
#, python-brace-format
msgid ""
"Device {device} in rack {rack} does not have sufficient space to accommodate "
"a height of {height}U"
msgstr ""
-#: dcim/models/devices.py:322
+#: netbox/dcim/models/devices.py:322
#, python-brace-format
msgid ""
"Unable to set 0U height: Found {racked_instance_count} "
"instances already mounted within racks."
msgstr ""
-#: dcim/models/devices.py:331
+#: netbox/dcim/models/devices.py:331
msgid ""
"Must delete all device bay templates associated with this device before "
"declassifying it as a parent device."
msgstr ""
-#: dcim/models/devices.py:337
+#: netbox/dcim/models/devices.py:337
msgid "Child device types must be 0U."
msgstr ""
-#: dcim/models/devices.py:405
+#: netbox/dcim/models/devices.py:405
msgid "module type"
msgstr ""
-#: dcim/models/devices.py:406
+#: netbox/dcim/models/devices.py:406
msgid "module types"
msgstr ""
-#: dcim/models/devices.py:475
+#: netbox/dcim/models/devices.py:475
msgid "Virtual machines may be assigned to this role"
msgstr ""
-#: dcim/models/devices.py:487
+#: netbox/dcim/models/devices.py:487
msgid "device role"
msgstr ""
-#: dcim/models/devices.py:488
+#: netbox/dcim/models/devices.py:488
msgid "device roles"
msgstr ""
-#: dcim/models/devices.py:505
+#: netbox/dcim/models/devices.py:505
msgid "Optionally limit this platform to devices of a certain manufacturer"
msgstr ""
-#: dcim/models/devices.py:517
+#: netbox/dcim/models/devices.py:517
msgid "platform"
msgstr ""
-#: dcim/models/devices.py:518
+#: netbox/dcim/models/devices.py:518
msgid "platforms"
msgstr ""
-#: dcim/models/devices.py:566
+#: netbox/dcim/models/devices.py:566
msgid "The function this device serves"
msgstr ""
-#: dcim/models/devices.py:598
+#: netbox/dcim/models/devices.py:598
msgid "Chassis serial number, assigned by the manufacturer"
msgstr ""
-#: dcim/models/devices.py:606 dcim/models/devices.py:1171
+#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171
msgid "A unique tag used to identify this device"
msgstr ""
-#: dcim/models/devices.py:633
+#: netbox/dcim/models/devices.py:633
msgid "position (U)"
msgstr ""
-#: dcim/models/devices.py:640
+#: netbox/dcim/models/devices.py:640
msgid "rack face"
msgstr ""
-#: dcim/models/devices.py:660 dcim/models/devices.py:1380
-#: virtualization/models/virtualmachines.py:100
+#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380
+#: netbox/virtualization/models/virtualmachines.py:100
msgid "primary IPv4"
msgstr ""
-#: dcim/models/devices.py:668 dcim/models/devices.py:1388
-#: virtualization/models/virtualmachines.py:108
+#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388
+#: netbox/virtualization/models/virtualmachines.py:108
msgid "primary IPv6"
msgstr ""
-#: dcim/models/devices.py:676
+#: netbox/dcim/models/devices.py:676
msgid "out-of-band IP"
msgstr ""
-#: dcim/models/devices.py:693
+#: netbox/dcim/models/devices.py:693
msgid "VC position"
msgstr ""
-#: dcim/models/devices.py:696
+#: netbox/dcim/models/devices.py:696
msgid "Virtual chassis position"
msgstr ""
-#: dcim/models/devices.py:699
+#: netbox/dcim/models/devices.py:699
msgid "VC priority"
msgstr ""
-#: dcim/models/devices.py:703
+#: netbox/dcim/models/devices.py:703
msgid "Virtual chassis master election priority"
msgstr ""
-#: dcim/models/devices.py:706 dcim/models/sites.py:207
+#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207
msgid "latitude"
msgstr ""
-#: dcim/models/devices.py:711 dcim/models/devices.py:719
-#: dcim/models/sites.py:212 dcim/models/sites.py:220
+#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719
+#: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220
msgid "GPS coordinate in decimal format (xx.yyyyyy)"
msgstr ""
-#: dcim/models/devices.py:714 dcim/models/sites.py:215
+#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215
msgid "longitude"
msgstr ""
-#: dcim/models/devices.py:787
+#: netbox/dcim/models/devices.py:787
msgid "Device name must be unique per site."
msgstr ""
-#: dcim/models/devices.py:798 ipam/models/services.py:74
+#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75
msgid "device"
msgstr ""
-#: dcim/models/devices.py:799
+#: netbox/dcim/models/devices.py:799
msgid "devices"
msgstr ""
-#: dcim/models/devices.py:825
+#: netbox/dcim/models/devices.py:825
#, python-brace-format
msgid "Rack {rack} does not belong to site {site}."
msgstr ""
-#: dcim/models/devices.py:830
+#: netbox/dcim/models/devices.py:830
#, python-brace-format
msgid "Location {location} does not belong to site {site}."
msgstr ""
-#: dcim/models/devices.py:836
+#: netbox/dcim/models/devices.py:836
#, python-brace-format
msgid "Rack {rack} does not belong to location {location}."
msgstr ""
-#: dcim/models/devices.py:843
+#: netbox/dcim/models/devices.py:843
msgid "Cannot select a rack face without assigning a rack."
msgstr ""
-#: dcim/models/devices.py:847
+#: netbox/dcim/models/devices.py:847
msgid "Cannot select a rack position without assigning a rack."
msgstr ""
-#: dcim/models/devices.py:853
+#: netbox/dcim/models/devices.py:853
msgid "Position must be in increments of 0.5 rack units."
msgstr ""
-#: dcim/models/devices.py:857
+#: netbox/dcim/models/devices.py:857
msgid "Must specify rack face when defining rack position."
msgstr ""
-#: dcim/models/devices.py:865
+#: netbox/dcim/models/devices.py:865
#, python-brace-format
msgid "A 0U device type ({device_type}) cannot be assigned to a rack position."
msgstr ""
-#: dcim/models/devices.py:876
+#: netbox/dcim/models/devices.py:876
msgid ""
"Child device types cannot be assigned to a rack face. This is an attribute "
"of the parent device."
msgstr ""
-#: dcim/models/devices.py:883
+#: netbox/dcim/models/devices.py:883
msgid ""
"Child device types cannot be assigned to a rack position. This is an "
"attribute of the parent device."
msgstr ""
-#: dcim/models/devices.py:897
+#: netbox/dcim/models/devices.py:897
#, python-brace-format
msgid ""
"U{position} is already occupied or does not have sufficient space to "
"accommodate this device type: {device_type} ({u_height}U)"
msgstr ""
-#: dcim/models/devices.py:912
+#: netbox/dcim/models/devices.py:912
#, python-brace-format
msgid "{ip} is not an IPv4 address."
msgstr ""
-#: dcim/models/devices.py:921 dcim/models/devices.py:936
+#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936
#, python-brace-format
msgid "The specified IP address ({ip}) is not assigned to this device."
msgstr ""
-#: dcim/models/devices.py:927
+#: netbox/dcim/models/devices.py:927
#, python-brace-format
msgid "{ip} is not an IPv6 address."
msgstr ""
-#: dcim/models/devices.py:954
+#: netbox/dcim/models/devices.py:954
#, python-brace-format
msgid ""
"The assigned platform is limited to {platform_manufacturer} device types, "
"but this device's type belongs to {devicetype_manufacturer}."
msgstr ""
-#: dcim/models/devices.py:965
+#: netbox/dcim/models/devices.py:965
#, python-brace-format
msgid "The assigned cluster belongs to a different site ({site})"
msgstr ""
-#: dcim/models/devices.py:973
+#: netbox/dcim/models/devices.py:973
msgid "A device assigned to a virtual chassis must have its position defined."
msgstr ""
-#: dcim/models/devices.py:1178
+#: netbox/dcim/models/devices.py:1178
msgid "module"
msgstr ""
-#: dcim/models/devices.py:1179
+#: netbox/dcim/models/devices.py:1179
msgid "modules"
msgstr ""
-#: dcim/models/devices.py:1195
+#: netbox/dcim/models/devices.py:1195
#, python-brace-format
msgid ""
"Module must be installed within a module bay belonging to the assigned "
"device ({device})."
msgstr ""
-#: dcim/models/devices.py:1299
+#: netbox/dcim/models/devices.py:1299
msgid "domain"
msgstr ""
-#: dcim/models/devices.py:1312 dcim/models/devices.py:1313
+#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313
msgid "virtual chassis"
msgstr ""
-#: dcim/models/devices.py:1328
+#: netbox/dcim/models/devices.py:1328
#, python-brace-format
msgid "The selected master ({master}) is not assigned to this virtual chassis."
msgstr ""
-#: dcim/models/devices.py:1344
+#: netbox/dcim/models/devices.py:1344
#, python-brace-format
msgid ""
"Unable to delete virtual chassis {self}. There are member interfaces which "
"form a cross-chassis LAG interfaces."
msgstr ""
-#: dcim/models/devices.py:1369 vpn/models/l2vpn.py:37
+#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37
msgid "identifier"
msgstr ""
-#: dcim/models/devices.py:1370
+#: netbox/dcim/models/devices.py:1370
msgid "Numeric identifier unique to the parent device"
msgstr ""
-#: dcim/models/devices.py:1398 extras/models/customfields.py:210
-#: extras/models/models.py:127 extras/models/models.py:722
-#: netbox/models/__init__.py:114
+#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:210
+#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722
+#: netbox/netbox/models/__init__.py:114
msgid "comments"
msgstr ""
-#: dcim/models/devices.py:1414
+#: netbox/dcim/models/devices.py:1414
msgid "virtual device context"
msgstr ""
-#: dcim/models/devices.py:1415
+#: netbox/dcim/models/devices.py:1415
msgid "virtual device contexts"
msgstr ""
-#: dcim/models/devices.py:1447
+#: netbox/dcim/models/devices.py:1447
#, python-brace-format
msgid "{ip} is not an IPv{family} address."
msgstr ""
-#: dcim/models/devices.py:1453
+#: netbox/dcim/models/devices.py:1453
msgid "Primary IP address must belong to an interface on the assigned device."
msgstr ""
-#: dcim/models/mixins.py:15 extras/models/configs.py:41
-#: extras/models/models.py:341 extras/models/models.py:550
-#: extras/models/search.py:48 ipam/models/ip.py:194
+#: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41
+#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550
+#: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194
msgid "weight"
msgstr ""
-#: dcim/models/mixins.py:22
+#: netbox/dcim/models/mixins.py:22
msgid "weight unit"
msgstr ""
-#: dcim/models/mixins.py:51
+#: netbox/dcim/models/mixins.py:51
msgid "Must specify a unit when setting a weight"
msgstr ""
-#: dcim/models/power.py:55
+#: netbox/dcim/models/power.py:55
msgid "power panel"
msgstr ""
-#: dcim/models/power.py:56
+#: netbox/dcim/models/power.py:56
msgid "power panels"
msgstr ""
-#: dcim/models/power.py:70
+#: netbox/dcim/models/power.py:70
#, python-brace-format
msgid ""
"Location {location} ({location_site}) is in a different site than {site}"
msgstr ""
-#: dcim/models/power.py:108
+#: netbox/dcim/models/power.py:108
msgid "supply"
msgstr ""
-#: dcim/models/power.py:114
+#: netbox/dcim/models/power.py:114
msgid "phase"
msgstr ""
-#: dcim/models/power.py:120
+#: netbox/dcim/models/power.py:120
msgid "voltage"
msgstr ""
-#: dcim/models/power.py:125
+#: netbox/dcim/models/power.py:125
msgid "amperage"
msgstr ""
-#: dcim/models/power.py:130
+#: netbox/dcim/models/power.py:130
msgid "max utilization"
msgstr ""
-#: dcim/models/power.py:133
+#: netbox/dcim/models/power.py:133
msgid "Maximum permissible draw (percentage)"
msgstr ""
-#: dcim/models/power.py:136
+#: netbox/dcim/models/power.py:136
msgid "available power"
msgstr ""
-#: dcim/models/power.py:164
+#: netbox/dcim/models/power.py:164
msgid "power feed"
msgstr ""
-#: dcim/models/power.py:165
+#: netbox/dcim/models/power.py:165
msgid "power feeds"
msgstr ""
-#: dcim/models/power.py:179
+#: netbox/dcim/models/power.py:179
#, python-brace-format
msgid ""
"Rack {rack} ({rack_site}) and power panel {powerpanel} ({powerpanel_site}) "
"are in different sites."
msgstr ""
-#: dcim/models/power.py:190
+#: netbox/dcim/models/power.py:190
msgid "Voltage cannot be negative for AC supply"
msgstr ""
-#: dcim/models/racks.py:50
+#: netbox/dcim/models/racks.py:50
msgid "rack role"
msgstr ""
-#: dcim/models/racks.py:51
+#: netbox/dcim/models/racks.py:51
msgid "rack roles"
msgstr ""
-#: dcim/models/racks.py:75
+#: netbox/dcim/models/racks.py:75
msgid "facility ID"
msgstr ""
-#: dcim/models/racks.py:76
+#: netbox/dcim/models/racks.py:76
msgid "Locally-assigned identifier"
msgstr ""
-#: dcim/models/racks.py:109 ipam/forms/bulk_import.py:200
-#: ipam/forms/bulk_import.py:265 ipam/forms/bulk_import.py:300
-#: ipam/forms/bulk_import.py:467 virtualization/forms/bulk_import.py:112
+#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200
+#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300
+#: netbox/ipam/forms/bulk_import.py:467
+#: netbox/virtualization/forms/bulk_import.py:112
msgid "Functional role"
msgstr ""
-#: dcim/models/racks.py:122
+#: netbox/dcim/models/racks.py:122
msgid "A unique tag used to identify this rack"
msgstr ""
-#: dcim/models/racks.py:133
+#: netbox/dcim/models/racks.py:133
msgid "width"
msgstr ""
-#: dcim/models/racks.py:134
+#: netbox/dcim/models/racks.py:134
msgid "Rail-to-rail width"
msgstr ""
-#: dcim/models/racks.py:140
+#: netbox/dcim/models/racks.py:140
msgid "Height in rack units"
msgstr ""
-#: dcim/models/racks.py:144
+#: netbox/dcim/models/racks.py:144
msgid "starting unit"
msgstr ""
-#: dcim/models/racks.py:146
+#: netbox/dcim/models/racks.py:146
msgid "Starting unit for rack"
msgstr ""
-#: dcim/models/racks.py:150
+#: netbox/dcim/models/racks.py:150
msgid "descending units"
msgstr ""
-#: dcim/models/racks.py:151
+#: netbox/dcim/models/racks.py:151
msgid "Units are numbered top-to-bottom"
msgstr ""
-#: dcim/models/racks.py:154
+#: netbox/dcim/models/racks.py:154
msgid "outer width"
msgstr ""
-#: dcim/models/racks.py:157
+#: netbox/dcim/models/racks.py:157
msgid "Outer dimension of rack (width)"
msgstr ""
-#: dcim/models/racks.py:160
+#: netbox/dcim/models/racks.py:160
msgid "outer depth"
msgstr ""
-#: dcim/models/racks.py:163
+#: netbox/dcim/models/racks.py:163
msgid "Outer dimension of rack (depth)"
msgstr ""
-#: dcim/models/racks.py:166
+#: netbox/dcim/models/racks.py:166
msgid "outer unit"
msgstr ""
-#: dcim/models/racks.py:172
+#: netbox/dcim/models/racks.py:172
msgid "max weight"
msgstr ""
-#: dcim/models/racks.py:175
+#: netbox/dcim/models/racks.py:175
msgid "Maximum load capacity for the rack"
msgstr ""
-#: dcim/models/racks.py:183
+#: netbox/dcim/models/racks.py:183
msgid "mounting depth"
msgstr ""
-#: dcim/models/racks.py:187
+#: netbox/dcim/models/racks.py:187
msgid ""
"Maximum depth of a mounted device, in millimeters. For four-post racks, this "
"is the distance between the front and rear rails."
msgstr ""
-#: dcim/models/racks.py:221
+#: netbox/dcim/models/racks.py:221
msgid "rack"
msgstr ""
-#: dcim/models/racks.py:222
+#: netbox/dcim/models/racks.py:222
msgid "racks"
msgstr ""
-#: dcim/models/racks.py:237
+#: netbox/dcim/models/racks.py:237
#, python-brace-format
msgid "Assigned location must belong to parent site ({site})."
msgstr ""
-#: dcim/models/racks.py:241
+#: netbox/dcim/models/racks.py:241
msgid "Must specify a unit when setting an outer width/depth"
msgstr ""
-#: dcim/models/racks.py:245
+#: netbox/dcim/models/racks.py:245
msgid "Must specify a unit when setting a maximum weight"
msgstr ""
-#: dcim/models/racks.py:255
+#: netbox/dcim/models/racks.py:255
#, python-brace-format
msgid ""
"Rack must be at least {min_height}U tall to house currently installed "
"devices."
msgstr ""
-#: dcim/models/racks.py:262
+#: netbox/dcim/models/racks.py:262
#, python-brace-format
msgid ""
"Rack unit numbering must begin at {position} or less to house currently "
"installed devices."
msgstr ""
-#: dcim/models/racks.py:270
+#: netbox/dcim/models/racks.py:270
#, python-brace-format
msgid "Location must be from the same site, {site}."
msgstr ""
-#: dcim/models/racks.py:523
+#: netbox/dcim/models/racks.py:523
msgid "units"
msgstr ""
-#: dcim/models/racks.py:549
+#: netbox/dcim/models/racks.py:549
msgid "rack reservation"
msgstr ""
-#: dcim/models/racks.py:550
+#: netbox/dcim/models/racks.py:550
msgid "rack reservations"
msgstr ""
-#: dcim/models/racks.py:567
+#: netbox/dcim/models/racks.py:567
#, python-brace-format
msgid "Invalid unit(s) for {height}U rack: {unit_list}"
msgstr ""
-#: dcim/models/racks.py:580
+#: netbox/dcim/models/racks.py:580
#, python-brace-format
msgid "The following units have already been reserved: {unit_list}"
msgstr ""
-#: dcim/models/sites.py:49
+#: netbox/dcim/models/sites.py:49
msgid "A top-level region with this name already exists."
msgstr ""
-#: dcim/models/sites.py:59
+#: netbox/dcim/models/sites.py:59
msgid "A top-level region with this slug already exists."
msgstr ""
-#: dcim/models/sites.py:62
+#: netbox/dcim/models/sites.py:62
msgid "region"
msgstr ""
-#: dcim/models/sites.py:63
+#: netbox/dcim/models/sites.py:63
msgid "regions"
msgstr ""
-#: dcim/models/sites.py:102
+#: netbox/dcim/models/sites.py:102
msgid "A top-level site group with this name already exists."
msgstr ""
-#: dcim/models/sites.py:112
+#: netbox/dcim/models/sites.py:112
msgid "A top-level site group with this slug already exists."
msgstr ""
-#: dcim/models/sites.py:115
+#: netbox/dcim/models/sites.py:115
msgid "site group"
msgstr ""
-#: dcim/models/sites.py:116
+#: netbox/dcim/models/sites.py:116
msgid "site groups"
msgstr ""
-#: dcim/models/sites.py:141
+#: netbox/dcim/models/sites.py:141
msgid "Full name of the site"
msgstr ""
-#: dcim/models/sites.py:181 dcim/models/sites.py:279
+#: netbox/dcim/models/sites.py:181 netbox/dcim/models/sites.py:279
msgid "facility"
msgstr ""
-#: dcim/models/sites.py:184 dcim/models/sites.py:282
+#: netbox/dcim/models/sites.py:184 netbox/dcim/models/sites.py:282
msgid "Local facility ID or description"
msgstr ""
-#: dcim/models/sites.py:195
+#: netbox/dcim/models/sites.py:195
msgid "physical address"
msgstr ""
-#: dcim/models/sites.py:198
+#: netbox/dcim/models/sites.py:198
msgid "Physical location of the building"
msgstr ""
-#: dcim/models/sites.py:201
+#: netbox/dcim/models/sites.py:201
msgid "shipping address"
msgstr ""
-#: dcim/models/sites.py:204
+#: netbox/dcim/models/sites.py:204
msgid "If different from the physical address"
msgstr ""
-#: dcim/models/sites.py:238
+#: netbox/dcim/models/sites.py:238
msgid "site"
msgstr ""
-#: dcim/models/sites.py:239
+#: netbox/dcim/models/sites.py:239
msgid "sites"
msgstr ""
-#: dcim/models/sites.py:309
+#: netbox/dcim/models/sites.py:309
msgid "A location with this name already exists within the specified site."
msgstr ""
-#: dcim/models/sites.py:319
+#: netbox/dcim/models/sites.py:319
msgid "A location with this slug already exists within the specified site."
msgstr ""
-#: dcim/models/sites.py:322
+#: netbox/dcim/models/sites.py:322
msgid "location"
msgstr ""
-#: dcim/models/sites.py:323
+#: netbox/dcim/models/sites.py:323
msgid "locations"
msgstr ""
-#: dcim/models/sites.py:337
+#: netbox/dcim/models/sites.py:337
#, python-brace-format
msgid "Parent location ({parent}) must belong to the same site ({site})."
msgstr ""
-#: dcim/tables/cables.py:54
+#: netbox/dcim/tables/cables.py:54
msgid "Termination A"
msgstr ""
-#: dcim/tables/cables.py:59
+#: netbox/dcim/tables/cables.py:59
msgid "Termination B"
msgstr ""
-#: dcim/tables/cables.py:65 wireless/tables/wirelesslink.py:22
+#: netbox/dcim/tables/cables.py:65 netbox/wireless/tables/wirelesslink.py:22
msgid "Device A"
msgstr ""
-#: dcim/tables/cables.py:71 wireless/tables/wirelesslink.py:31
+#: netbox/dcim/tables/cables.py:71 netbox/wireless/tables/wirelesslink.py:31
msgid "Device B"
msgstr ""
-#: dcim/tables/cables.py:77
+#: netbox/dcim/tables/cables.py:77
msgid "Location A"
msgstr ""
-#: dcim/tables/cables.py:83
+#: netbox/dcim/tables/cables.py:83
msgid "Location B"
msgstr ""
-#: dcim/tables/cables.py:89
+#: netbox/dcim/tables/cables.py:89
msgid "Rack A"
msgstr ""
-#: dcim/tables/cables.py:95
+#: netbox/dcim/tables/cables.py:95
msgid "Rack B"
msgstr ""
-#: dcim/tables/cables.py:101
+#: netbox/dcim/tables/cables.py:101
msgid "Site A"
msgstr ""
-#: dcim/tables/cables.py:107
+#: netbox/dcim/tables/cables.py:107
msgid "Site B"
msgstr ""
-#: dcim/tables/connections.py:31 dcim/tables/connections.py:50
-#: dcim/tables/connections.py:71
-#: templates/dcim/inc/connection_endpoints.html:16
+#: netbox/dcim/tables/connections.py:31 netbox/dcim/tables/connections.py:50
+#: netbox/dcim/tables/connections.py:71
+#: netbox/templates/dcim/inc/connection_endpoints.html:16
msgid "Reachable"
msgstr ""
-#: dcim/tables/devices.py:66 dcim/tables/devices.py:111 dcim/tables/racks.py:81
-#: dcim/tables/sites.py:143 extras/tables/tables.py:435
-#: netbox/navigation/menu.py:56 netbox/navigation/menu.py:60
-#: netbox/navigation/menu.py:62 virtualization/forms/model_forms.py:122
-#: virtualization/tables/clusters.py:83 virtualization/views.py:210
+#: netbox/dcim/tables/devices.py:66 netbox/dcim/tables/devices.py:111
+#: 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/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62
+#: netbox/virtualization/forms/model_forms.py:122
+#: netbox/virtualization/tables/clusters.py:83
+#: netbox/virtualization/views.py:210
msgid "Devices"
msgstr ""
-#: dcim/tables/devices.py:71 dcim/tables/devices.py:116
-#: virtualization/tables/clusters.py:88
+#: netbox/dcim/tables/devices.py:71 netbox/dcim/tables/devices.py:116
+#: netbox/virtualization/tables/clusters.py:88
msgid "VMs"
msgstr ""
-#: dcim/tables/devices.py:105 dcim/tables/devices.py:221
-#: extras/forms/model_forms.py:506 templates/dcim/device.html:111
-#: templates/dcim/device/render_config.html:11
-#: templates/dcim/device/render_config.html:14
-#: templates/dcim/devicerole.html:44 templates/dcim/platform.html:41
-#: templates/extras/configtemplate.html:10
-#: templates/virtualization/virtualmachine.html:44
-#: templates/virtualization/virtualmachine/render_config.html:11
-#: templates/virtualization/virtualmachine/render_config.html:14
-#: virtualization/tables/virtualmachines.py:106
+#: netbox/dcim/tables/devices.py:105 netbox/dcim/tables/devices.py:221
+#: 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:14
+#: netbox/templates/dcim/devicerole.html:44
+#: netbox/templates/dcim/platform.html:41
+#: netbox/templates/extras/configtemplate.html:10
+#: netbox/templates/virtualization/virtualmachine.html:44
+#: netbox/templates/virtualization/virtualmachine/render_config.html:11
+#: netbox/templates/virtualization/virtualmachine/render_config.html:14
+#: netbox/virtualization/tables/virtualmachines.py:106
msgid "Config Template"
msgstr ""
-#: dcim/tables/devices.py:155 templates/dcim/sitegroup.html:26
+#: netbox/dcim/tables/devices.py:155 netbox/templates/dcim/sitegroup.html:26
msgid "Site Group"
msgstr ""
-#: dcim/tables/devices.py:192 dcim/tables/devices.py:1051
-#: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:304
-#: ipam/forms/model_forms.py:313 ipam/tables/ip.py:352 ipam/tables/ip.py:418
-#: ipam/tables/ip.py:441 templates/ipam/ipaddress.html:11
-#: virtualization/tables/virtualmachines.py:94
+#: netbox/dcim/tables/devices.py:192 netbox/dcim/tables/devices.py:1051
+#: 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/tables/ip.py:418 netbox/ipam/tables/ip.py:441
+#: netbox/templates/ipam/ipaddress.html:11
+#: netbox/virtualization/tables/virtualmachines.py:94
msgid "IP Address"
msgstr ""
-#: dcim/tables/devices.py:196 dcim/tables/devices.py:1055
-#: virtualization/tables/virtualmachines.py:85
+#: netbox/dcim/tables/devices.py:196 netbox/dcim/tables/devices.py:1055
+#: netbox/virtualization/tables/virtualmachines.py:85
msgid "IPv4 Address"
msgstr ""
-#: dcim/tables/devices.py:200 dcim/tables/devices.py:1059
-#: virtualization/tables/virtualmachines.py:89
+#: netbox/dcim/tables/devices.py:200 netbox/dcim/tables/devices.py:1059
+#: netbox/virtualization/tables/virtualmachines.py:89
msgid "IPv6 Address"
msgstr ""
-#: dcim/tables/devices.py:215
+#: netbox/dcim/tables/devices.py:215
msgid "VC Position"
msgstr ""
-#: dcim/tables/devices.py:218
+#: netbox/dcim/tables/devices.py:218
msgid "VC Priority"
msgstr ""
-#: dcim/tables/devices.py:225 templates/dcim/device_edit.html:38
-#: templates/dcim/devicebay_populate.html:16
+#: netbox/dcim/tables/devices.py:225 netbox/templates/dcim/device_edit.html:38
+#: netbox/templates/dcim/devicebay_populate.html:16
msgid "Parent Device"
msgstr ""
-#: dcim/tables/devices.py:230
+#: netbox/dcim/tables/devices.py:230
msgid "Position (Device Bay)"
msgstr ""
-#: dcim/tables/devices.py:239
+#: netbox/dcim/tables/devices.py:239
msgid "Console ports"
msgstr ""
-#: dcim/tables/devices.py:242
+#: netbox/dcim/tables/devices.py:242
msgid "Console server ports"
msgstr ""
-#: dcim/tables/devices.py:245
+#: netbox/dcim/tables/devices.py:245
msgid "Power ports"
msgstr ""
-#: dcim/tables/devices.py:248
+#: netbox/dcim/tables/devices.py:248
msgid "Power outlets"
msgstr ""
-#: dcim/tables/devices.py:251 dcim/tables/devices.py:1064
-#: dcim/tables/devicetypes.py:125 dcim/views.py:1006 dcim/views.py:1245
-#: dcim/views.py:1931 netbox/navigation/menu.py:81
-#: netbox/navigation/menu.py:237 templates/dcim/device/base.html:37
-#: templates/dcim/device_list.html:43 templates/dcim/devicetype/base.html:34
-#: templates/dcim/module.html:34 templates/dcim/moduletype/base.html:34
-#: templates/dcim/virtualdevicecontext.html:61
-#: templates/dcim/virtualdevicecontext.html:81
-#: templates/virtualization/virtualmachine/base.html:27
-#: templates/virtualization/virtualmachine_list.html:14
-#: virtualization/tables/virtualmachines.py:100 virtualization/views.py:367
-#: wireless/tables/wirelesslan.py:55
+#: netbox/dcim/tables/devices.py:251 netbox/dcim/tables/devices.py:1064
+#: netbox/dcim/tables/devicetypes.py:125 netbox/dcim/views.py:1006
+#: netbox/dcim/views.py:1245 netbox/dcim/views.py:1931
+#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237
+#: netbox/templates/dcim/device/base.html:37
+#: netbox/templates/dcim/device_list.html:43
+#: netbox/templates/dcim/devicetype/base.html:34
+#: netbox/templates/dcim/module.html:34
+#: netbox/templates/dcim/moduletype/base.html:34
+#: netbox/templates/dcim/virtualdevicecontext.html:61
+#: netbox/templates/dcim/virtualdevicecontext.html:81
+#: netbox/templates/virtualization/virtualmachine/base.html:27
+#: netbox/templates/virtualization/virtualmachine_list.html:14
+#: netbox/virtualization/tables/virtualmachines.py:100
+#: netbox/virtualization/views.py:367 netbox/wireless/tables/wirelesslan.py:55
msgid "Interfaces"
msgstr ""
-#: dcim/tables/devices.py:254
+#: netbox/dcim/tables/devices.py:254
msgid "Front ports"
msgstr ""
-#: dcim/tables/devices.py:260
+#: netbox/dcim/tables/devices.py:260
msgid "Device bays"
msgstr ""
-#: dcim/tables/devices.py:263
+#: netbox/dcim/tables/devices.py:263
msgid "Module bays"
msgstr ""
-#: dcim/tables/devices.py:266
+#: netbox/dcim/tables/devices.py:266
msgid "Inventory items"
msgstr ""
-#: dcim/tables/devices.py:305 dcim/tables/modules.py:56
-#: templates/dcim/modulebay.html:17
+#: netbox/dcim/tables/devices.py:305 netbox/dcim/tables/modules.py:56
+#: netbox/templates/dcim/modulebay.html:17
msgid "Module Bay"
msgstr ""
-#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48
-#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024
-#: netbox/navigation/menu.py:90 templates/dcim/device/base.html:52
-#: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49
-#: templates/dcim/inc/panels/inventory_items.html:6
-#: templates/dcim/inventoryitemrole.html:32
+#: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48
+#: netbox/dcim/tables/devicetypes.py:140 netbox/dcim/views.py:1081
+#: netbox/dcim/views.py:2024 netbox/netbox/navigation/menu.py:90
+#: netbox/templates/dcim/device/base.html:52
+#: netbox/templates/dcim/device_list.html:71
+#: netbox/templates/dcim/devicetype/base.html:49
+#: netbox/templates/dcim/inc/panels/inventory_items.html:6
+#: netbox/templates/dcim/inventoryitemrole.html:32
msgid "Inventory Items"
msgstr ""
-#: dcim/tables/devices.py:330
+#: netbox/dcim/tables/devices.py:330
msgid "Cable Color"
msgstr ""
-#: dcim/tables/devices.py:336
+#: netbox/dcim/tables/devices.py:336
msgid "Link Peers"
msgstr ""
-#: dcim/tables/devices.py:339
+#: netbox/dcim/tables/devices.py:339
msgid "Mark Connected"
msgstr ""
-#: dcim/tables/devices.py:455
+#: netbox/dcim/tables/devices.py:455
msgid "Maximum draw (W)"
msgstr ""
-#: dcim/tables/devices.py:458
+#: netbox/dcim/tables/devices.py:458
msgid "Allocated draw (W)"
msgstr ""
-#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747
-#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701
-#: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147
-#: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15
-#: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85
-#: vpn/tables/tunnels.py:98
+#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:747
+#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:602
+#: netbox/ipam/views.py:701 netbox/netbox/navigation/menu.py:145
+#: netbox/netbox/navigation/menu.py:147
+#: netbox/templates/dcim/interface.html:339
+#: netbox/templates/ipam/ipaddress_bulk_add.html:15
+#: netbox/templates/ipam/service.html:40
+#: netbox/templates/virtualization/vminterface.html:85
+#: netbox/vpn/tables/tunnels.py:98
msgid "IP Addresses"
msgstr ""
-#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189
-#: templates/ipam/inc/panels/fhrp_groups.html:6
+#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:189
+#: netbox/templates/ipam/inc/panels/fhrp_groups.html:6
msgid "FHRP Groups"
msgstr ""
-#: dcim/tables/devices.py:576 templates/dcim/interface.html:89
-#: templates/virtualization/vminterface.html:67 templates/vpn/tunnel.html:18
-#: templates/vpn/tunneltermination.html:13 vpn/forms/bulk_edit.py:76
-#: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:42
-#: vpn/forms/filtersets.py:82 vpn/forms/model_forms.py:60
-#: vpn/forms/model_forms.py:145 vpn/tables/tunnels.py:78
+#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89
+#: netbox/templates/virtualization/vminterface.html:67
+#: netbox/templates/vpn/tunnel.html:18
+#: netbox/templates/vpn/tunneltermination.html:13
+#: netbox/vpn/forms/bulk_edit.py:76 netbox/vpn/forms/bulk_import.py:76
+#: netbox/vpn/forms/filtersets.py:42 netbox/vpn/forms/filtersets.py:82
+#: netbox/vpn/forms/model_forms.py:60 netbox/vpn/forms/model_forms.py:145
+#: netbox/vpn/tables/tunnels.py:78
msgid "Tunnel"
msgstr ""
-#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224
-#: templates/dcim/interface.html:65
+#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:224
+#: netbox/templates/dcim/interface.html:65
msgid "Management Only"
msgstr ""
-#: dcim/tables/devices.py:619
+#: netbox/dcim/tables/devices.py:619
msgid "VDCs"
msgstr ""
-#: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49
+#: netbox/dcim/tables/devices.py:870 netbox/templates/dcim/modulebay.html:49
msgid "Installed Module"
msgstr ""
-#: dcim/tables/devices.py:873
+#: netbox/dcim/tables/devices.py:873
msgid "Module Serial"
msgstr ""
-#: dcim/tables/devices.py:877
+#: netbox/dcim/tables/devices.py:877
msgid "Module Asset Tag"
msgstr ""
-#: dcim/tables/devices.py:886
+#: netbox/dcim/tables/devices.py:886
msgid "Module Status"
msgstr ""
-#: dcim/tables/devices.py:928 dcim/tables/devicetypes.py:308
-#: templates/dcim/inventoryitem.html:40
+#: netbox/dcim/tables/devices.py:928 netbox/dcim/tables/devicetypes.py:308
+#: netbox/templates/dcim/inventoryitem.html:40
msgid "Component"
msgstr ""
-#: dcim/tables/devices.py:983
+#: netbox/dcim/tables/devices.py:983
msgid "Items"
msgstr ""
-#: dcim/tables/devicetypes.py:38 netbox/navigation/menu.py:71
-#: netbox/navigation/menu.py:73
+#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71
+#: netbox/netbox/navigation/menu.py:73
msgid "Device Types"
msgstr ""
-#: dcim/tables/devicetypes.py:43 netbox/navigation/menu.py:74
+#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74
msgid "Module Types"
msgstr ""
-#: dcim/tables/devicetypes.py:53 extras/forms/filtersets.py:380
-#: extras/forms/model_forms.py:413 extras/tables/tables.py:430
-#: netbox/navigation/menu.py:65
+#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380
+#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:430
+#: netbox/netbox/navigation/menu.py:65
msgid "Platforms"
msgstr ""
-#: dcim/tables/devicetypes.py:85 templates/dcim/devicetype.html:29
+#: netbox/dcim/tables/devicetypes.py:85
+#: netbox/templates/dcim/devicetype.html:29
msgid "Default Platform"
msgstr ""
-#: dcim/tables/devicetypes.py:89 templates/dcim/devicetype.html:45
+#: netbox/dcim/tables/devicetypes.py:89
+#: netbox/templates/dcim/devicetype.html:45
msgid "Full Depth"
msgstr ""
-#: dcim/tables/devicetypes.py:98
+#: netbox/dcim/tables/devicetypes.py:98
msgid "U Height"
msgstr ""
-#: dcim/tables/devicetypes.py:110 dcim/tables/modules.py:26
+#: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:26
msgid "Instances"
msgstr ""
-#: dcim/tables/devicetypes.py:113 dcim/views.py:946 dcim/views.py:1185
-#: dcim/views.py:1871 netbox/navigation/menu.py:84
-#: templates/dcim/device/base.html:25 templates/dcim/device_list.html:15
-#: templates/dcim/devicetype/base.html:22 templates/dcim/module.html:22
-#: templates/dcim/moduletype/base.html:22
+#: netbox/dcim/tables/devicetypes.py:113 netbox/dcim/views.py:946
+#: netbox/dcim/views.py:1185 netbox/dcim/views.py:1871
+#: netbox/netbox/navigation/menu.py:84
+#: netbox/templates/dcim/device/base.html:25
+#: netbox/templates/dcim/device_list.html:15
+#: netbox/templates/dcim/devicetype/base.html:22
+#: netbox/templates/dcim/module.html:22
+#: netbox/templates/dcim/moduletype/base.html:22
msgid "Console Ports"
msgstr ""
-#: dcim/tables/devicetypes.py:116 dcim/views.py:961 dcim/views.py:1200
-#: dcim/views.py:1886 netbox/navigation/menu.py:85
-#: templates/dcim/device/base.html:28 templates/dcim/device_list.html:22
-#: templates/dcim/devicetype/base.html:25 templates/dcim/module.html:25
-#: templates/dcim/moduletype/base.html:25
+#: netbox/dcim/tables/devicetypes.py:116 netbox/dcim/views.py:961
+#: netbox/dcim/views.py:1200 netbox/dcim/views.py:1886
+#: netbox/netbox/navigation/menu.py:85
+#: netbox/templates/dcim/device/base.html:28
+#: netbox/templates/dcim/device_list.html:22
+#: netbox/templates/dcim/devicetype/base.html:25
+#: netbox/templates/dcim/module.html:25
+#: netbox/templates/dcim/moduletype/base.html:25
msgid "Console Server Ports"
msgstr ""
-#: dcim/tables/devicetypes.py:119 dcim/views.py:976 dcim/views.py:1215
-#: dcim/views.py:1901 netbox/navigation/menu.py:86
-#: templates/dcim/device/base.html:31 templates/dcim/device_list.html:29
-#: templates/dcim/devicetype/base.html:28 templates/dcim/module.html:28
-#: templates/dcim/moduletype/base.html:28
+#: netbox/dcim/tables/devicetypes.py:119 netbox/dcim/views.py:976
+#: netbox/dcim/views.py:1215 netbox/dcim/views.py:1901
+#: netbox/netbox/navigation/menu.py:86
+#: netbox/templates/dcim/device/base.html:31
+#: netbox/templates/dcim/device_list.html:29
+#: netbox/templates/dcim/devicetype/base.html:28
+#: netbox/templates/dcim/module.html:28
+#: netbox/templates/dcim/moduletype/base.html:28
msgid "Power Ports"
msgstr ""
-#: dcim/tables/devicetypes.py:122 dcim/views.py:991 dcim/views.py:1230
-#: dcim/views.py:1916 netbox/navigation/menu.py:87
-#: templates/dcim/device/base.html:34 templates/dcim/device_list.html:36
-#: templates/dcim/devicetype/base.html:31 templates/dcim/module.html:31
-#: templates/dcim/moduletype/base.html:31
+#: netbox/dcim/tables/devicetypes.py:122 netbox/dcim/views.py:991
+#: netbox/dcim/views.py:1230 netbox/dcim/views.py:1916
+#: netbox/netbox/navigation/menu.py:87
+#: netbox/templates/dcim/device/base.html:34
+#: netbox/templates/dcim/device_list.html:36
+#: netbox/templates/dcim/devicetype/base.html:31
+#: netbox/templates/dcim/module.html:31
+#: netbox/templates/dcim/moduletype/base.html:31
msgid "Power Outlets"
msgstr ""
-#: dcim/tables/devicetypes.py:128 dcim/views.py:1021 dcim/views.py:1260
-#: dcim/views.py:1952 netbox/navigation/menu.py:82
-#: templates/dcim/device/base.html:40 templates/dcim/devicetype/base.html:37
-#: templates/dcim/module.html:37 templates/dcim/moduletype/base.html:37
+#: netbox/dcim/tables/devicetypes.py:128 netbox/dcim/views.py:1021
+#: netbox/dcim/views.py:1260 netbox/dcim/views.py:1952
+#: netbox/netbox/navigation/menu.py:82
+#: netbox/templates/dcim/device/base.html:40
+#: netbox/templates/dcim/devicetype/base.html:37
+#: netbox/templates/dcim/module.html:37
+#: netbox/templates/dcim/moduletype/base.html:37
msgid "Front Ports"
msgstr ""
-#: dcim/tables/devicetypes.py:131 dcim/views.py:1036 dcim/views.py:1275
-#: dcim/views.py:1967 netbox/navigation/menu.py:83
-#: templates/dcim/device/base.html:43 templates/dcim/device_list.html:50
-#: templates/dcim/devicetype/base.html:40 templates/dcim/module.html:40
-#: templates/dcim/moduletype/base.html:40
+#: netbox/dcim/tables/devicetypes.py:131 netbox/dcim/views.py:1036
+#: netbox/dcim/views.py:1275 netbox/dcim/views.py:1967
+#: netbox/netbox/navigation/menu.py:83
+#: netbox/templates/dcim/device/base.html:43
+#: netbox/templates/dcim/device_list.html:50
+#: netbox/templates/dcim/devicetype/base.html:40
+#: netbox/templates/dcim/module.html:40
+#: netbox/templates/dcim/moduletype/base.html:40
msgid "Rear Ports"
msgstr ""
-#: dcim/tables/devicetypes.py:134 dcim/views.py:1066 dcim/views.py:2005
-#: netbox/navigation/menu.py:89 templates/dcim/device/base.html:49
-#: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46
+#: netbox/dcim/tables/devicetypes.py:134 netbox/dcim/views.py:1066
+#: netbox/dcim/views.py:2005 netbox/netbox/navigation/menu.py:89
+#: netbox/templates/dcim/device/base.html:49
+#: netbox/templates/dcim/device_list.html:57
+#: netbox/templates/dcim/devicetype/base.html:46
msgid "Device Bays"
msgstr ""
-#: dcim/tables/devicetypes.py:137 dcim/views.py:1051 dcim/views.py:1986
-#: netbox/navigation/menu.py:88 templates/dcim/device/base.html:46
-#: templates/dcim/device_list.html:64 templates/dcim/devicetype/base.html:43
+#: netbox/dcim/tables/devicetypes.py:137 netbox/dcim/views.py:1051
+#: netbox/dcim/views.py:1986 netbox/netbox/navigation/menu.py:88
+#: netbox/templates/dcim/device/base.html:46
+#: netbox/templates/dcim/device_list.html:64
+#: netbox/templates/dcim/devicetype/base.html:43
msgid "Module Bays"
msgstr ""
-#: dcim/tables/power.py:36 netbox/navigation/menu.py:282
-#: templates/dcim/powerpanel.html:51
+#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282
+#: netbox/templates/dcim/powerpanel.html:51
msgid "Power Feeds"
msgstr ""
-#: dcim/tables/power.py:80 templates/dcim/powerfeed.html:99
+#: netbox/dcim/tables/power.py:80 netbox/templates/dcim/powerfeed.html:99
msgid "Max Utilization"
msgstr ""
-#: dcim/tables/power.py:84
+#: netbox/dcim/tables/power.py:84
msgid "Available Power (VA)"
msgstr ""
-#: dcim/tables/racks.py:29 dcim/tables/sites.py:138
-#: netbox/navigation/menu.py:24 netbox/navigation/menu.py:26
+#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:138
+#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26
msgid "Racks"
msgstr ""
-#: dcim/tables/racks.py:73 templates/dcim/device.html:310
-#: templates/dcim/rack.html:90
+#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:311
+#: netbox/templates/dcim/rack.html:90
msgid "Height"
msgstr ""
-#: dcim/tables/racks.py:85
+#: netbox/dcim/tables/racks.py:85
msgid "Space"
msgstr ""
-#: dcim/tables/racks.py:96 templates/dcim/rack.html:100
+#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100
msgid "Outer Width"
msgstr ""
-#: dcim/tables/racks.py:100 templates/dcim/rack.html:110
+#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110
msgid "Outer Depth"
msgstr ""
-#: dcim/tables/racks.py:108
+#: netbox/dcim/tables/racks.py:108
msgid "Max Weight"
msgstr ""
-#: dcim/tables/sites.py:30 dcim/tables/sites.py:57
-#: extras/forms/filtersets.py:360 extras/forms/model_forms.py:393
-#: ipam/forms/bulk_edit.py:129 ipam/forms/model_forms.py:151
-#: ipam/tables/asn.py:66 netbox/navigation/menu.py:15
-#: netbox/navigation/menu.py:17
+#: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57
+#: netbox/extras/forms/filtersets.py:360 netbox/extras/forms/model_forms.py:393
+#: netbox/ipam/forms/bulk_edit.py:129 netbox/ipam/forms/model_forms.py:151
+#: netbox/ipam/tables/asn.py:66 netbox/netbox/navigation/menu.py:15
+#: netbox/netbox/navigation/menu.py:17
msgid "Sites"
msgstr ""
-#: dcim/tests/test_api.py:50
+#: netbox/dcim/tests/test_api.py:50
msgid "Test case must set peer_termination_type"
msgstr ""
-#: dcim/views.py:137
+#: netbox/dcim/views.py:137
#, python-brace-format
msgid "Disconnected {count} {type}"
msgstr ""
-#: dcim/views.py:698 netbox/navigation/menu.py:28
+#: netbox/dcim/views.py:698 netbox/netbox/navigation/menu.py:28
msgid "Reservations"
msgstr ""
-#: dcim/views.py:716 templates/dcim/location.html:90
-#: templates/dcim/site.html:139
+#: netbox/dcim/views.py:716 netbox/templates/dcim/location.html:90
+#: netbox/templates/dcim/site.html:140
msgid "Non-Racked Devices"
msgstr ""
-#: dcim/views.py:2037 extras/forms/model_forms.py:453
-#: templates/extras/configcontext.html:10
-#: virtualization/forms/model_forms.py:225 virtualization/views.py:407
+#: netbox/dcim/views.py:2037 netbox/extras/forms/model_forms.py:453
+#: netbox/templates/extras/configcontext.html:10
+#: netbox/virtualization/forms/model_forms.py:225
+#: netbox/virtualization/views.py:407
msgid "Config Context"
msgstr ""
-#: dcim/views.py:2047 virtualization/views.py:417
+#: netbox/dcim/views.py:2047 netbox/virtualization/views.py:417
msgid "Render Config"
msgstr ""
-#: dcim/views.py:2097 extras/tables/tables.py:440 netbox/navigation/menu.py:234
-#: netbox/navigation/menu.py:236 virtualization/views.py:185
+#: netbox/dcim/views.py:2097 netbox/extras/tables/tables.py:440
+#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236
+#: netbox/virtualization/views.py:185
msgid "Virtual Machines"
msgstr ""
-#: dcim/views.py:2989 ipam/tables/ip.py:233
+#: netbox/dcim/views.py:2989 netbox/ipam/tables/ip.py:233
msgid "Children"
msgstr ""
-#: extras/api/customfields.py:88
+#: netbox/extras/api/customfields.py:88
#, python-brace-format
msgid "Unknown related object(s): {name}"
msgstr ""
-#: extras/api/serializers_/customfields.py:74
+#: netbox/extras/api/serializers_/customfields.py:74
msgid "Changing the type of custom fields is not supported."
msgstr ""
-#: extras/api/serializers_/scripts.py:71 extras/api/serializers_/scripts.py:76
+#: netbox/extras/api/serializers_/scripts.py:71
+#: netbox/extras/api/serializers_/scripts.py:76
msgid "Scheduling is not enabled for this script."
msgstr ""
-#: extras/choices.py:30 extras/forms/misc.py:14
+#: netbox/extras/choices.py:30 netbox/extras/forms/misc.py:14
msgid "Text"
msgstr ""
-#: extras/choices.py:31
+#: netbox/extras/choices.py:31
msgid "Text (long)"
msgstr ""
-#: extras/choices.py:32
+#: netbox/extras/choices.py:32
msgid "Integer"
msgstr ""
-#: extras/choices.py:33
+#: netbox/extras/choices.py:33
msgid "Decimal"
msgstr ""
-#: extras/choices.py:34
+#: netbox/extras/choices.py:34
msgid "Boolean (true/false)"
msgstr ""
-#: extras/choices.py:35
+#: netbox/extras/choices.py:35
msgid "Date"
msgstr ""
-#: extras/choices.py:36
+#: netbox/extras/choices.py:36
msgid "Date & time"
msgstr ""
-#: extras/choices.py:38
+#: netbox/extras/choices.py:38
msgid "JSON"
msgstr ""
-#: extras/choices.py:39
+#: netbox/extras/choices.py:39
msgid "Selection"
msgstr ""
-#: extras/choices.py:40
+#: netbox/extras/choices.py:40
msgid "Multiple selection"
msgstr ""
-#: extras/choices.py:42
+#: netbox/extras/choices.py:42
msgid "Multiple objects"
msgstr ""
-#: extras/choices.py:53 netbox/preferences.py:21
-#: templates/extras/customfield.html:66 vpn/choices.py:20
-#: wireless/choices.py:27
+#: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21
+#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20
+#: netbox/wireless/choices.py:27
msgid "Disabled"
msgstr ""
-#: extras/choices.py:54
+#: netbox/extras/choices.py:54
msgid "Loose"
msgstr ""
-#: extras/choices.py:55
+#: netbox/extras/choices.py:55
msgid "Exact"
msgstr ""
-#: extras/choices.py:66
+#: netbox/extras/choices.py:66
msgid "Always"
msgstr ""
-#: extras/choices.py:67
+#: netbox/extras/choices.py:67
msgid "If set"
msgstr ""
-#: extras/choices.py:68 extras/choices.py:81
+#: netbox/extras/choices.py:68 netbox/extras/choices.py:81
msgid "Hidden"
msgstr ""
-#: extras/choices.py:79
+#: netbox/extras/choices.py:79
msgid "Yes"
msgstr ""
-#: extras/choices.py:80
+#: netbox/extras/choices.py:80
msgid "No"
msgstr ""
-#: extras/choices.py:108 templates/tenancy/contact.html:57
-#: tenancy/forms/bulk_edit.py:118 wireless/forms/model_forms.py:162
+#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57
+#: netbox/tenancy/forms/bulk_edit.py:118
+#: netbox/wireless/forms/model_forms.py:162
msgid "Link"
msgstr ""
-#: extras/choices.py:122
+#: netbox/extras/choices.py:122
msgid "Newest"
msgstr ""
-#: extras/choices.py:123
+#: netbox/extras/choices.py:123
msgid "Oldest"
msgstr ""
-#: extras/choices.py:139 templates/generic/object.html:61
+#: netbox/extras/choices.py:139 netbox/templates/generic/object.html:61
msgid "Updated"
msgstr ""
-#: extras/choices.py:140
+#: netbox/extras/choices.py:140
msgid "Deleted"
msgstr ""
-#: extras/choices.py:157 extras/choices.py:181
+#: netbox/extras/choices.py:157 netbox/extras/choices.py:181
msgid "Info"
msgstr ""
-#: extras/choices.py:158 extras/choices.py:180
+#: netbox/extras/choices.py:158 netbox/extras/choices.py:180
msgid "Success"
msgstr ""
-#: extras/choices.py:159 extras/choices.py:182
+#: netbox/extras/choices.py:159 netbox/extras/choices.py:182
msgid "Warning"
msgstr ""
-#: extras/choices.py:160
+#: netbox/extras/choices.py:160
msgid "Danger"
msgstr ""
-#: extras/choices.py:178
+#: netbox/extras/choices.py:178
msgid "Debug"
msgstr ""
-#: extras/choices.py:179 netbox/choices.py:104
+#: netbox/extras/choices.py:179 netbox/netbox/choices.py:104
msgid "Default"
msgstr ""
-#: extras/choices.py:183
+#: netbox/extras/choices.py:183
msgid "Failure"
msgstr ""
-#: extras/choices.py:199
+#: netbox/extras/choices.py:199
msgid "Hourly"
msgstr ""
-#: extras/choices.py:200
+#: netbox/extras/choices.py:200
msgid "12 hours"
msgstr ""
-#: extras/choices.py:201
+#: netbox/extras/choices.py:201
msgid "Daily"
msgstr ""
-#: extras/choices.py:202
+#: netbox/extras/choices.py:202
msgid "Weekly"
msgstr ""
-#: extras/choices.py:203
+#: netbox/extras/choices.py:203
msgid "30 days"
msgstr ""
-#: extras/choices.py:268 extras/tables/tables.py:296
-#: templates/dcim/virtualchassis_edit.html:107
-#: templates/extras/eventrule.html:40
-#: templates/generic/bulk_add_component.html:68
-#: templates/generic/object_edit.html:47 templates/generic/object_edit.html:80
-#: templates/ipam/inc/ipaddress_edit_header.html:7
+#: netbox/extras/choices.py:268 netbox/extras/tables/tables.py:296
+#: netbox/templates/dcim/virtualchassis_edit.html:107
+#: netbox/templates/extras/eventrule.html:40
+#: netbox/templates/generic/bulk_add_component.html:68
+#: netbox/templates/generic/object_edit.html:47
+#: netbox/templates/generic/object_edit.html:80
+#: netbox/templates/ipam/inc/ipaddress_edit_header.html:7
msgid "Create"
msgstr ""
-#: extras/choices.py:269 extras/tables/tables.py:299
-#: templates/extras/eventrule.html:44
+#: netbox/extras/choices.py:269 netbox/extras/tables/tables.py:299
+#: netbox/templates/extras/eventrule.html:44
msgid "Update"
msgstr ""
-#: extras/choices.py:270 extras/tables/tables.py:302
-#: templates/circuits/inc/circuit_termination.html:23
-#: templates/dcim/inc/panels/inventory_items.html:37
-#: templates/dcim/moduletype/component_templates.html:23
-#: templates/dcim/powerpanel.html:66 templates/extras/eventrule.html:48
-#: templates/extras/script_list.html:37 templates/generic/bulk_delete.html:20
-#: templates/generic/bulk_delete.html:66
-#: templates/generic/object_delete.html:19 templates/htmx/delete_form.html:57
-#: templates/ipam/inc/panels/fhrp_groups.html:48
-#: templates/users/objectpermission.html:46
-#: utilities/templates/buttons/delete.html:11
+#: netbox/extras/choices.py:270 netbox/extras/tables/tables.py:302
+#: netbox/templates/circuits/inc/circuit_termination.html:23
+#: netbox/templates/dcim/inc/panels/inventory_items.html:37
+#: netbox/templates/dcim/moduletype/component_templates.html:23
+#: netbox/templates/dcim/powerpanel.html:66
+#: netbox/templates/extras/eventrule.html:48
+#: netbox/templates/extras/script_list.html:37
+#: netbox/templates/generic/bulk_delete.html:20
+#: netbox/templates/generic/bulk_delete.html:66
+#: netbox/templates/generic/object_delete.html:19
+#: netbox/templates/htmx/delete_form.html:57
+#: netbox/templates/ipam/inc/panels/fhrp_groups.html:48
+#: netbox/templates/users/objectpermission.html:46
+#: netbox/utilities/templates/buttons/delete.html:11
msgid "Delete"
msgstr ""
-#: extras/choices.py:294 netbox/choices.py:57 netbox/choices.py:105
+#: netbox/extras/choices.py:294 netbox/netbox/choices.py:57
+#: netbox/netbox/choices.py:105
msgid "Blue"
msgstr ""
-#: extras/choices.py:295 netbox/choices.py:56 netbox/choices.py:106
+#: netbox/extras/choices.py:295 netbox/netbox/choices.py:56
+#: netbox/netbox/choices.py:106
msgid "Indigo"
msgstr ""
-#: extras/choices.py:296 netbox/choices.py:54 netbox/choices.py:107
+#: netbox/extras/choices.py:296 netbox/netbox/choices.py:54
+#: netbox/netbox/choices.py:107
msgid "Purple"
msgstr ""
-#: extras/choices.py:297 netbox/choices.py:51 netbox/choices.py:108
+#: netbox/extras/choices.py:297 netbox/netbox/choices.py:51
+#: netbox/netbox/choices.py:108
msgid "Pink"
msgstr ""
-#: extras/choices.py:298 netbox/choices.py:50 netbox/choices.py:109
+#: netbox/extras/choices.py:298 netbox/netbox/choices.py:50
+#: netbox/netbox/choices.py:109
msgid "Red"
msgstr ""
-#: extras/choices.py:299 netbox/choices.py:68 netbox/choices.py:110
+#: netbox/extras/choices.py:299 netbox/netbox/choices.py:68
+#: netbox/netbox/choices.py:110
msgid "Orange"
msgstr ""
-#: extras/choices.py:300 netbox/choices.py:66 netbox/choices.py:111
+#: netbox/extras/choices.py:300 netbox/netbox/choices.py:66
+#: netbox/netbox/choices.py:111
msgid "Yellow"
msgstr ""
-#: extras/choices.py:301 netbox/choices.py:63 netbox/choices.py:112
+#: netbox/extras/choices.py:301 netbox/netbox/choices.py:63
+#: netbox/netbox/choices.py:112
msgid "Green"
msgstr ""
-#: extras/choices.py:302 netbox/choices.py:60 netbox/choices.py:113
+#: netbox/extras/choices.py:302 netbox/netbox/choices.py:60
+#: netbox/netbox/choices.py:113
msgid "Teal"
msgstr ""
-#: extras/choices.py:303 netbox/choices.py:59 netbox/choices.py:114
+#: netbox/extras/choices.py:303 netbox/netbox/choices.py:59
+#: netbox/netbox/choices.py:114
msgid "Cyan"
msgstr ""
-#: extras/choices.py:304 netbox/choices.py:115
+#: netbox/extras/choices.py:304 netbox/netbox/choices.py:115
msgid "Gray"
msgstr ""
-#: extras/choices.py:305 netbox/choices.py:74 netbox/choices.py:116
+#: netbox/extras/choices.py:305 netbox/netbox/choices.py:74
+#: netbox/netbox/choices.py:116
msgid "Black"
msgstr ""
-#: extras/choices.py:306 netbox/choices.py:75 netbox/choices.py:117
+#: netbox/extras/choices.py:306 netbox/netbox/choices.py:75
+#: netbox/netbox/choices.py:117
msgid "White"
msgstr ""
-#: extras/choices.py:320 extras/forms/model_forms.py:242
-#: extras/forms/model_forms.py:324 templates/extras/webhook.html:10
+#: netbox/extras/choices.py:320 netbox/extras/forms/model_forms.py:242
+#: netbox/extras/forms/model_forms.py:324
+#: netbox/templates/extras/webhook.html:10
msgid "Webhook"
msgstr ""
-#: extras/choices.py:321 extras/forms/model_forms.py:312
-#: templates/extras/script/base.html:29
+#: netbox/extras/choices.py:321 netbox/extras/forms/model_forms.py:312
+#: netbox/templates/extras/script/base.html:29
msgid "Script"
msgstr ""
-#: extras/conditions.py:54
+#: netbox/extras/conditions.py:54
#, python-brace-format
msgid "Unknown operator: {op}. Must be one of: {operators}"
msgstr ""
-#: extras/conditions.py:58
+#: netbox/extras/conditions.py:58
#, python-brace-format
msgid "Unsupported value type: {value}"
msgstr ""
-#: extras/conditions.py:60
+#: netbox/extras/conditions.py:60
#, python-brace-format
msgid "Invalid type for {op} operation: {value}"
msgstr ""
-#: extras/conditions.py:137
+#: netbox/extras/conditions.py:137
#, python-brace-format
msgid "Ruleset must be a dictionary, not {ruleset}."
msgstr ""
-#: extras/conditions.py:139
+#: netbox/extras/conditions.py:139
#, python-brace-format
msgid "Ruleset must have exactly one logical operator (found {ruleset})"
msgstr ""
-#: extras/conditions.py:145
+#: netbox/extras/conditions.py:145
#, python-brace-format
msgid "Invalid logic type: {logic} (must be '{op_and}' or '{op_or}')"
msgstr ""
-#: extras/dashboard/forms.py:38
+#: netbox/extras/dashboard/forms.py:38
msgid "Widget type"
msgstr ""
-#: extras/dashboard/utils.py:36
+#: netbox/extras/dashboard/utils.py:36
#, python-brace-format
msgid "Unregistered widget class: {name}"
msgstr ""
-#: extras/dashboard/widgets.py:126
+#: netbox/extras/dashboard/widgets.py:126
#, python-brace-format
msgid "{class_name} must define a render() method."
msgstr ""
-#: extras/dashboard/widgets.py:161
+#: netbox/extras/dashboard/widgets.py:161
msgid "Note"
msgstr ""
-#: extras/dashboard/widgets.py:162
+#: netbox/extras/dashboard/widgets.py:162
msgid "Display some arbitrary custom content. Markdown is supported."
msgstr ""
-#: extras/dashboard/widgets.py:175
+#: netbox/extras/dashboard/widgets.py:175
msgid "Object Counts"
msgstr ""
-#: extras/dashboard/widgets.py:176
+#: netbox/extras/dashboard/widgets.py:176
msgid ""
"Display a set of NetBox models and the number of objects created for each "
"type."
msgstr ""
-#: extras/dashboard/widgets.py:186
+#: netbox/extras/dashboard/widgets.py:186
msgid "Filters to apply when counting the number of objects"
msgstr ""
-#: extras/dashboard/widgets.py:194
+#: netbox/extras/dashboard/widgets.py:194
msgid "Invalid format. Object filters must be passed as a dictionary."
msgstr ""
-#: extras/dashboard/widgets.py:222
+#: netbox/extras/dashboard/widgets.py:222
msgid "Object List"
msgstr ""
-#: extras/dashboard/widgets.py:223
+#: netbox/extras/dashboard/widgets.py:223
msgid "Display an arbitrary list of objects."
msgstr ""
-#: extras/dashboard/widgets.py:236
+#: netbox/extras/dashboard/widgets.py:236
msgid "The default number of objects to display"
msgstr ""
-#: extras/dashboard/widgets.py:248
+#: netbox/extras/dashboard/widgets.py:248
msgid "Invalid format. URL parameters must be passed as a dictionary."
msgstr ""
-#: extras/dashboard/widgets.py:283
+#: netbox/extras/dashboard/widgets.py:284
msgid "RSS Feed"
msgstr ""
-#: extras/dashboard/widgets.py:288
+#: netbox/extras/dashboard/widgets.py:289
msgid "Embed an RSS feed from an external website."
msgstr ""
-#: extras/dashboard/widgets.py:295
+#: netbox/extras/dashboard/widgets.py:296
msgid "Feed URL"
msgstr ""
-#: extras/dashboard/widgets.py:300
+#: netbox/extras/dashboard/widgets.py:301
msgid "The maximum number of objects to display"
msgstr ""
-#: extras/dashboard/widgets.py:305
+#: netbox/extras/dashboard/widgets.py:306
msgid "How long to stored the cached content (in seconds)"
msgstr ""
-#: extras/dashboard/widgets.py:357 templates/account/base.html:10
-#: templates/account/bookmarks.html:7 templates/inc/user_menu.html:30
+#: netbox/extras/dashboard/widgets.py:358 netbox/templates/account/base.html:10
+#: netbox/templates/account/bookmarks.html:7
+#: netbox/templates/inc/user_menu.html:30
msgid "Bookmarks"
msgstr ""
-#: extras/dashboard/widgets.py:361
+#: netbox/extras/dashboard/widgets.py:362
msgid "Show your personal bookmarks"
msgstr ""
-#: extras/events.py:128
+#: netbox/extras/events.py:128
#, python-brace-format
msgid "Unknown action type for an event rule: {action_type}"
msgstr ""
-#: extras/events.py:176
+#: netbox/extras/events.py:176
#, python-brace-format
msgid "Cannot import events pipeline {name} error: {error}"
msgstr ""
-#: extras/filtersets.py:45
+#: netbox/extras/filtersets.py:45
msgid "Script module (ID)"
msgstr ""
-#: extras/filtersets.py:249 extras/filtersets.py:589 extras/filtersets.py:621
+#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589
+#: netbox/extras/filtersets.py:621
msgid "Data file (ID)"
msgstr ""
-#: extras/filtersets.py:526 virtualization/forms/filtersets.py:118
+#: netbox/extras/filtersets.py:526
+#: netbox/virtualization/forms/filtersets.py:118
msgid "Cluster type"
msgstr ""
-#: extras/filtersets.py:532 virtualization/filtersets.py:95
-#: virtualization/filtersets.py:147
+#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95
+#: netbox/virtualization/filtersets.py:147
msgid "Cluster type (slug)"
msgstr ""
-#: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476
-#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624
-#: virtualization/forms/filtersets.py:112
+#: netbox/extras/filtersets.py:537 netbox/ipam/forms/bulk_edit.py:476
+#: netbox/ipam/forms/filtersets.py:464 netbox/ipam/forms/model_forms.py:624
+#: netbox/virtualization/forms/filtersets.py:112
msgid "Cluster group"
msgstr ""
-#: extras/filtersets.py:543 virtualization/filtersets.py:136
+#: netbox/extras/filtersets.py:543 netbox/virtualization/filtersets.py:136
msgid "Cluster group (slug)"
msgstr ""
-#: extras/filtersets.py:553 tenancy/forms/forms.py:16 tenancy/forms/forms.py:39
+#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16
+#: netbox/tenancy/forms/forms.py:39
msgid "Tenant group"
msgstr ""
-#: extras/filtersets.py:559 tenancy/filtersets.py:189 tenancy/filtersets.py:209
+#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189
+#: netbox/tenancy/filtersets.py:209
msgid "Tenant group (slug)"
msgstr ""
-#: extras/filtersets.py:575 extras/forms/model_forms.py:371
-#: templates/extras/tag.html:11
+#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371
+#: netbox/templates/extras/tag.html:11
msgid "Tag"
msgstr ""
-#: extras/filtersets.py:581
+#: netbox/extras/filtersets.py:581
msgid "Tag (slug)"
msgstr ""
-#: extras/filtersets.py:645 extras/forms/filtersets.py:438
+#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438
msgid "Has local config context data"
msgstr ""
-#: extras/filtersets.py:670
+#: netbox/extras/filtersets.py:670
msgid "User name"
msgstr ""
-#: extras/forms/bulk_edit.py:32 extras/forms/filtersets.py:57
+#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57
msgid "Group name"
msgstr ""
-#: extras/forms/bulk_edit.py:40 extras/forms/filtersets.py:65
-#: extras/tables/tables.py:49 templates/extras/customfield.html:38
-#: templates/generic/bulk_import.html:118
+#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65
+#: netbox/extras/tables/tables.py:49
+#: netbox/templates/extras/customfield.html:38
+#: netbox/templates/generic/bulk_import.html:118
msgid "Required"
msgstr ""
-#: extras/forms/bulk_edit.py:53 extras/forms/bulk_import.py:57
-#: extras/forms/filtersets.py:79 extras/models/customfields.py:194
+#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57
+#: netbox/extras/forms/filtersets.py:79
+#: netbox/extras/models/customfields.py:194
msgid "UI visible"
msgstr ""
-#: extras/forms/bulk_edit.py:58 extras/forms/bulk_import.py:63
-#: extras/forms/filtersets.py:84 extras/models/customfields.py:201
+#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63
+#: netbox/extras/forms/filtersets.py:84
+#: netbox/extras/models/customfields.py:201
msgid "UI editable"
msgstr ""
-#: extras/forms/bulk_edit.py:63 extras/forms/filtersets.py:87
+#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87
msgid "Is cloneable"
msgstr ""
-#: extras/forms/bulk_edit.py:103 extras/forms/filtersets.py:127
+#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127
msgid "New window"
msgstr ""
-#: extras/forms/bulk_edit.py:112
+#: netbox/extras/forms/bulk_edit.py:112
msgid "Button class"
msgstr ""
-#: extras/forms/bulk_edit.py:129 extras/forms/filtersets.py:165
-#: extras/models/models.py:437
+#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165
+#: netbox/extras/models/models.py:437
msgid "MIME type"
msgstr ""
-#: extras/forms/bulk_edit.py:134 extras/forms/filtersets.py:168
+#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168
msgid "File extension"
msgstr ""
-#: extras/forms/bulk_edit.py:139 extras/forms/filtersets.py:172
+#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172
msgid "As attachment"
msgstr ""
-#: extras/forms/bulk_edit.py:167 extras/forms/filtersets.py:214
-#: extras/tables/tables.py:219 templates/extras/savedfilter.html:29
+#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214
+#: netbox/extras/tables/tables.py:219
+#: netbox/templates/extras/savedfilter.html:29
msgid "Shared"
msgstr ""
-#: extras/forms/bulk_edit.py:190 extras/forms/filtersets.py:243
-#: extras/models/models.py:202
+#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243
+#: netbox/extras/models/models.py:202
msgid "HTTP method"
msgstr ""
-#: extras/forms/bulk_edit.py:194 extras/forms/filtersets.py:237
-#: templates/extras/webhook.html:30
+#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237
+#: netbox/templates/extras/webhook.html:30
msgid "Payload URL"
msgstr ""
-#: extras/forms/bulk_edit.py:199 extras/models/models.py:242
+#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242
msgid "SSL verification"
msgstr ""
-#: extras/forms/bulk_edit.py:202 templates/extras/webhook.html:38
+#: netbox/extras/forms/bulk_edit.py:202 netbox/templates/extras/webhook.html:38
msgid "Secret"
msgstr ""
-#: extras/forms/bulk_edit.py:207
+#: netbox/extras/forms/bulk_edit.py:207
msgid "CA file path"
msgstr ""
-#: extras/forms/bulk_edit.py:226
+#: netbox/extras/forms/bulk_edit.py:226
msgid "On create"
msgstr ""
-#: extras/forms/bulk_edit.py:231
+#: netbox/extras/forms/bulk_edit.py:231
msgid "On update"
msgstr ""
-#: extras/forms/bulk_edit.py:236
+#: netbox/extras/forms/bulk_edit.py:236
msgid "On delete"
msgstr ""
-#: extras/forms/bulk_edit.py:241
+#: netbox/extras/forms/bulk_edit.py:241
msgid "On job start"
msgstr ""
-#: extras/forms/bulk_edit.py:246
+#: netbox/extras/forms/bulk_edit.py:246
msgid "On job end"
msgstr ""
-#: extras/forms/bulk_edit.py:283
+#: netbox/extras/forms/bulk_edit.py:283
msgid "Is active"
msgstr ""
-#: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115
-#: extras/forms/bulk_import.py:136 extras/forms/bulk_import.py:159
-#: extras/forms/bulk_import.py:183 extras/forms/filtersets.py:115
-#: extras/forms/filtersets.py:202 extras/forms/model_forms.py:43
-#: extras/forms/model_forms.py:131 extras/forms/model_forms.py:163
-#: extras/forms/model_forms.py:204 extras/forms/model_forms.py:261
-#: extras/forms/model_forms.py:365 users/forms/model_forms.py:273
+#: netbox/extras/forms/bulk_import.py:34 netbox/extras/forms/bulk_import.py:115
+#: netbox/extras/forms/bulk_import.py:136
+#: netbox/extras/forms/bulk_import.py:159
+#: netbox/extras/forms/bulk_import.py:183 netbox/extras/forms/filtersets.py:115
+#: netbox/extras/forms/filtersets.py:202 netbox/extras/forms/model_forms.py:43
+#: netbox/extras/forms/model_forms.py:131
+#: netbox/extras/forms/model_forms.py:163
+#: netbox/extras/forms/model_forms.py:204
+#: netbox/extras/forms/model_forms.py:261
+#: netbox/extras/forms/model_forms.py:365 netbox/users/forms/model_forms.py:273
msgid "Object types"
msgstr ""
-#: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117
-#: extras/forms/bulk_import.py:138 extras/forms/bulk_import.py:161
-#: extras/forms/bulk_import.py:185 tenancy/forms/bulk_import.py:96
+#: netbox/extras/forms/bulk_import.py:36 netbox/extras/forms/bulk_import.py:117
+#: netbox/extras/forms/bulk_import.py:138
+#: netbox/extras/forms/bulk_import.py:161
+#: netbox/extras/forms/bulk_import.py:185
+#: netbox/tenancy/forms/bulk_import.py:96
msgid "One or more assigned object types"
msgstr ""
-#: extras/forms/bulk_import.py:41
+#: netbox/extras/forms/bulk_import.py:41
msgid "Field data type (e.g. text, integer, etc.)"
msgstr ""
-#: extras/forms/bulk_import.py:44 extras/forms/filtersets.py:186
-#: extras/forms/filtersets.py:260 extras/forms/model_forms.py:230
-#: tenancy/forms/filtersets.py:92
+#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186
+#: netbox/extras/forms/filtersets.py:260 netbox/extras/forms/model_forms.py:230
+#: netbox/tenancy/forms/filtersets.py:92
msgid "Object type"
msgstr ""
-#: extras/forms/bulk_import.py:47
+#: netbox/extras/forms/bulk_import.py:47
msgid "Object type (for object or multi-object fields)"
msgstr ""
-#: extras/forms/bulk_import.py:50 extras/forms/filtersets.py:74
+#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74
msgid "Choice set"
msgstr ""
-#: extras/forms/bulk_import.py:54
+#: netbox/extras/forms/bulk_import.py:54
msgid "Choice set (for selection fields)"
msgstr ""
-#: extras/forms/bulk_import.py:60
+#: netbox/extras/forms/bulk_import.py:60
msgid "Whether the custom field is displayed in the UI"
msgstr ""
-#: extras/forms/bulk_import.py:66
+#: netbox/extras/forms/bulk_import.py:66
msgid "Whether the custom field is editable in the UI"
msgstr ""
-#: extras/forms/bulk_import.py:82
+#: netbox/extras/forms/bulk_import.py:82
msgid "The base set of predefined choices to use (if any)"
msgstr ""
-#: extras/forms/bulk_import.py:88
+#: netbox/extras/forms/bulk_import.py:88
msgid ""
"Quoted string of comma-separated field choices with optional labels "
"separated by colon: \"choice1:First Choice,choice2:Second Choice\""
msgstr ""
-#: extras/forms/bulk_import.py:120 extras/models/models.py:351
+#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351
msgid "button class"
msgstr ""
-#: extras/forms/bulk_import.py:123 extras/models/models.py:355
+#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355
msgid ""
"The class of the first link in a group will be used for the dropdown button"
msgstr ""
-#: extras/forms/bulk_import.py:188
+#: netbox/extras/forms/bulk_import.py:188
msgid "Action object"
msgstr ""
-#: extras/forms/bulk_import.py:190
+#: netbox/extras/forms/bulk_import.py:190
msgid "Webhook name or script as dotted path module.Class"
msgstr ""
-#: extras/forms/bulk_import.py:211
+#: netbox/extras/forms/bulk_import.py:211
#, python-brace-format
msgid "Webhook {name} not found"
msgstr ""
-#: extras/forms/bulk_import.py:220
+#: netbox/extras/forms/bulk_import.py:220
#, python-brace-format
msgid "Script {name} not found"
msgstr ""
-#: extras/forms/bulk_import.py:239
+#: netbox/extras/forms/bulk_import.py:239
msgid "Assigned object type"
msgstr ""
-#: extras/forms/bulk_import.py:244
+#: netbox/extras/forms/bulk_import.py:244
msgid "The classification of entry"
msgstr ""
-#: extras/forms/filtersets.py:49 extras/forms/model_forms.py:47
+#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47
msgid "Related object type"
msgstr ""
-#: extras/forms/filtersets.py:54
+#: netbox/extras/forms/filtersets.py:54
msgid "Field type"
msgstr ""
-#: extras/forms/filtersets.py:98 extras/tables/tables.py:70
-#: templates/generic/bulk_import.html:154
+#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:70
+#: netbox/templates/generic/bulk_import.html:154
msgid "Choices"
msgstr ""
-#: extras/forms/filtersets.py:142 extras/forms/filtersets.py:328
-#: extras/forms/filtersets.py:417 extras/forms/model_forms.py:448
-#: templates/core/job.html:78 templates/extras/eventrule.html:90
+#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328
+#: netbox/extras/forms/filtersets.py:417 netbox/extras/forms/model_forms.py:448
+#: netbox/templates/core/job.html:78 netbox/templates/extras/eventrule.html:90
msgid "Data"
msgstr ""
-#: extras/forms/filtersets.py:153 extras/forms/filtersets.py:342
-#: extras/forms/filtersets.py:427 netbox/choices.py:133
-#: utilities/forms/bulk_import.py:26
+#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342
+#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:133
+#: netbox/utilities/forms/bulk_import.py:26
msgid "Data file"
msgstr ""
-#: extras/forms/filtersets.py:161
+#: netbox/extras/forms/filtersets.py:161
msgid "Content types"
msgstr ""
-#: extras/forms/filtersets.py:233 extras/models/models.py:207
+#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207
msgid "HTTP content type"
msgstr ""
-#: extras/forms/filtersets.py:255 extras/forms/model_forms.py:280
-#: templates/extras/eventrule.html:37
+#: netbox/extras/forms/filtersets.py:255 netbox/extras/forms/model_forms.py:280
+#: netbox/templates/extras/eventrule.html:37
msgid "Events"
msgstr ""
-#: extras/forms/filtersets.py:265
+#: netbox/extras/forms/filtersets.py:265
msgid "Action type"
msgstr ""
-#: extras/forms/filtersets.py:279
+#: netbox/extras/forms/filtersets.py:279
msgid "Object creations"
msgstr ""
-#: extras/forms/filtersets.py:286
+#: netbox/extras/forms/filtersets.py:286
msgid "Object updates"
msgstr ""
-#: extras/forms/filtersets.py:293
+#: netbox/extras/forms/filtersets.py:293
msgid "Object deletions"
msgstr ""
-#: extras/forms/filtersets.py:300
+#: netbox/extras/forms/filtersets.py:300
msgid "Job starts"
msgstr ""
-#: extras/forms/filtersets.py:307 extras/forms/model_forms.py:297
+#: netbox/extras/forms/filtersets.py:307 netbox/extras/forms/model_forms.py:297
msgid "Job terminations"
msgstr ""
-#: extras/forms/filtersets.py:316
+#: netbox/extras/forms/filtersets.py:316
msgid "Tagged object type"
msgstr ""
-#: extras/forms/filtersets.py:321
+#: netbox/extras/forms/filtersets.py:321
msgid "Allowed object type"
msgstr ""
-#: extras/forms/filtersets.py:350 extras/forms/model_forms.py:383
-#: netbox/navigation/menu.py:18
+#: netbox/extras/forms/filtersets.py:350 netbox/extras/forms/model_forms.py:383
+#: netbox/netbox/navigation/menu.py:18
msgid "Regions"
msgstr ""
-#: extras/forms/filtersets.py:355 extras/forms/model_forms.py:388
+#: netbox/extras/forms/filtersets.py:355 netbox/extras/forms/model_forms.py:388
msgid "Site groups"
msgstr ""
-#: extras/forms/filtersets.py:365 extras/forms/model_forms.py:398
-#: netbox/navigation/menu.py:20 templates/dcim/site.html:126
+#: netbox/extras/forms/filtersets.py:365 netbox/extras/forms/model_forms.py:398
+#: netbox/netbox/navigation/menu.py:20 netbox/templates/dcim/site.html:127
msgid "Locations"
msgstr ""
-#: extras/forms/filtersets.py:370 extras/forms/model_forms.py:403
+#: netbox/extras/forms/filtersets.py:370 netbox/extras/forms/model_forms.py:403
msgid "Device types"
msgstr ""
-#: extras/forms/filtersets.py:375 extras/forms/model_forms.py:408
+#: netbox/extras/forms/filtersets.py:375 netbox/extras/forms/model_forms.py:408
msgid "Roles"
msgstr ""
-#: extras/forms/filtersets.py:385 extras/forms/model_forms.py:418
+#: netbox/extras/forms/filtersets.py:385 netbox/extras/forms/model_forms.py:418
msgid "Cluster types"
msgstr ""
-#: extras/forms/filtersets.py:390 extras/forms/model_forms.py:423
+#: netbox/extras/forms/filtersets.py:390 netbox/extras/forms/model_forms.py:423
msgid "Cluster groups"
msgstr ""
-#: extras/forms/filtersets.py:395 extras/forms/model_forms.py:428
-#: netbox/navigation/menu.py:242 netbox/navigation/menu.py:244
-#: templates/virtualization/clustertype.html:30
-#: virtualization/tables/clusters.py:23 virtualization/tables/clusters.py:45
+#: netbox/extras/forms/filtersets.py:395 netbox/extras/forms/model_forms.py:428
+#: netbox/netbox/navigation/menu.py:242 netbox/netbox/navigation/menu.py:244
+#: netbox/templates/virtualization/clustertype.html:30
+#: netbox/virtualization/tables/clusters.py:23
+#: netbox/virtualization/tables/clusters.py:45
msgid "Clusters"
msgstr ""
-#: extras/forms/filtersets.py:400 extras/forms/model_forms.py:433
+#: netbox/extras/forms/filtersets.py:400 netbox/extras/forms/model_forms.py:433
msgid "Tenant groups"
msgstr ""
-#: extras/forms/filtersets.py:454 extras/forms/filtersets.py:492
+#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:492
msgid "After"
msgstr ""
-#: extras/forms/filtersets.py:459 extras/forms/filtersets.py:497
+#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:497
msgid "Before"
msgstr ""
-#: extras/forms/filtersets.py:487 extras/tables/tables.py:456
-#: extras/tables/tables.py:542 extras/tables/tables.py:567
-#: templates/extras/objectchange.html:31
+#: netbox/extras/forms/filtersets.py:487 netbox/extras/tables/tables.py:456
+#: netbox/extras/tables/tables.py:542 netbox/extras/tables/tables.py:567
+#: netbox/templates/extras/objectchange.html:31
msgid "Time"
msgstr ""
-#: extras/forms/filtersets.py:501 extras/forms/model_forms.py:282
-#: extras/tables/tables.py:470 templates/extras/eventrule.html:77
-#: templates/extras/objectchange.html:45
+#: netbox/extras/forms/filtersets.py:501 netbox/extras/forms/model_forms.py:282
+#: netbox/extras/tables/tables.py:470 netbox/templates/extras/eventrule.html:77
+#: netbox/templates/extras/objectchange.html:45
msgid "Action"
msgstr ""
-#: extras/forms/model_forms.py:50
+#: netbox/extras/forms/model_forms.py:50
msgid "Type of the related object (for object/multi-object fields only)"
msgstr ""
-#: extras/forms/model_forms.py:61 templates/extras/customfield.html:10
+#: netbox/extras/forms/model_forms.py:61
+#: netbox/templates/extras/customfield.html:10
msgid "Custom Field"
msgstr ""
-#: extras/forms/model_forms.py:64 templates/extras/customfield.html:58
+#: netbox/extras/forms/model_forms.py:64
+#: netbox/templates/extras/customfield.html:58
msgid "Behavior"
msgstr ""
-#: extras/forms/model_forms.py:66
+#: netbox/extras/forms/model_forms.py:66
msgid "Values"
msgstr ""
-#: extras/forms/model_forms.py:75
+#: netbox/extras/forms/model_forms.py:75
msgid ""
"The type of data stored in this field. For object/multi-object fields, "
"select the related object type below."
msgstr ""
-#: extras/forms/model_forms.py:78
+#: netbox/extras/forms/model_forms.py:78
msgid ""
"This will be displayed as help text for the form field. Markdown is "
"supported."
msgstr ""
-#: extras/forms/model_forms.py:95
+#: netbox/extras/forms/model_forms.py:95
msgid ""
"Enter one choice per line. An optional label may be specified for each "
"choice by appending it with a colon. Example:"
msgstr ""
-#: extras/forms/model_forms.py:138 templates/extras/customlink.html:10
+#: netbox/extras/forms/model_forms.py:138
+#: netbox/templates/extras/customlink.html:10
msgid "Custom Link"
msgstr ""
-#: extras/forms/model_forms.py:140
+#: netbox/extras/forms/model_forms.py:140
msgid "Templates"
msgstr ""
-#: extras/forms/model_forms.py:152
+#: netbox/extras/forms/model_forms.py:152
#, python-brace-format
msgid ""
"Jinja2 template code for the link text. Reference the object as {example}. "
"Links which render as empty text will not be displayed."
msgstr ""
-#: extras/forms/model_forms.py:156
+#: netbox/extras/forms/model_forms.py:156
#, python-brace-format
msgid ""
"Jinja2 template code for the link URL. Reference the object as {example}."
msgstr ""
-#: extras/forms/model_forms.py:167 extras/forms/model_forms.py:500
+#: netbox/extras/forms/model_forms.py:167
+#: netbox/extras/forms/model_forms.py:500
msgid "Template code"
msgstr ""
-#: extras/forms/model_forms.py:173 templates/extras/exporttemplate.html:12
+#: netbox/extras/forms/model_forms.py:173
+#: netbox/templates/extras/exporttemplate.html:12
msgid "Export Template"
msgstr ""
-#: extras/forms/model_forms.py:175
+#: netbox/extras/forms/model_forms.py:175
msgid "Rendering"
msgstr ""
-#: extras/forms/model_forms.py:189 extras/forms/model_forms.py:525
+#: netbox/extras/forms/model_forms.py:189
+#: netbox/extras/forms/model_forms.py:525
msgid "Template content is populated from the remote source selected below."
msgstr ""
-#: extras/forms/model_forms.py:196 extras/forms/model_forms.py:532
+#: netbox/extras/forms/model_forms.py:196
+#: netbox/extras/forms/model_forms.py:532
msgid "Must specify either local content or a data file"
msgstr ""
-#: extras/forms/model_forms.py:210 netbox/forms/mixins.py:70
-#: templates/extras/savedfilter.html:10
+#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70
+#: netbox/templates/extras/savedfilter.html:10
msgid "Saved Filter"
msgstr ""
-#: extras/forms/model_forms.py:245 templates/extras/webhook.html:23
+#: netbox/extras/forms/model_forms.py:245
+#: netbox/templates/extras/webhook.html:23
msgid "HTTP Request"
msgstr ""
-#: extras/forms/model_forms.py:247 templates/extras/webhook.html:44
+#: netbox/extras/forms/model_forms.py:247
+#: netbox/templates/extras/webhook.html:44
msgid "SSL"
msgstr ""
-#: extras/forms/model_forms.py:265
+#: netbox/extras/forms/model_forms.py:265
msgid "Action choice"
msgstr ""
-#: extras/forms/model_forms.py:270
+#: netbox/extras/forms/model_forms.py:270
msgid "Enter conditions in JSON format."
msgstr ""
-#: extras/forms/model_forms.py:274
+#: netbox/extras/forms/model_forms.py:274
msgid ""
"Enter parameters to pass to the action in JSON format."
msgstr ""
-#: extras/forms/model_forms.py:279 templates/extras/eventrule.html:10
+#: netbox/extras/forms/model_forms.py:279
+#: netbox/templates/extras/eventrule.html:10
msgid "Event Rule"
msgstr ""
-#: extras/forms/model_forms.py:281 templates/extras/eventrule.html:66
+#: netbox/extras/forms/model_forms.py:281
+#: netbox/templates/extras/eventrule.html:66
msgid "Conditions"
msgstr ""
-#: extras/forms/model_forms.py:293
+#: netbox/extras/forms/model_forms.py:293
msgid "Creations"
msgstr ""
-#: extras/forms/model_forms.py:294
+#: netbox/extras/forms/model_forms.py:294
msgid "Updates"
msgstr ""
-#: extras/forms/model_forms.py:295
+#: netbox/extras/forms/model_forms.py:295
msgid "Deletions"
msgstr ""
-#: extras/forms/model_forms.py:296
+#: netbox/extras/forms/model_forms.py:296
msgid "Job executions"
msgstr ""
-#: extras/forms/model_forms.py:438 netbox/navigation/menu.py:39
-#: tenancy/tables/tenants.py:22
+#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39
+#: netbox/tenancy/tables/tenants.py:22
msgid "Tenants"
msgstr ""
-#: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142
-#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321
-#: templates/extras/configcontext.html:60 templates/ipam/ipaddress.html:59
-#: templates/ipam/vlan_edit.html:30 tenancy/forms/filtersets.py:87
-#: users/forms/model_forms.py:311
+#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142
+#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:321
+#: netbox/templates/extras/configcontext.html:60
+#: netbox/templates/ipam/ipaddress.html:59
+#: netbox/templates/ipam/vlan_edit.html:30
+#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:311
msgid "Assignment"
msgstr ""
-#: extras/forms/model_forms.py:482
+#: netbox/extras/forms/model_forms.py:482
msgid "Data is populated from the remote source selected below."
msgstr ""
-#: extras/forms/model_forms.py:488
+#: netbox/extras/forms/model_forms.py:488
msgid "Must specify either local data or a data file"
msgstr ""
-#: extras/forms/model_forms.py:507 templates/core/datafile.html:55
+#: netbox/extras/forms/model_forms.py:507
+#: netbox/templates/core/datafile.html:55
msgid "Content"
msgstr ""
-#: extras/forms/reports.py:17 extras/forms/scripts.py:23
+#: netbox/extras/forms/reports.py:17 netbox/extras/forms/scripts.py:23
msgid "Schedule at"
msgstr ""
-#: extras/forms/reports.py:18
+#: netbox/extras/forms/reports.py:18
msgid "Schedule execution of report to a set time"
msgstr ""
-#: extras/forms/reports.py:23 extras/forms/scripts.py:29
+#: netbox/extras/forms/reports.py:23 netbox/extras/forms/scripts.py:29
msgid "Recurs every"
msgstr ""
-#: extras/forms/reports.py:27
+#: netbox/extras/forms/reports.py:27
msgid "Interval at which this report is re-run (in minutes)"
msgstr ""
-#: extras/forms/reports.py:35 extras/forms/scripts.py:41
+#: netbox/extras/forms/reports.py:35 netbox/extras/forms/scripts.py:41
#, python-brace-format
msgid " (current time: {now})"
msgstr ""
-#: extras/forms/reports.py:45 extras/forms/scripts.py:51
+#: netbox/extras/forms/reports.py:45 netbox/extras/forms/scripts.py:51
msgid "Scheduled time must be in the future."
msgstr ""
-#: extras/forms/scripts.py:17
+#: netbox/extras/forms/scripts.py:17
msgid "Commit changes"
msgstr ""
-#: extras/forms/scripts.py:18
+#: netbox/extras/forms/scripts.py:18
msgid "Commit changes to the database (uncheck for a dry-run)"
msgstr ""
-#: extras/forms/scripts.py:24
+#: netbox/extras/forms/scripts.py:24
msgid "Schedule execution of script to a set time"
msgstr ""
-#: extras/forms/scripts.py:33
+#: netbox/extras/forms/scripts.py:33
msgid "Interval at which this script is re-run (in minutes)"
msgstr ""
-#: extras/management/commands/reindex.py:66
+#: netbox/extras/management/commands/reindex.py:66
msgid "No indexers found!"
msgstr ""
-#: extras/models/change_logging.py:24
+#: netbox/extras/models/change_logging.py:29
msgid "time"
msgstr ""
-#: extras/models/change_logging.py:37
+#: netbox/extras/models/change_logging.py:42
msgid "user name"
msgstr ""
-#: extras/models/change_logging.py:42
+#: netbox/extras/models/change_logging.py:47
msgid "request ID"
msgstr ""
-#: extras/models/change_logging.py:47 extras/models/staging.py:69
+#: netbox/extras/models/change_logging.py:52 netbox/extras/models/staging.py:70
msgid "action"
msgstr ""
-#: extras/models/change_logging.py:81
+#: netbox/extras/models/change_logging.py:86
msgid "pre-change data"
msgstr ""
-#: extras/models/change_logging.py:87
+#: netbox/extras/models/change_logging.py:92
msgid "post-change data"
msgstr ""
-#: extras/models/change_logging.py:101
+#: netbox/extras/models/change_logging.py:106
msgid "object change"
msgstr ""
-#: extras/models/change_logging.py:102
+#: netbox/extras/models/change_logging.py:107
msgid "object changes"
msgstr ""
-#: extras/models/change_logging.py:118
+#: netbox/extras/models/change_logging.py:123
#, python-brace-format
msgid "Change logging is not supported for this object type ({type})."
msgstr ""
-#: extras/models/configs.py:130
+#: netbox/extras/models/configs.py:130
msgid "config context"
msgstr ""
-#: extras/models/configs.py:131
+#: netbox/extras/models/configs.py:131
msgid "config contexts"
msgstr ""
-#: extras/models/configs.py:149 extras/models/configs.py:205
+#: netbox/extras/models/configs.py:149 netbox/extras/models/configs.py:205
msgid "JSON data must be in object form. Example:"
msgstr ""
-#: extras/models/configs.py:169
+#: netbox/extras/models/configs.py:169
msgid ""
"Local config context data takes precedence over source contexts in the final "
"rendered config context"
msgstr ""
-#: extras/models/configs.py:224
+#: netbox/extras/models/configs.py:224
msgid "template code"
msgstr ""
-#: extras/models/configs.py:225
+#: netbox/extras/models/configs.py:225
msgid "Jinja2 template code."
msgstr ""
-#: extras/models/configs.py:228
+#: netbox/extras/models/configs.py:228
msgid "environment parameters"
msgstr ""
-#: extras/models/configs.py:233
+#: netbox/extras/models/configs.py:233
msgid ""
"Any additional parameters to pass when constructing the Jinja2 "
"environment."
msgstr ""
-#: extras/models/configs.py:240
+#: netbox/extras/models/configs.py:240
msgid "config template"
msgstr ""
-#: extras/models/configs.py:241
+#: netbox/extras/models/configs.py:241
msgid "config templates"
msgstr ""
-#: extras/models/customfields.py:73
+#: netbox/extras/models/customfields.py:73
msgid "The object(s) to which this field applies."
msgstr ""
-#: extras/models/customfields.py:80
+#: netbox/extras/models/customfields.py:80
msgid "The type of data this custom field holds"
msgstr ""
-#: extras/models/customfields.py:87
+#: netbox/extras/models/customfields.py:87
msgid "The type of NetBox object this field maps to (for object fields)"
msgstr ""
-#: extras/models/customfields.py:93
+#: netbox/extras/models/customfields.py:93
msgid "Internal field name"
msgstr ""
-#: extras/models/customfields.py:97
+#: netbox/extras/models/customfields.py:97
msgid "Only alphanumeric characters and underscores are allowed."
msgstr ""
-#: extras/models/customfields.py:102
+#: netbox/extras/models/customfields.py:102
msgid "Double underscores are not permitted in custom field names."
msgstr ""
-#: extras/models/customfields.py:113
+#: netbox/extras/models/customfields.py:113
msgid ""
"Name of the field as displayed to users (if not provided, 'the field's name "
"will be used)"
msgstr ""
-#: extras/models/customfields.py:117 extras/models/models.py:345
+#: netbox/extras/models/customfields.py:117 netbox/extras/models/models.py:345
msgid "group name"
msgstr ""
-#: extras/models/customfields.py:120
+#: netbox/extras/models/customfields.py:120
msgid "Custom fields within the same group will be displayed together"
msgstr ""
-#: extras/models/customfields.py:128
+#: netbox/extras/models/customfields.py:128
msgid "required"
msgstr ""
-#: extras/models/customfields.py:130
+#: netbox/extras/models/customfields.py:130
msgid ""
"If true, this field is required when creating new objects or editing an "
"existing object."
msgstr ""
-#: extras/models/customfields.py:133
+#: netbox/extras/models/customfields.py:133
msgid "search weight"
msgstr ""
-#: extras/models/customfields.py:136
+#: netbox/extras/models/customfields.py:136
msgid ""
"Weighting for search. Lower values are considered more important. Fields "
"with a search weight of zero will be ignored."
msgstr ""
-#: extras/models/customfields.py:141
+#: netbox/extras/models/customfields.py:141
msgid "filter logic"
msgstr ""
-#: extras/models/customfields.py:145
+#: netbox/extras/models/customfields.py:145
msgid ""
"Loose matches any instance of a given string; exact matches the entire field."
msgstr ""
-#: extras/models/customfields.py:148
+#: netbox/extras/models/customfields.py:148
msgid "default"
msgstr ""
-#: extras/models/customfields.py:152
+#: netbox/extras/models/customfields.py:152
msgid ""
"Default value for the field (must be a JSON value). Encapsulate strings with "
"double quotes (e.g. \"Foo\")."
msgstr ""
-#: extras/models/customfields.py:157
+#: netbox/extras/models/customfields.py:157
msgid "display weight"
msgstr ""
-#: extras/models/customfields.py:158
+#: netbox/extras/models/customfields.py:158
msgid "Fields with higher weights appear lower in a form."
msgstr ""
-#: extras/models/customfields.py:163
+#: netbox/extras/models/customfields.py:163
msgid "minimum value"
msgstr ""
-#: extras/models/customfields.py:164
+#: netbox/extras/models/customfields.py:164
msgid "Minimum allowed value (for numeric fields)"
msgstr ""
-#: extras/models/customfields.py:169
+#: netbox/extras/models/customfields.py:169
msgid "maximum value"
msgstr ""
-#: extras/models/customfields.py:170
+#: netbox/extras/models/customfields.py:170
msgid "Maximum allowed value (for numeric fields)"
msgstr ""
-#: extras/models/customfields.py:176
+#: netbox/extras/models/customfields.py:176
msgid "validation regex"
msgstr ""
-#: extras/models/customfields.py:178
+#: netbox/extras/models/customfields.py:178
#, python-brace-format
msgid ""
"Regular expression to enforce on text field values. Use ^ and $ to force "
@@ -7079,282 +7568,284 @@ msgid ""
"values to exactly three uppercase letters."
msgstr ""
-#: extras/models/customfields.py:186
+#: netbox/extras/models/customfields.py:186
msgid "choice set"
msgstr ""
-#: extras/models/customfields.py:195
+#: netbox/extras/models/customfields.py:195
msgid "Specifies whether the custom field is displayed in the UI"
msgstr ""
-#: extras/models/customfields.py:202
+#: netbox/extras/models/customfields.py:202
msgid "Specifies whether the custom field value can be edited in the UI"
msgstr ""
-#: extras/models/customfields.py:206
+#: netbox/extras/models/customfields.py:206
msgid "is cloneable"
msgstr ""
-#: extras/models/customfields.py:207
+#: netbox/extras/models/customfields.py:207
msgid "Replicate this value when cloning objects"
msgstr ""
-#: extras/models/customfields.py:224
+#: netbox/extras/models/customfields.py:224
msgid "custom field"
msgstr ""
-#: extras/models/customfields.py:225
+#: netbox/extras/models/customfields.py:225
msgid "custom fields"
msgstr ""
-#: extras/models/customfields.py:314
+#: netbox/extras/models/customfields.py:314
#, python-brace-format
msgid "Invalid default value \"{value}\": {error}"
msgstr ""
-#: extras/models/customfields.py:321
+#: netbox/extras/models/customfields.py:321
msgid "A minimum value may be set only for numeric fields"
msgstr ""
-#: extras/models/customfields.py:323
+#: netbox/extras/models/customfields.py:323
msgid "A maximum value may be set only for numeric fields"
msgstr ""
-#: extras/models/customfields.py:333
+#: netbox/extras/models/customfields.py:333
msgid "Regular expression validation is supported only for text and URL fields"
msgstr ""
-#: extras/models/customfields.py:343
+#: netbox/extras/models/customfields.py:343
msgid "Selection fields must specify a set of choices."
msgstr ""
-#: extras/models/customfields.py:347
+#: netbox/extras/models/customfields.py:347
msgid "Choices may be set only on selection fields."
msgstr ""
-#: extras/models/customfields.py:354
+#: netbox/extras/models/customfields.py:354
msgid "Object fields must define an object type."
msgstr ""
-#: extras/models/customfields.py:359
+#: netbox/extras/models/customfields.py:359
#, python-brace-format
msgid "{type} fields may not define an object type."
msgstr ""
-#: extras/models/customfields.py:439
+#: netbox/extras/models/customfields.py:439
msgid "True"
msgstr ""
-#: extras/models/customfields.py:440
+#: netbox/extras/models/customfields.py:440
msgid "False"
msgstr ""
-#: extras/models/customfields.py:522
+#: netbox/extras/models/customfields.py:522
#, python-brace-format
msgid "Values must match this regex: {regex}
"
msgstr ""
-#: extras/models/customfields.py:616
+#: netbox/extras/models/customfields.py:616
msgid "Value must be a string."
msgstr ""
-#: extras/models/customfields.py:618
+#: netbox/extras/models/customfields.py:618
#, python-brace-format
msgid "Value must match regex '{regex}'"
msgstr ""
-#: extras/models/customfields.py:623
+#: netbox/extras/models/customfields.py:623
msgid "Value must be an integer."
msgstr ""
-#: extras/models/customfields.py:626 extras/models/customfields.py:641
+#: netbox/extras/models/customfields.py:626
+#: netbox/extras/models/customfields.py:641
#, python-brace-format
msgid "Value must be at least {minimum}"
msgstr ""
-#: extras/models/customfields.py:630 extras/models/customfields.py:645
+#: netbox/extras/models/customfields.py:630
+#: netbox/extras/models/customfields.py:645
#, python-brace-format
msgid "Value must not exceed {maximum}"
msgstr ""
-#: extras/models/customfields.py:638
+#: netbox/extras/models/customfields.py:638
msgid "Value must be a decimal."
msgstr ""
-#: extras/models/customfields.py:650
+#: netbox/extras/models/customfields.py:650
msgid "Value must be true or false."
msgstr ""
-#: extras/models/customfields.py:658
+#: netbox/extras/models/customfields.py:658
msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)."
msgstr ""
-#: extras/models/customfields.py:667
+#: netbox/extras/models/customfields.py:667
msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)."
msgstr ""
-#: extras/models/customfields.py:674
+#: netbox/extras/models/customfields.py:674
#, python-brace-format
msgid "Invalid choice ({value}) for choice set {choiceset}."
msgstr ""
-#: extras/models/customfields.py:684
+#: netbox/extras/models/customfields.py:684
#, python-brace-format
msgid "Invalid choice(s) ({value}) for choice set {choiceset}."
msgstr ""
-#: extras/models/customfields.py:693
+#: netbox/extras/models/customfields.py:693
#, python-brace-format
msgid "Value must be an object ID, not {type}"
msgstr ""
-#: extras/models/customfields.py:699
+#: netbox/extras/models/customfields.py:699
#, python-brace-format
msgid "Value must be a list of object IDs, not {type}"
msgstr ""
-#: extras/models/customfields.py:703
+#: netbox/extras/models/customfields.py:703
#, python-brace-format
msgid "Found invalid object ID: {id}"
msgstr ""
-#: extras/models/customfields.py:706
+#: netbox/extras/models/customfields.py:706
msgid "Required field cannot be empty."
msgstr ""
-#: extras/models/customfields.py:725
+#: netbox/extras/models/customfields.py:725
msgid "Base set of predefined choices (optional)"
msgstr ""
-#: extras/models/customfields.py:737
+#: netbox/extras/models/customfields.py:737
msgid "Choices are automatically ordered alphabetically"
msgstr ""
-#: extras/models/customfields.py:744
+#: netbox/extras/models/customfields.py:744
msgid "custom field choice set"
msgstr ""
-#: extras/models/customfields.py:745
+#: netbox/extras/models/customfields.py:745
msgid "custom field choice sets"
msgstr ""
-#: extras/models/customfields.py:781
+#: netbox/extras/models/customfields.py:781
msgid "Must define base or extra choices."
msgstr ""
-#: extras/models/dashboard.py:19
+#: netbox/extras/models/dashboard.py:19
msgid "layout"
msgstr ""
-#: extras/models/dashboard.py:23
+#: netbox/extras/models/dashboard.py:23
msgid "config"
msgstr ""
-#: extras/models/dashboard.py:28
+#: netbox/extras/models/dashboard.py:28
msgid "dashboard"
msgstr ""
-#: extras/models/dashboard.py:29
+#: netbox/extras/models/dashboard.py:29
msgid "dashboards"
msgstr ""
-#: extras/models/models.py:51
+#: netbox/extras/models/models.py:51
msgid "object types"
msgstr ""
-#: extras/models/models.py:52
+#: netbox/extras/models/models.py:52
msgid "The object(s) to which this rule applies."
msgstr ""
-#: extras/models/models.py:65
+#: netbox/extras/models/models.py:65
msgid "on create"
msgstr ""
-#: extras/models/models.py:67
+#: netbox/extras/models/models.py:67
msgid "Triggers when a matching object is created."
msgstr ""
-#: extras/models/models.py:70
+#: netbox/extras/models/models.py:70
msgid "on update"
msgstr ""
-#: extras/models/models.py:72
+#: netbox/extras/models/models.py:72
msgid "Triggers when a matching object is updated."
msgstr ""
-#: extras/models/models.py:75
+#: netbox/extras/models/models.py:75
msgid "on delete"
msgstr ""
-#: extras/models/models.py:77
+#: netbox/extras/models/models.py:77
msgid "Triggers when a matching object is deleted."
msgstr ""
-#: extras/models/models.py:80
+#: netbox/extras/models/models.py:80
msgid "on job start"
msgstr ""
-#: extras/models/models.py:82
+#: netbox/extras/models/models.py:82
msgid "Triggers when a job for a matching object is started."
msgstr ""
-#: extras/models/models.py:85
+#: netbox/extras/models/models.py:85
msgid "on job end"
msgstr ""
-#: extras/models/models.py:87
+#: netbox/extras/models/models.py:87
msgid "Triggers when a job for a matching object terminates."
msgstr ""
-#: extras/models/models.py:94
+#: netbox/extras/models/models.py:94
msgid "conditions"
msgstr ""
-#: extras/models/models.py:97
+#: netbox/extras/models/models.py:97
msgid ""
"A set of conditions which determine whether the event will be generated."
msgstr ""
-#: extras/models/models.py:105
+#: netbox/extras/models/models.py:105
msgid "action type"
msgstr ""
-#: extras/models/models.py:124
+#: netbox/extras/models/models.py:124
msgid "Additional data to pass to the action object"
msgstr ""
-#: extras/models/models.py:136
+#: netbox/extras/models/models.py:136
msgid "event rule"
msgstr ""
-#: extras/models/models.py:137
+#: netbox/extras/models/models.py:137
msgid "event rules"
msgstr ""
-#: extras/models/models.py:153
+#: netbox/extras/models/models.py:153
msgid ""
"At least one event type must be selected: create, update, delete, job start, "
"and/or job end."
msgstr ""
-#: extras/models/models.py:194
+#: netbox/extras/models/models.py:194
msgid ""
"This URL will be called using the HTTP method defined when the webhook is "
"called. Jinja2 template processing is supported with the same context as the "
"request body."
msgstr ""
-#: extras/models/models.py:209
+#: netbox/extras/models/models.py:209
msgid ""
"The complete list of official content types is available here."
msgstr ""
-#: extras/models/models.py:214
+#: netbox/extras/models/models.py:214
msgid "additional headers"
msgstr ""
-#: extras/models/models.py:217
+#: netbox/extras/models/models.py:217
msgid ""
"User-supplied HTTP headers to be sent with the request in addition to the "
"HTTP content type. Headers should be defined in the format Name: "
@@ -7362,11 +7853,11 @@ msgid ""
"as the request body (below)."
msgstr ""
-#: extras/models/models.py:223
+#: netbox/extras/models/models.py:223
msgid "body template"
msgstr ""
-#: extras/models/models.py:226
+#: netbox/extras/models/models.py:226
msgid ""
"Jinja2 template for a custom request body. If blank, a JSON object "
"representing the change will be included. Available context data includes: "
@@ -7374,4044 +7865,4166 @@ msgid ""
"username
, request_id
, and data
."
msgstr ""
-#: extras/models/models.py:232
+#: netbox/extras/models/models.py:232
msgid "secret"
msgstr ""
-#: extras/models/models.py:236
+#: netbox/extras/models/models.py:236
msgid ""
"When provided, the request will include a X-Hook-Signature
"
"header containing a HMAC hex digest of the payload body using the secret as "
"the key. The secret is not transmitted in the request."
msgstr ""
-#: extras/models/models.py:243
+#: netbox/extras/models/models.py:243
msgid "Enable SSL certificate verification. Disable with caution!"
msgstr ""
-#: extras/models/models.py:249 templates/extras/webhook.html:51
+#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51
msgid "CA File Path"
msgstr ""
-#: extras/models/models.py:251
+#: netbox/extras/models/models.py:251
msgid ""
"The specific CA certificate file to use for SSL verification. Leave blank to "
"use the system defaults."
msgstr ""
-#: extras/models/models.py:262
+#: netbox/extras/models/models.py:262
msgid "webhook"
msgstr ""
-#: extras/models/models.py:263
+#: netbox/extras/models/models.py:263
msgid "webhooks"
msgstr ""
-#: extras/models/models.py:281
+#: netbox/extras/models/models.py:281
msgid "Do not specify a CA certificate file if SSL verification is disabled."
msgstr ""
-#: extras/models/models.py:321
+#: netbox/extras/models/models.py:321
msgid "The object type(s) to which this link applies."
msgstr ""
-#: extras/models/models.py:333
+#: netbox/extras/models/models.py:333
msgid "link text"
msgstr ""
-#: extras/models/models.py:334
+#: netbox/extras/models/models.py:334
msgid "Jinja2 template code for link text"
msgstr ""
-#: extras/models/models.py:337
+#: netbox/extras/models/models.py:337
msgid "link URL"
msgstr ""
-#: extras/models/models.py:338
+#: netbox/extras/models/models.py:338
msgid "Jinja2 template code for link URL"
msgstr ""
-#: extras/models/models.py:348
+#: netbox/extras/models/models.py:348
msgid "Links with the same group will appear as a dropdown menu"
msgstr ""
-#: extras/models/models.py:358
+#: netbox/extras/models/models.py:358
msgid "new window"
msgstr ""
-#: extras/models/models.py:360
+#: netbox/extras/models/models.py:360
msgid "Force link to open in a new window"
msgstr ""
-#: extras/models/models.py:369
+#: netbox/extras/models/models.py:369
msgid "custom link"
msgstr ""
-#: extras/models/models.py:370
+#: netbox/extras/models/models.py:370
msgid "custom links"
msgstr ""
-#: extras/models/models.py:417
+#: netbox/extras/models/models.py:417
msgid "The object type(s) to which this template applies."
msgstr ""
-#: extras/models/models.py:430
+#: netbox/extras/models/models.py:430
msgid ""
"Jinja2 template code. The list of objects being exported is passed as a "
"context variable named queryset
."
msgstr ""
-#: extras/models/models.py:438
+#: netbox/extras/models/models.py:438
msgid "Defaults to text/plain; charset=utf-8
"
msgstr ""
-#: extras/models/models.py:441
+#: netbox/extras/models/models.py:441
msgid "file extension"
msgstr ""
-#: extras/models/models.py:444
+#: netbox/extras/models/models.py:444
msgid "Extension to append to the rendered filename"
msgstr ""
-#: extras/models/models.py:447
+#: netbox/extras/models/models.py:447
msgid "as attachment"
msgstr ""
-#: extras/models/models.py:449
+#: netbox/extras/models/models.py:449
msgid "Download file as attachment"
msgstr ""
-#: extras/models/models.py:458
+#: netbox/extras/models/models.py:458
msgid "export template"
msgstr ""
-#: extras/models/models.py:459
+#: netbox/extras/models/models.py:459
msgid "export templates"
msgstr ""
-#: extras/models/models.py:476
+#: netbox/extras/models/models.py:476
#, python-brace-format
msgid "\"{name}\" is a reserved name. Please choose a different name."
msgstr ""
-#: extras/models/models.py:526
+#: netbox/extras/models/models.py:526
msgid "The object type(s) to which this filter applies."
msgstr ""
-#: extras/models/models.py:558
+#: netbox/extras/models/models.py:558
msgid "shared"
msgstr ""
-#: extras/models/models.py:571
+#: netbox/extras/models/models.py:571
msgid "saved filter"
msgstr ""
-#: extras/models/models.py:572
+#: netbox/extras/models/models.py:572
msgid "saved filters"
msgstr ""
-#: extras/models/models.py:590
+#: netbox/extras/models/models.py:590
msgid "Filter parameters must be stored as a dictionary of keyword arguments."
msgstr ""
-#: extras/models/models.py:618
+#: netbox/extras/models/models.py:618
msgid "image height"
msgstr ""
-#: extras/models/models.py:621
+#: netbox/extras/models/models.py:621
msgid "image width"
msgstr ""
-#: extras/models/models.py:638
+#: netbox/extras/models/models.py:638
msgid "image attachment"
msgstr ""
-#: extras/models/models.py:639
+#: netbox/extras/models/models.py:639
msgid "image attachments"
msgstr ""
-#: extras/models/models.py:653
+#: netbox/extras/models/models.py:653
#, python-brace-format
msgid "Image attachments cannot be assigned to this object type ({type})."
msgstr ""
-#: extras/models/models.py:716
+#: netbox/extras/models/models.py:716
msgid "kind"
msgstr ""
-#: extras/models/models.py:730
+#: netbox/extras/models/models.py:730
msgid "journal entry"
msgstr ""
-#: extras/models/models.py:731
+#: netbox/extras/models/models.py:731
msgid "journal entries"
msgstr ""
-#: extras/models/models.py:746
+#: netbox/extras/models/models.py:746
#, python-brace-format
msgid "Journaling is not supported for this object type ({type})."
msgstr ""
-#: extras/models/models.py:788
+#: netbox/extras/models/models.py:788
msgid "bookmark"
msgstr ""
-#: extras/models/models.py:789
+#: netbox/extras/models/models.py:789
msgid "bookmarks"
msgstr ""
-#: extras/models/models.py:802
+#: netbox/extras/models/models.py:802
#, python-brace-format
msgid "Bookmarks cannot be assigned to this object type ({type})."
msgstr ""
-#: extras/models/scripts.py:42
+#: netbox/extras/models/scripts.py:42
msgid "is executable"
msgstr ""
-#: extras/models/scripts.py:64
+#: netbox/extras/models/scripts.py:64
msgid "script"
msgstr ""
-#: extras/models/scripts.py:65
+#: netbox/extras/models/scripts.py:65
msgid "scripts"
msgstr ""
-#: extras/models/scripts.py:111
+#: netbox/extras/models/scripts.py:111
msgid "script module"
msgstr ""
-#: extras/models/scripts.py:112
+#: netbox/extras/models/scripts.py:112
msgid "script modules"
msgstr ""
-#: extras/models/search.py:22
+#: netbox/extras/models/search.py:22
msgid "timestamp"
msgstr ""
-#: extras/models/search.py:37
+#: netbox/extras/models/search.py:37
msgid "field"
msgstr ""
-#: extras/models/search.py:45
+#: netbox/extras/models/search.py:45
msgid "value"
msgstr ""
-#: extras/models/search.py:56
+#: netbox/extras/models/search.py:56
msgid "cached value"
msgstr ""
-#: extras/models/search.py:57
+#: netbox/extras/models/search.py:57
msgid "cached values"
msgstr ""
-#: extras/models/staging.py:44
+#: netbox/extras/models/staging.py:45
msgid "branch"
msgstr ""
-#: extras/models/staging.py:45
+#: netbox/extras/models/staging.py:46
msgid "branches"
msgstr ""
-#: extras/models/staging.py:97
+#: netbox/extras/models/staging.py:98
msgid "staged change"
msgstr ""
-#: extras/models/staging.py:98
+#: netbox/extras/models/staging.py:99
msgid "staged changes"
msgstr ""
-#: extras/models/tags.py:40
+#: netbox/extras/models/tags.py:40
msgid "The object type(s) to which this tag can be applied."
msgstr ""
-#: extras/models/tags.py:49
+#: netbox/extras/models/tags.py:49
msgid "tag"
msgstr ""
-#: extras/models/tags.py:50
+#: netbox/extras/models/tags.py:50
msgid "tags"
msgstr ""
-#: extras/models/tags.py:78
+#: netbox/extras/models/tags.py:78
msgid "tagged item"
msgstr ""
-#: extras/models/tags.py:79
+#: netbox/extras/models/tags.py:79
msgid "tagged items"
msgstr ""
-#: extras/scripts.py:439
+#: netbox/extras/scripts.py:439
msgid "Script Data"
msgstr ""
-#: extras/scripts.py:443
+#: netbox/extras/scripts.py:443
msgid "Script Execution Parameters"
msgstr ""
-#: extras/scripts.py:662
+#: netbox/extras/scripts.py:662
msgid "Database changes have been reverted automatically."
msgstr ""
-#: extras/scripts.py:675
+#: netbox/extras/scripts.py:675
msgid "Script aborted with error: "
msgstr ""
-#: extras/scripts.py:685
+#: netbox/extras/scripts.py:685
msgid "An exception occurred: "
msgstr ""
-#: extras/scripts.py:688
+#: netbox/extras/scripts.py:688
msgid "Database changes have been reverted due to error."
msgstr ""
-#: extras/signals.py:146
+#: netbox/extras/signals.py:146
#, python-brace-format
msgid "Deletion is prevented by a protection rule: {message}"
msgstr ""
-#: extras/tables/tables.py:46 extras/tables/tables.py:124
-#: extras/tables/tables.py:148 extras/tables/tables.py:213
-#: extras/tables/tables.py:238 extras/tables/tables.py:290
-#: extras/tables/tables.py:336 templates/extras/customfield.html:93
-#: templates/extras/eventrule.html:27 templates/users/objectpermission.html:64
-#: users/tables.py:80
+#: netbox/extras/tables/tables.py:46 netbox/extras/tables/tables.py:124
+#: netbox/extras/tables/tables.py:148 netbox/extras/tables/tables.py:213
+#: netbox/extras/tables/tables.py:238 netbox/extras/tables/tables.py:290
+#: netbox/extras/tables/tables.py:336
+#: netbox/templates/extras/customfield.html:93
+#: netbox/templates/extras/eventrule.html:27
+#: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80
msgid "Object Types"
msgstr ""
-#: extras/tables/tables.py:52
+#: netbox/extras/tables/tables.py:52
msgid "Visible"
msgstr ""
-#: extras/tables/tables.py:55
+#: netbox/extras/tables/tables.py:55
msgid "Editable"
msgstr ""
-#: extras/tables/tables.py:61
+#: netbox/extras/tables/tables.py:61
msgid "Related Object Type"
msgstr ""
-#: extras/tables/tables.py:65 templates/extras/customfield.html:47
+#: netbox/extras/tables/tables.py:65
+#: netbox/templates/extras/customfield.html:47
msgid "Choice Set"
msgstr ""
-#: extras/tables/tables.py:73
+#: netbox/extras/tables/tables.py:73
msgid "Is Cloneable"
msgstr ""
-#: extras/tables/tables.py:103
+#: netbox/extras/tables/tables.py:103
msgid "Count"
msgstr ""
-#: extras/tables/tables.py:106
+#: netbox/extras/tables/tables.py:106
msgid "Order Alphabetically"
msgstr ""
-#: extras/tables/tables.py:130 templates/extras/customlink.html:33
+#: netbox/extras/tables/tables.py:130
+#: netbox/templates/extras/customlink.html:33
msgid "New Window"
msgstr ""
-#: extras/tables/tables.py:151
+#: netbox/extras/tables/tables.py:151
msgid "As Attachment"
msgstr ""
-#: extras/tables/tables.py:158 extras/tables/tables.py:377
-#: extras/tables/tables.py:412 templates/core/datafile.html:24
-#: templates/dcim/device/render_config.html:22
-#: templates/extras/configcontext.html:39
-#: templates/extras/configtemplate.html:31
-#: templates/extras/exporttemplate.html:45
-#: templates/generic/bulk_import.html:35
-#: templates/virtualization/virtualmachine/render_config.html:22
+#: netbox/extras/tables/tables.py:158 netbox/extras/tables/tables.py:377
+#: netbox/extras/tables/tables.py:412 netbox/templates/core/datafile.html:24
+#: netbox/templates/dcim/device/render_config.html:22
+#: netbox/templates/extras/configcontext.html:39
+#: netbox/templates/extras/configtemplate.html:31
+#: netbox/templates/extras/exporttemplate.html:45
+#: netbox/templates/generic/bulk_import.html:35
+#: netbox/templates/virtualization/virtualmachine/render_config.html:22
msgid "Data File"
msgstr ""
-#: extras/tables/tables.py:163 extras/tables/tables.py:389
-#: extras/tables/tables.py:417
+#: netbox/extras/tables/tables.py:163 netbox/extras/tables/tables.py:389
+#: netbox/extras/tables/tables.py:417
msgid "Synced"
msgstr ""
-#: extras/tables/tables.py:190
+#: netbox/extras/tables/tables.py:190
msgid "Image"
msgstr ""
-#: extras/tables/tables.py:195
+#: netbox/extras/tables/tables.py:195
msgid "Size (Bytes)"
msgstr ""
-#: extras/tables/tables.py:260
+#: netbox/extras/tables/tables.py:260
msgid "SSL Validation"
msgstr ""
-#: extras/tables/tables.py:305
+#: netbox/extras/tables/tables.py:305
msgid "Job Start"
msgstr ""
-#: extras/tables/tables.py:308
+#: netbox/extras/tables/tables.py:308
msgid "Job End"
msgstr ""
-#: extras/tables/tables.py:425 netbox/navigation/menu.py:64
-#: templates/dcim/devicerole.html:8
+#: netbox/extras/tables/tables.py:425 netbox/netbox/navigation/menu.py:64
+#: netbox/templates/dcim/devicerole.html:8
msgid "Device Roles"
msgstr ""
-#: extras/tables/tables.py:466 templates/account/profile.html:19
-#: templates/users/user.html:21
+#: netbox/extras/tables/tables.py:466 netbox/templates/account/profile.html:19
+#: netbox/templates/users/user.html:21
msgid "Full Name"
msgstr ""
-#: extras/tables/tables.py:483 templates/extras/objectchange.html:67
+#: netbox/extras/tables/tables.py:483
+#: netbox/templates/extras/objectchange.html:67
msgid "Request ID"
msgstr ""
-#: extras/tables/tables.py:520
+#: netbox/extras/tables/tables.py:520
msgid "Comments (Short)"
msgstr ""
-#: extras/tables/tables.py:539 extras/tables/tables.py:561
+#: netbox/extras/tables/tables.py:539 netbox/extras/tables/tables.py:561
msgid "Line"
msgstr ""
-#: extras/tables/tables.py:546 extras/tables/tables.py:571
+#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:571
msgid "Level"
msgstr ""
-#: extras/tables/tables.py:549 extras/tables/tables.py:580
+#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:580
msgid "Message"
msgstr ""
-#: extras/tables/tables.py:564
+#: netbox/extras/tables/tables.py:564
msgid "Method"
msgstr ""
-#: extras/validators.py:16
+#: netbox/extras/validators.py:16
#, python-format
msgid "Ensure this value is equal to %(limit_value)s."
msgstr ""
-#: extras/validators.py:27
+#: netbox/extras/validators.py:27
#, python-format
msgid "Ensure this value does not equal %(limit_value)s."
msgstr ""
-#: extras/validators.py:38
+#: netbox/extras/validators.py:38
msgid "This field must be empty."
msgstr ""
-#: extras/validators.py:53
+#: netbox/extras/validators.py:53
msgid "This field must not be empty."
msgstr ""
-#: extras/validators.py:95
+#: netbox/extras/validators.py:95
msgid "Validation rules must be passed as a dictionary"
msgstr ""
-#: extras/validators.py:120
+#: netbox/extras/validators.py:120
#, python-brace-format
msgid "Custom validation failed for {attribute}: {exception}"
msgstr ""
-#: extras/validators.py:140
+#: netbox/extras/validators.py:140
#, python-brace-format
msgid "Invalid attribute \"{name}\" for request"
msgstr ""
-#: extras/validators.py:157
+#: netbox/extras/validators.py:157
#, python-brace-format
msgid "Invalid attribute \"{name}\" for {model}"
msgstr ""
-#: extras/views.py:889
+#: netbox/extras/views.py:889
msgid "Your dashboard has been reset."
msgstr ""
-#: extras/views.py:935
+#: netbox/extras/views.py:935
msgid "Added widget: "
msgstr ""
-#: extras/views.py:976
+#: netbox/extras/views.py:976
msgid "Updated widget: "
msgstr ""
-#: extras/views.py:1012
+#: netbox/extras/views.py:1012
msgid "Deleted widget: "
msgstr ""
-#: extras/views.py:1014
+#: netbox/extras/views.py:1014
msgid "Error deleting widget: "
msgstr ""
-#: extras/views.py:1101
+#: netbox/extras/views.py:1101
msgid "Unable to run script: RQ worker process not running."
msgstr ""
-#: ipam/api/field_serializers.py:17
+#: netbox/ipam/api/field_serializers.py:17
msgid "Enter a valid IPv4 or IPv6 address with optional mask."
msgstr ""
-#: ipam/api/field_serializers.py:24
+#: netbox/ipam/api/field_serializers.py:24
#, python-brace-format
msgid "Invalid IP address format: {data}"
msgstr ""
-#: ipam/api/field_serializers.py:37
+#: netbox/ipam/api/field_serializers.py:37
msgid "Enter a valid IPv4 or IPv6 prefix and mask in CIDR notation."
msgstr ""
-#: ipam/api/field_serializers.py:44
+#: netbox/ipam/api/field_serializers.py:44
#, python-brace-format
msgid "Invalid IP prefix format: {data}"
msgstr ""
-#: ipam/api/views.py:358
+#: netbox/ipam/api/views.py:358
msgid ""
"Insufficient space is available to accommodate the requested prefix size(s)"
msgstr ""
-#: ipam/choices.py:30
+#: netbox/ipam/choices.py:30
msgid "Container"
msgstr ""
-#: ipam/choices.py:72
+#: netbox/ipam/choices.py:72
msgid "DHCP"
msgstr ""
-#: ipam/choices.py:73
+#: netbox/ipam/choices.py:73
msgid "SLAAC"
msgstr ""
-#: ipam/choices.py:89
+#: netbox/ipam/choices.py:89
msgid "Loopback"
msgstr ""
-#: ipam/choices.py:90 tenancy/choices.py:18
+#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18
msgid "Secondary"
msgstr ""
-#: ipam/choices.py:91
+#: netbox/ipam/choices.py:91
msgid "Anycast"
msgstr ""
-#: ipam/choices.py:115
+#: netbox/ipam/choices.py:115
msgid "Standard"
msgstr ""
-#: ipam/choices.py:120
+#: netbox/ipam/choices.py:120
msgid "CheckPoint"
msgstr ""
-#: ipam/choices.py:123
+#: netbox/ipam/choices.py:123
msgid "Cisco"
msgstr ""
-#: ipam/choices.py:137
+#: netbox/ipam/choices.py:137
msgid "Plaintext"
msgstr ""
-#: ipam/fields.py:36
+#: netbox/ipam/fields.py:36
#, python-brace-format
msgid "Invalid IP address format: {address}"
msgstr ""
-#: ipam/filtersets.py:48 vpn/filtersets.py:323
+#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323
msgid "Import target"
msgstr ""
-#: ipam/filtersets.py:54 vpn/filtersets.py:329
+#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329
msgid "Import target (name)"
msgstr ""
-#: ipam/filtersets.py:59 vpn/filtersets.py:334
+#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334
msgid "Export target"
msgstr ""
-#: ipam/filtersets.py:65 vpn/filtersets.py:340
+#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340
msgid "Export target (name)"
msgstr ""
-#: ipam/filtersets.py:86
+#: netbox/ipam/filtersets.py:86
msgid "Importing VRF"
msgstr ""
-#: ipam/filtersets.py:92
+#: netbox/ipam/filtersets.py:92
msgid "Import VRF (RD)"
msgstr ""
-#: ipam/filtersets.py:97
+#: netbox/ipam/filtersets.py:97
msgid "Exporting VRF"
msgstr ""
-#: ipam/filtersets.py:103
+#: netbox/ipam/filtersets.py:103
msgid "Export VRF (RD)"
msgstr ""
-#: ipam/filtersets.py:108
+#: netbox/ipam/filtersets.py:108
msgid "Importing L2VPN"
msgstr ""
-#: ipam/filtersets.py:114
+#: netbox/ipam/filtersets.py:114
msgid "Importing L2VPN (identifier)"
msgstr ""
-#: ipam/filtersets.py:119
+#: netbox/ipam/filtersets.py:119
msgid "Exporting L2VPN"
msgstr ""
-#: ipam/filtersets.py:125
+#: netbox/ipam/filtersets.py:125
msgid "Exporting L2VPN (identifier)"
msgstr ""
-#: ipam/filtersets.py:155 ipam/filtersets.py:281 ipam/forms/model_forms.py:227
-#: ipam/tables/ip.py:211 templates/ipam/prefix.html:12
+#: netbox/ipam/filtersets.py:155 netbox/ipam/filtersets.py:281
+#: netbox/ipam/forms/model_forms.py:227 netbox/ipam/tables/ip.py:211
+#: netbox/templates/ipam/prefix.html:12
msgid "Prefix"
msgstr ""
-#: ipam/filtersets.py:159 ipam/filtersets.py:198 ipam/filtersets.py:221
+#: netbox/ipam/filtersets.py:159 netbox/ipam/filtersets.py:198
+#: netbox/ipam/filtersets.py:221
msgid "RIR (ID)"
msgstr ""
-#: ipam/filtersets.py:165 ipam/filtersets.py:204 ipam/filtersets.py:227
+#: netbox/ipam/filtersets.py:165 netbox/ipam/filtersets.py:204
+#: netbox/ipam/filtersets.py:227
msgid "RIR (slug)"
msgstr ""
-#: ipam/filtersets.py:285
+#: netbox/ipam/filtersets.py:285
msgid "Within prefix"
msgstr ""
-#: ipam/filtersets.py:289
+#: netbox/ipam/filtersets.py:289
msgid "Within and including prefix"
msgstr ""
-#: ipam/filtersets.py:293
+#: netbox/ipam/filtersets.py:293
msgid "Prefixes which contain this prefix or IP"
msgstr ""
-#: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327
-#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331
+#: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572
+#: netbox/ipam/forms/bulk_edit.py:327 netbox/ipam/forms/filtersets.py:196
+#: netbox/ipam/forms/filtersets.py:331
msgid "Mask length"
msgstr ""
-#: ipam/filtersets.py:373 vpn/filtersets.py:446
+#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446
msgid "VLAN (ID)"
msgstr ""
-#: ipam/filtersets.py:377 vpn/filtersets.py:441
+#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441
msgid "VLAN number (1-4094)"
msgstr ""
-#: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567
-#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53
-#: tenancy/forms/bulk_edit.py:113
+#: netbox/ipam/filtersets.py:471 netbox/ipam/filtersets.py:475
+#: netbox/ipam/filtersets.py:567 netbox/ipam/forms/model_forms.py:461
+#: netbox/templates/tenancy/contact.html:53
+#: netbox/tenancy/forms/bulk_edit.py:113
msgid "Address"
msgstr ""
-#: ipam/filtersets.py:479
+#: netbox/ipam/filtersets.py:479
msgid "Ranges which contain this prefix or IP"
msgstr ""
-#: ipam/filtersets.py:507 ipam/filtersets.py:563
+#: netbox/ipam/filtersets.py:507 netbox/ipam/filtersets.py:563
msgid "Parent prefix"
msgstr ""
-#: ipam/filtersets.py:616 ipam/filtersets.py:856 ipam/filtersets.py:1091
-#: vpn/filtersets.py:404
+#: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856
+#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404
msgid "Virtual machine (name)"
msgstr ""
-#: ipam/filtersets.py:621 ipam/filtersets.py:861 ipam/filtersets.py:1085
-#: virtualization/filtersets.py:278 virtualization/filtersets.py:317
-#: vpn/filtersets.py:409
+#: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861
+#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278
+#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409
msgid "Virtual machine (ID)"
msgstr ""
-#: ipam/filtersets.py:627 vpn/filtersets.py:97 vpn/filtersets.py:415
+#: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97
+#: netbox/vpn/filtersets.py:415
msgid "Interface (name)"
msgstr ""
-#: ipam/filtersets.py:638 vpn/filtersets.py:108 vpn/filtersets.py:426
+#: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108
+#: netbox/vpn/filtersets.py:426
msgid "VM interface (name)"
msgstr ""
-#: ipam/filtersets.py:643 vpn/filtersets.py:113
+#: netbox/ipam/filtersets.py:643 netbox/vpn/filtersets.py:113
msgid "VM interface (ID)"
msgstr ""
-#: ipam/filtersets.py:648
+#: netbox/ipam/filtersets.py:648
msgid "FHRP group (ID)"
msgstr ""
-#: ipam/filtersets.py:652
+#: netbox/ipam/filtersets.py:652
msgid "Is assigned to an interface"
msgstr ""
-#: ipam/filtersets.py:656
+#: netbox/ipam/filtersets.py:656
msgid "Is assigned"
msgstr ""
-#: ipam/filtersets.py:668
+#: netbox/ipam/filtersets.py:668
msgid "Service (ID)"
msgstr ""
-#: ipam/filtersets.py:673
+#: netbox/ipam/filtersets.py:673
msgid "NAT inside IP address (ID)"
msgstr ""
-#: ipam/filtersets.py:1096
+#: netbox/ipam/filtersets.py:1096
msgid "IP address (ID)"
msgstr ""
-#: ipam/filtersets.py:1102 ipam/models/ip.py:788
+#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788
msgid "IP address"
msgstr ""
-#: ipam/filtersets.py:1131
+#: netbox/ipam/filtersets.py:1131
msgid "Primary IPv4 (ID)"
msgstr ""
-#: ipam/filtersets.py:1136
+#: netbox/ipam/filtersets.py:1136
msgid "Primary IPv6 (ID)"
msgstr ""
-#: ipam/formfields.py:14
+#: netbox/ipam/formfields.py:14
msgid "Enter a valid IPv4 or IPv6 address (without a mask)."
msgstr ""
-#: ipam/formfields.py:32
+#: netbox/ipam/formfields.py:32
#, python-brace-format
msgid "Invalid IPv4/IPv6 address format: {address}"
msgstr ""
-#: ipam/formfields.py:37
+#: netbox/ipam/formfields.py:37
msgid "This field requires an IP address without a mask."
msgstr ""
-#: ipam/formfields.py:39 ipam/formfields.py:61
+#: netbox/ipam/formfields.py:39 netbox/ipam/formfields.py:61
msgid "Please specify a valid IPv4 or IPv6 address."
msgstr ""
-#: ipam/formfields.py:44
+#: netbox/ipam/formfields.py:44
msgid "Enter a valid IPv4 or IPv6 address (with CIDR mask)."
msgstr ""
-#: ipam/formfields.py:56
+#: netbox/ipam/formfields.py:56
msgid "CIDR mask (e.g. /24) is required."
msgstr ""
-#: ipam/forms/bulk_create.py:13
+#: netbox/ipam/forms/bulk_create.py:13
msgid "Address pattern"
msgstr ""
-#: ipam/forms/bulk_edit.py:48
+#: netbox/ipam/forms/bulk_edit.py:48
msgid "Enforce unique space"
msgstr ""
-#: ipam/forms/bulk_edit.py:86
+#: netbox/ipam/forms/bulk_edit.py:86
msgid "Is private"
msgstr ""
-#: ipam/forms/bulk_edit.py:107 ipam/forms/bulk_edit.py:136
-#: ipam/forms/bulk_edit.py:161 ipam/forms/bulk_import.py:88
-#: ipam/forms/bulk_import.py:108 ipam/forms/bulk_import.py:128
-#: ipam/forms/filtersets.py:110 ipam/forms/filtersets.py:125
-#: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94
-#: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129
-#: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 ipam/models/asns.py:103
-#: ipam/models/ip.py:71 ipam/models/ip.py:90 ipam/tables/asn.py:20
-#: ipam/tables/asn.py:45 templates/ipam/aggregate.html:18
-#: templates/ipam/asn.html:27 templates/ipam/asnrange.html:19
-#: templates/ipam/rir.html:19
+#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136
+#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88
+#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128
+#: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125
+#: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:94
+#: netbox/ipam/forms/model_forms.py:107 netbox/ipam/forms/model_forms.py:129
+#: netbox/ipam/forms/model_forms.py:147 netbox/ipam/models/asns.py:31
+#: netbox/ipam/models/asns.py:103 netbox/ipam/models/ip.py:71
+#: netbox/ipam/models/ip.py:90 netbox/ipam/tables/asn.py:20
+#: netbox/ipam/tables/asn.py:45 netbox/templates/ipam/aggregate.html:18
+#: netbox/templates/ipam/asn.html:27 netbox/templates/ipam/asnrange.html:19
+#: netbox/templates/ipam/rir.html:19
msgid "RIR"
msgstr ""
-#: ipam/forms/bulk_edit.py:169
+#: netbox/ipam/forms/bulk_edit.py:169
msgid "Date added"
msgstr ""
-#: ipam/forms/bulk_edit.py:230
+#: netbox/ipam/forms/bulk_edit.py:230
msgid "Prefix length"
msgstr ""
-#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241
-#: templates/ipam/prefix.html:85
+#: netbox/ipam/forms/bulk_edit.py:253 netbox/ipam/forms/filtersets.py:241
+#: netbox/templates/ipam/prefix.html:85
msgid "Is a pool"
msgstr ""
-#: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302
-#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293
-#: ipam/models/ip.py:272 ipam/models/ip.py:539
+#: netbox/ipam/forms/bulk_edit.py:258 netbox/ipam/forms/bulk_edit.py:302
+#: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293
+#: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539
msgid "Treat as fully utilized"
msgstr ""
-#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772
+#: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/models/ip.py:772
msgid "DNS name"
msgstr ""
-#: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572
-#: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477
-#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390
-#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22
-#: templates/ipam/inc/panels/fhrp_groups.html:24 templates/ipam/service.html:32
-#: templates/ipam/servicetemplate.html:19
+#: netbox/ipam/forms/bulk_edit.py:371 netbox/ipam/forms/bulk_edit.py:572
+#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477
+#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390
+#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22
+#: netbox/templates/ipam/inc/panels/fhrp_groups.html:24
+#: netbox/templates/ipam/service.html:32
+#: netbox/templates/ipam/servicetemplate.html:19
msgid "Protocol"
msgstr ""
-#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397
-#: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26
+#: netbox/ipam/forms/bulk_edit.py:378 netbox/ipam/forms/filtersets.py:397
+#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26
msgid "Group ID"
msgstr ""
-#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:402
-#: wireless/forms/bulk_edit.py:68 wireless/forms/bulk_edit.py:115
-#: wireless/forms/bulk_import.py:62 wireless/forms/bulk_import.py:65
-#: wireless/forms/bulk_import.py:104 wireless/forms/bulk_import.py:107
-#: wireless/forms/filtersets.py:54 wireless/forms/filtersets.py:88
+#: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/filtersets.py:402
+#: netbox/wireless/forms/bulk_edit.py:68 netbox/wireless/forms/bulk_edit.py:115
+#: netbox/wireless/forms/bulk_import.py:62
+#: netbox/wireless/forms/bulk_import.py:65
+#: netbox/wireless/forms/bulk_import.py:104
+#: netbox/wireless/forms/bulk_import.py:107
+#: netbox/wireless/forms/filtersets.py:54
+#: netbox/wireless/forms/filtersets.py:88
msgid "Authentication type"
msgstr ""
-#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406
+#: netbox/ipam/forms/bulk_edit.py:388 netbox/ipam/forms/filtersets.py:406
msgid "Authentication key"
msgstr ""
-#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383
-#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370
-#: templates/ipam/fhrpgroup.html:49
-#: templates/wireless/inc/authentication_attrs.html:5
-#: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138
-#: wireless/forms/filtersets.py:36 wireless/forms/filtersets.py:76
-#: wireless/forms/model_forms.py:55 wireless/forms/model_forms.py:164
+#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:383
+#: netbox/ipam/forms/model_forms.py:472 netbox/netbox/navigation/menu.py:370
+#: netbox/templates/ipam/fhrpgroup.html:49
+#: netbox/templates/wireless/inc/authentication_attrs.html:5
+#: netbox/wireless/forms/bulk_edit.py:91 netbox/wireless/forms/bulk_edit.py:138
+#: netbox/wireless/forms/filtersets.py:36
+#: netbox/wireless/forms/filtersets.py:76
+#: netbox/wireless/forms/model_forms.py:55
+#: netbox/wireless/forms/model_forms.py:164
msgid "Authentication"
msgstr ""
-#: ipam/forms/bulk_edit.py:415
+#: netbox/ipam/forms/bulk_edit.py:415
msgid "Minimum child VLAN VID"
msgstr ""
-#: ipam/forms/bulk_edit.py:421
+#: netbox/ipam/forms/bulk_edit.py:421
msgid "Maximum child VLAN VID"
msgstr ""
-#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566
+#: netbox/ipam/forms/bulk_edit.py:429 netbox/ipam/forms/model_forms.py:566
msgid "Scope type"
msgstr ""
-#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641
-#: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38
+#: netbox/ipam/forms/bulk_edit.py:491 netbox/ipam/forms/model_forms.py:641
+#: netbox/ipam/tables/vlans.py:71 netbox/templates/ipam/vlangroup.html:38
msgid "Scope"
msgstr ""
-#: ipam/forms/bulk_edit.py:563
+#: netbox/ipam/forms/bulk_edit.py:563
msgid "Site & Group"
msgstr ""
-#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705
-#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19
-#: ipam/tables/services.py:49 templates/ipam/service.html:36
-#: templates/ipam/servicetemplate.html:23
+#: netbox/ipam/forms/bulk_edit.py:577 netbox/ipam/forms/model_forms.py:705
+#: netbox/ipam/forms/model_forms.py:737 netbox/ipam/tables/services.py:19
+#: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36
+#: netbox/templates/ipam/servicetemplate.html:23
msgid "Ports"
msgstr ""
-#: ipam/forms/bulk_import.py:47
+#: netbox/ipam/forms/bulk_import.py:47
msgid "Import route targets"
msgstr ""
-#: ipam/forms/bulk_import.py:53
+#: netbox/ipam/forms/bulk_import.py:53
msgid "Export route targets"
msgstr ""
-#: ipam/forms/bulk_import.py:91 ipam/forms/bulk_import.py:111
-#: ipam/forms/bulk_import.py:131
+#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111
+#: netbox/ipam/forms/bulk_import.py:131
msgid "Assigned RIR"
msgstr ""
-#: ipam/forms/bulk_import.py:181
+#: netbox/ipam/forms/bulk_import.py:181
msgid "VLAN's group (if any)"
msgstr ""
-#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256
-#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 ipam/tables/ip.py:254
-#: templates/ipam/prefix.html:60 templates/ipam/vlan.html:12
-#: templates/ipam/vlan/base.html:6 templates/ipam/vlan_edit.html:10
-#: templates/wireless/wirelesslan.html:30 vpn/forms/bulk_import.py:304
-#: vpn/forms/filtersets.py:284 vpn/forms/model_forms.py:433
-#: vpn/forms/model_forms.py:452 wireless/forms/bulk_edit.py:55
-#: wireless/forms/bulk_import.py:48 wireless/forms/model_forms.py:48
-#: wireless/models.py:101
+#: netbox/ipam/forms/bulk_import.py:184 netbox/ipam/forms/filtersets.py:256
+#: netbox/ipam/forms/model_forms.py:216 netbox/ipam/models/vlans.py:214
+#: netbox/ipam/tables/ip.py:254 netbox/templates/ipam/prefix.html:60
+#: netbox/templates/ipam/vlan.html:12 netbox/templates/ipam/vlan/base.html:6
+#: netbox/templates/ipam/vlan_edit.html:10
+#: netbox/templates/wireless/wirelesslan.html:30
+#: netbox/vpn/forms/bulk_import.py:304 netbox/vpn/forms/filtersets.py:284
+#: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452
+#: netbox/wireless/forms/bulk_edit.py:55
+#: netbox/wireless/forms/bulk_import.py:48
+#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101
msgid "VLAN"
msgstr ""
-#: ipam/forms/bulk_import.py:307
+#: netbox/ipam/forms/bulk_import.py:307
msgid "Parent device of assigned interface (if any)"
msgstr ""
-#: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496
-#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284
-#: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200
-#: virtualization/forms/bulk_edit.py:326
-#: virtualization/forms/bulk_import.py:146
-#: virtualization/forms/bulk_import.py:207
-#: virtualization/forms/filtersets.py:208
-#: virtualization/forms/filtersets.py:244
-#: virtualization/forms/model_forms.py:288 vpn/forms/bulk_import.py:93
-#: vpn/forms/bulk_import.py:290
+#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496
+#: netbox/ipam/forms/model_forms.py:731 netbox/virtualization/filtersets.py:284
+#: netbox/virtualization/filtersets.py:323
+#: netbox/virtualization/forms/bulk_edit.py:200
+#: netbox/virtualization/forms/bulk_edit.py:326
+#: netbox/virtualization/forms/bulk_import.py:146
+#: netbox/virtualization/forms/bulk_import.py:207
+#: netbox/virtualization/forms/filtersets.py:208
+#: netbox/virtualization/forms/filtersets.py:244
+#: netbox/virtualization/forms/model_forms.py:288
+#: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290
msgid "Virtual machine"
msgstr ""
-#: ipam/forms/bulk_import.py:314
+#: netbox/ipam/forms/bulk_import.py:314
msgid "Parent VM of assigned interface (if any)"
msgstr ""
-#: ipam/forms/bulk_import.py:321
+#: netbox/ipam/forms/bulk_import.py:321
msgid "Assigned interface"
msgstr ""
-#: ipam/forms/bulk_import.py:324
+#: netbox/ipam/forms/bulk_import.py:324
msgid "Is primary"
msgstr ""
-#: ipam/forms/bulk_import.py:325
+#: netbox/ipam/forms/bulk_import.py:325
msgid "Make this the primary IP for the assigned device"
msgstr ""
-#: ipam/forms/bulk_import.py:364
+#: netbox/ipam/forms/bulk_import.py:364
msgid "No device or virtual machine specified; cannot set as primary IP"
msgstr ""
-#: ipam/forms/bulk_import.py:368
+#: netbox/ipam/forms/bulk_import.py:368
msgid "No interface specified; cannot set as primary IP"
msgstr ""
-#: ipam/forms/bulk_import.py:397
+#: netbox/ipam/forms/bulk_import.py:397
msgid "Auth type"
msgstr ""
-#: ipam/forms/bulk_import.py:412
+#: netbox/ipam/forms/bulk_import.py:412
msgid "Scope type (app & model)"
msgstr ""
-#: ipam/forms/bulk_import.py:418
+#: netbox/ipam/forms/bulk_import.py:418
#, python-brace-format
msgid "Minimum child VLAN VID (default: {minimum})"
msgstr ""
-#: ipam/forms/bulk_import.py:424
+#: netbox/ipam/forms/bulk_import.py:424
#, python-brace-format
msgid "Maximum child VLAN VID (default: {maximum})"
msgstr ""
-#: ipam/forms/bulk_import.py:448
+#: netbox/ipam/forms/bulk_import.py:448
msgid "Assigned VLAN group"
msgstr ""
-#: ipam/forms/bulk_import.py:479 ipam/forms/bulk_import.py:505
+#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505
msgid "IP protocol"
msgstr ""
-#: ipam/forms/bulk_import.py:493
+#: netbox/ipam/forms/bulk_import.py:493
msgid "Required if not assigned to a VM"
msgstr ""
-#: ipam/forms/bulk_import.py:500
+#: netbox/ipam/forms/bulk_import.py:500
msgid "Required if not assigned to a device"
msgstr ""
-#: ipam/forms/bulk_import.py:525
+#: netbox/ipam/forms/bulk_import.py:525
#, python-brace-format
msgid "{ip} is not assigned to this device/VM."
msgstr ""
-#: ipam/forms/filtersets.py:47 ipam/forms/model_forms.py:61
-#: netbox/navigation/menu.py:176 vpn/forms/model_forms.py:410
+#: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:61
+#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410
msgid "Route Targets"
msgstr ""
-#: ipam/forms/filtersets.py:53 ipam/forms/model_forms.py:48
-#: vpn/forms/filtersets.py:224 vpn/forms/model_forms.py:397
+#: netbox/ipam/forms/filtersets.py:53 netbox/ipam/forms/model_forms.py:48
+#: netbox/vpn/forms/filtersets.py:224 netbox/vpn/forms/model_forms.py:397
msgid "Import targets"
msgstr ""
-#: ipam/forms/filtersets.py:58 ipam/forms/model_forms.py:53
-#: vpn/forms/filtersets.py:229 vpn/forms/model_forms.py:402
+#: netbox/ipam/forms/filtersets.py:58 netbox/ipam/forms/model_forms.py:53
+#: netbox/vpn/forms/filtersets.py:229 netbox/vpn/forms/model_forms.py:402
msgid "Export targets"
msgstr ""
-#: ipam/forms/filtersets.py:73
+#: netbox/ipam/forms/filtersets.py:73
msgid "Imported by VRF"
msgstr ""
-#: ipam/forms/filtersets.py:78
+#: netbox/ipam/forms/filtersets.py:78
msgid "Exported by VRF"
msgstr ""
-#: ipam/forms/filtersets.py:87 ipam/tables/ip.py:89 templates/ipam/rir.html:30
+#: netbox/ipam/forms/filtersets.py:87 netbox/ipam/tables/ip.py:89
+#: netbox/templates/ipam/rir.html:30
msgid "Private"
msgstr ""
-#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191
-#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326
+#: netbox/ipam/forms/filtersets.py:105 netbox/ipam/forms/filtersets.py:191
+#: netbox/ipam/forms/filtersets.py:272 netbox/ipam/forms/filtersets.py:326
msgid "Address family"
msgstr ""
-#: ipam/forms/filtersets.py:119 templates/ipam/asnrange.html:25
+#: netbox/ipam/forms/filtersets.py:119 netbox/templates/ipam/asnrange.html:25
msgid "Range"
msgstr ""
-#: ipam/forms/filtersets.py:128
+#: netbox/ipam/forms/filtersets.py:128
msgid "Start"
msgstr ""
-#: ipam/forms/filtersets.py:132
+#: netbox/ipam/forms/filtersets.py:132
msgid "End"
msgstr ""
-#: ipam/forms/filtersets.py:171
+#: netbox/ipam/forms/filtersets.py:171
msgid "VLAN Assignment"
msgstr ""
-#: ipam/forms/filtersets.py:186
+#: netbox/ipam/forms/filtersets.py:186
msgid "Search within"
msgstr ""
-#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342
+#: netbox/ipam/forms/filtersets.py:207 netbox/ipam/forms/filtersets.py:342
msgid "Present in VRF"
msgstr ""
-#: ipam/forms/filtersets.py:311
+#: netbox/ipam/forms/filtersets.py:311
msgid "Device/VM"
msgstr ""
-#: ipam/forms/filtersets.py:321
+#: netbox/ipam/forms/filtersets.py:321
msgid "Parent Prefix"
msgstr ""
-#: ipam/forms/filtersets.py:347
+#: netbox/ipam/forms/filtersets.py:347
msgid "Assigned Device"
msgstr ""
-#: ipam/forms/filtersets.py:352
+#: netbox/ipam/forms/filtersets.py:352
msgid "Assigned VM"
msgstr ""
-#: ipam/forms/filtersets.py:366
+#: netbox/ipam/forms/filtersets.py:366
msgid "Assigned to an interface"
msgstr ""
-#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51
+#: netbox/ipam/forms/filtersets.py:373 netbox/templates/ipam/ipaddress.html:51
msgid "DNS Name"
msgstr ""
-#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520
-#: ipam/models/vlans.py:156 templates/ipam/vlan.html:31
+#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520
+#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31
msgid "VLAN ID"
msgstr ""
-#: ipam/forms/filtersets.py:448
+#: netbox/ipam/forms/filtersets.py:448
msgid "Minimum VID"
msgstr ""
-#: ipam/forms/filtersets.py:454
+#: netbox/ipam/forms/filtersets.py:454
msgid "Maximum VID"
msgstr ""
-#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318
-#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785
-#: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21
-#: templates/virtualization/virtualmachine.html:12
-#: templates/virtualization/vminterface.html:21
-#: templates/vpn/tunneltermination.html:25
-#: virtualization/forms/filtersets.py:193
-#: virtualization/forms/filtersets.py:238
-#: virtualization/forms/model_forms.py:220
-#: virtualization/tables/virtualmachines.py:128
-#: virtualization/tables/virtualmachines.py:181 vpn/choices.py:45
-#: vpn/forms/filtersets.py:293 vpn/forms/model_forms.py:160
-#: vpn/forms/model_forms.py:171 vpn/forms/model_forms.py:273
-#: vpn/forms/model_forms.py:454
+#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:318
+#: netbox/ipam/forms/model_forms.py:759 netbox/ipam/forms/model_forms.py:785
+#: netbox/ipam/tables/vlans.py:191
+#: netbox/templates/virtualization/virtualdisk.html:21
+#: netbox/templates/virtualization/virtualmachine.html:12
+#: netbox/templates/virtualization/vminterface.html:21
+#: netbox/templates/vpn/tunneltermination.html:25
+#: netbox/virtualization/forms/filtersets.py:193
+#: netbox/virtualization/forms/filtersets.py:238
+#: netbox/virtualization/forms/model_forms.py:220
+#: netbox/virtualization/tables/virtualmachines.py:128
+#: netbox/virtualization/tables/virtualmachines.py:181 netbox/vpn/choices.py:45
+#: netbox/vpn/forms/filtersets.py:293 netbox/vpn/forms/model_forms.py:160
+#: netbox/vpn/forms/model_forms.py:171 netbox/vpn/forms/model_forms.py:273
+#: netbox/vpn/forms/model_forms.py:454
msgid "Virtual Machine"
msgstr ""
-#: ipam/forms/model_forms.py:78 templates/ipam/routetarget.html:10
+#: netbox/ipam/forms/model_forms.py:78
+#: netbox/templates/ipam/routetarget.html:10
msgid "Route Target"
msgstr ""
-#: ipam/forms/model_forms.py:112 ipam/tables/ip.py:116
-#: templates/ipam/aggregate.html:11 templates/ipam/prefix.html:38
+#: netbox/ipam/forms/model_forms.py:112 netbox/ipam/tables/ip.py:116
+#: netbox/templates/ipam/aggregate.html:11 netbox/templates/ipam/prefix.html:38
msgid "Aggregate"
msgstr ""
-#: ipam/forms/model_forms.py:133 templates/ipam/asnrange.html:12
+#: netbox/ipam/forms/model_forms.py:133 netbox/templates/ipam/asnrange.html:12
msgid "ASN Range"
msgstr ""
-#: ipam/forms/model_forms.py:229
+#: netbox/ipam/forms/model_forms.py:229
msgid "Site/VLAN Assignment"
msgstr ""
-#: ipam/forms/model_forms.py:257 templates/ipam/iprange.html:10
+#: netbox/ipam/forms/model_forms.py:257 netbox/templates/ipam/iprange.html:10
msgid "IP Range"
msgstr ""
-#: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319
-#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19
+#: netbox/ipam/forms/model_forms.py:293 netbox/ipam/forms/model_forms.py:319
+#: netbox/ipam/forms/model_forms.py:471 netbox/templates/ipam/fhrpgroup.html:19
msgid "FHRP Group"
msgstr ""
-#: ipam/forms/model_forms.py:308
+#: netbox/ipam/forms/model_forms.py:308
msgid "Make this the primary IP for the device/VM"
msgstr ""
-#: ipam/forms/model_forms.py:323
+#: netbox/ipam/forms/model_forms.py:323
msgid "NAT IP (Inside)"
msgstr ""
-#: ipam/forms/model_forms.py:382
+#: netbox/ipam/forms/model_forms.py:382
msgid "An IP address can only be assigned to a single object."
msgstr ""
-#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897
+#: netbox/ipam/forms/model_forms.py:388 netbox/ipam/models/ip.py:897
msgid ""
"Cannot reassign IP address while it is designated as the primary IP for the "
"parent object"
msgstr ""
-#: ipam/forms/model_forms.py:398
+#: netbox/ipam/forms/model_forms.py:398
msgid ""
"Only IP addresses assigned to an interface can be designated as primary IPs."
msgstr ""
-#: ipam/forms/model_forms.py:473
+#: netbox/ipam/forms/model_forms.py:473
msgid "Virtual IP Address"
msgstr ""
-#: ipam/forms/model_forms.py:558
+#: netbox/ipam/forms/model_forms.py:558
msgid "Assignment already exists"
msgstr ""
-#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679
-#: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37
-#: templates/ipam/vlangroup.html:27
+#: netbox/ipam/forms/model_forms.py:637 netbox/ipam/forms/model_forms.py:679
+#: netbox/ipam/tables/ip.py:250 netbox/templates/ipam/vlan_edit.html:37
+#: netbox/templates/ipam/vlangroup.html:27
msgid "VLAN Group"
msgstr ""
-#: ipam/forms/model_forms.py:638
+#: netbox/ipam/forms/model_forms.py:638
msgid "Child VLANs"
msgstr ""
-#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742
+#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:742
msgid ""
"Comma-separated list of one or more port numbers. A range may be specified "
"using a hyphen."
msgstr ""
-#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12
+#: netbox/ipam/forms/model_forms.py:715
+#: netbox/templates/ipam/servicetemplate.html:12
msgid "Service Template"
msgstr ""
-#: ipam/forms/model_forms.py:762
+#: netbox/ipam/forms/model_forms.py:762
msgid "Port(s)"
msgstr ""
-#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791
-#: templates/ipam/service.html:21
+#: netbox/ipam/forms/model_forms.py:763 netbox/ipam/forms/model_forms.py:791
+#: netbox/templates/ipam/service.html:21
msgid "Service"
msgstr ""
-#: ipam/forms/model_forms.py:776
+#: netbox/ipam/forms/model_forms.py:776
msgid "Service template"
msgstr ""
-#: ipam/forms/model_forms.py:788
+#: netbox/ipam/forms/model_forms.py:788
msgid "From Template"
msgstr ""
-#: ipam/forms/model_forms.py:789
+#: netbox/ipam/forms/model_forms.py:789
msgid "Custom"
msgstr ""
-#: ipam/forms/model_forms.py:819
+#: netbox/ipam/forms/model_forms.py:819
msgid ""
"Must specify name, protocol, and port(s) if not using a service template."
msgstr ""
-#: ipam/models/asns.py:34
+#: netbox/ipam/models/asns.py:34
msgid "start"
msgstr ""
-#: ipam/models/asns.py:51
+#: netbox/ipam/models/asns.py:51
msgid "ASN range"
msgstr ""
-#: ipam/models/asns.py:52
+#: netbox/ipam/models/asns.py:52
msgid "ASN ranges"
msgstr ""
-#: ipam/models/asns.py:72
+#: netbox/ipam/models/asns.py:72
#, python-brace-format
msgid "Starting ASN ({start}) must be lower than ending ASN ({end})."
msgstr ""
-#: ipam/models/asns.py:104
+#: netbox/ipam/models/asns.py:104
msgid "Regional Internet Registry responsible for this AS number space"
msgstr ""
-#: ipam/models/asns.py:109
+#: netbox/ipam/models/asns.py:109
msgid "16- or 32-bit autonomous system number"
msgstr ""
-#: ipam/models/fhrp.py:22
+#: netbox/ipam/models/fhrp.py:22
msgid "group ID"
msgstr ""
-#: ipam/models/fhrp.py:30 ipam/models/services.py:21
+#: netbox/ipam/models/fhrp.py:30 netbox/ipam/models/services.py:22
msgid "protocol"
msgstr ""
-#: ipam/models/fhrp.py:38 wireless/models.py:27
+#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27
msgid "authentication type"
msgstr ""
-#: ipam/models/fhrp.py:43
+#: netbox/ipam/models/fhrp.py:43
msgid "authentication key"
msgstr ""
-#: ipam/models/fhrp.py:56
+#: netbox/ipam/models/fhrp.py:56
msgid "FHRP group"
msgstr ""
-#: ipam/models/fhrp.py:57
+#: netbox/ipam/models/fhrp.py:57
msgid "FHRP groups"
msgstr ""
-#: ipam/models/fhrp.py:93 tenancy/models/contacts.py:134
+#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134
msgid "priority"
msgstr ""
-#: ipam/models/fhrp.py:113
+#: netbox/ipam/models/fhrp.py:113
msgid "FHRP group assignment"
msgstr ""
-#: ipam/models/fhrp.py:114
+#: netbox/ipam/models/fhrp.py:114
msgid "FHRP group assignments"
msgstr ""
-#: ipam/models/ip.py:65
+#: netbox/ipam/models/ip.py:65
msgid "private"
msgstr ""
-#: ipam/models/ip.py:66
+#: netbox/ipam/models/ip.py:66
msgid "IP space managed by this RIR is considered private"
msgstr ""
-#: ipam/models/ip.py:72 netbox/navigation/menu.py:169
+#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169
msgid "RIRs"
msgstr ""
-#: ipam/models/ip.py:84
+#: netbox/ipam/models/ip.py:84
msgid "IPv4 or IPv6 network"
msgstr ""
-#: ipam/models/ip.py:91
+#: netbox/ipam/models/ip.py:91
msgid "Regional Internet Registry responsible for this IP space"
msgstr ""
-#: ipam/models/ip.py:101
+#: netbox/ipam/models/ip.py:101
msgid "date added"
msgstr ""
-#: ipam/models/ip.py:115
+#: netbox/ipam/models/ip.py:115
msgid "aggregate"
msgstr ""
-#: ipam/models/ip.py:116
+#: netbox/ipam/models/ip.py:116
msgid "aggregates"
msgstr ""
-#: ipam/models/ip.py:132
+#: netbox/ipam/models/ip.py:132
msgid "Cannot create aggregate with /0 mask."
msgstr ""
-#: ipam/models/ip.py:144
+#: netbox/ipam/models/ip.py:144
#, python-brace-format
msgid ""
"Aggregates cannot overlap. {prefix} is already covered by an existing "
"aggregate ({aggregate})."
msgstr ""
-#: ipam/models/ip.py:158
+#: netbox/ipam/models/ip.py:158
#, python-brace-format
msgid ""
"Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate "
"({aggregate})."
msgstr ""
-#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114
+#: netbox/ipam/models/ip.py:200 netbox/ipam/models/ip.py:737
+#: netbox/vpn/models/tunnels.py:114
msgid "role"
msgstr ""
-#: ipam/models/ip.py:201
+#: netbox/ipam/models/ip.py:201
msgid "roles"
msgstr ""
-#: ipam/models/ip.py:217 ipam/models/ip.py:293
+#: netbox/ipam/models/ip.py:217 netbox/ipam/models/ip.py:293
msgid "prefix"
msgstr ""
-#: ipam/models/ip.py:218
+#: netbox/ipam/models/ip.py:218
msgid "IPv4 or IPv6 network with mask"
msgstr ""
-#: ipam/models/ip.py:254
+#: netbox/ipam/models/ip.py:254
msgid "Operational status of this prefix"
msgstr ""
-#: ipam/models/ip.py:262
+#: netbox/ipam/models/ip.py:262
msgid "The primary function of this prefix"
msgstr ""
-#: ipam/models/ip.py:265
+#: netbox/ipam/models/ip.py:265
msgid "is a pool"
msgstr ""
-#: ipam/models/ip.py:267
+#: netbox/ipam/models/ip.py:267
msgid "All IP addresses within this prefix are considered usable"
msgstr ""
-#: ipam/models/ip.py:270 ipam/models/ip.py:537
+#: netbox/ipam/models/ip.py:270 netbox/ipam/models/ip.py:537
msgid "mark utilized"
msgstr ""
-#: ipam/models/ip.py:294
+#: netbox/ipam/models/ip.py:294
msgid "prefixes"
msgstr ""
-#: ipam/models/ip.py:317
+#: netbox/ipam/models/ip.py:317
msgid "Cannot create prefix with /0 mask."
msgstr ""
-#: ipam/models/ip.py:324 ipam/models/ip.py:874
+#: netbox/ipam/models/ip.py:324 netbox/ipam/models/ip.py:874
#, python-brace-format
msgid "VRF {vrf}"
msgstr ""
-#: ipam/models/ip.py:324 ipam/models/ip.py:874
+#: netbox/ipam/models/ip.py:324 netbox/ipam/models/ip.py:874
msgid "global table"
msgstr ""
-#: ipam/models/ip.py:326
+#: netbox/ipam/models/ip.py:326
#, python-brace-format
msgid "Duplicate prefix found in {table}: {prefix}"
msgstr ""
-#: ipam/models/ip.py:495
+#: netbox/ipam/models/ip.py:495
msgid "start address"
msgstr ""
-#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712
+#: netbox/ipam/models/ip.py:496 netbox/ipam/models/ip.py:500
+#: netbox/ipam/models/ip.py:712
msgid "IPv4 or IPv6 address (with mask)"
msgstr ""
-#: ipam/models/ip.py:499
+#: netbox/ipam/models/ip.py:499
msgid "end address"
msgstr ""
-#: ipam/models/ip.py:526
+#: netbox/ipam/models/ip.py:526
msgid "Operational status of this range"
msgstr ""
-#: ipam/models/ip.py:534
+#: netbox/ipam/models/ip.py:534
msgid "The primary function of this range"
msgstr ""
-#: ipam/models/ip.py:548
+#: netbox/ipam/models/ip.py:548
msgid "IP range"
msgstr ""
-#: ipam/models/ip.py:549
+#: netbox/ipam/models/ip.py:549
msgid "IP ranges"
msgstr ""
-#: ipam/models/ip.py:565
+#: netbox/ipam/models/ip.py:565
msgid "Starting and ending IP address versions must match"
msgstr ""
-#: ipam/models/ip.py:571
+#: netbox/ipam/models/ip.py:571
msgid "Starting and ending IP address masks must match"
msgstr ""
-#: ipam/models/ip.py:578
+#: netbox/ipam/models/ip.py:578
#, python-brace-format
msgid ""
"Ending address must be greater than the starting address ({start_address})"
msgstr ""
-#: ipam/models/ip.py:590
+#: netbox/ipam/models/ip.py:590
#, python-brace-format
msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}"
msgstr ""
-#: ipam/models/ip.py:599
+#: netbox/ipam/models/ip.py:599
#, python-brace-format
msgid "Defined range exceeds maximum supported size ({max_size})"
msgstr ""
-#: ipam/models/ip.py:711 tenancy/models/contacts.py:82
+#: netbox/ipam/models/ip.py:711 netbox/tenancy/models/contacts.py:82
msgid "address"
msgstr ""
-#: ipam/models/ip.py:734
+#: netbox/ipam/models/ip.py:734
msgid "The operational status of this IP"
msgstr ""
-#: ipam/models/ip.py:741
+#: netbox/ipam/models/ip.py:741
msgid "The functional role of this IP"
msgstr ""
-#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72
+#: netbox/ipam/models/ip.py:765 netbox/templates/ipam/ipaddress.html:72
msgid "NAT (inside)"
msgstr ""
-#: ipam/models/ip.py:766
+#: netbox/ipam/models/ip.py:766
msgid "The IP for which this address is the \"outside\" IP"
msgstr ""
-#: ipam/models/ip.py:773
+#: netbox/ipam/models/ip.py:773
msgid "Hostname or FQDN (not case-sensitive)"
msgstr ""
-#: ipam/models/ip.py:789 ipam/models/services.py:93
+#: netbox/ipam/models/ip.py:789 netbox/ipam/models/services.py:94
msgid "IP addresses"
msgstr ""
-#: ipam/models/ip.py:845
+#: netbox/ipam/models/ip.py:845
msgid "Cannot create IP address with /0 mask."
msgstr ""
-#: ipam/models/ip.py:851
+#: netbox/ipam/models/ip.py:851
#, python-brace-format
msgid "{ip} is a network ID, which may not be assigned to an interface."
msgstr ""
-#: ipam/models/ip.py:862
+#: netbox/ipam/models/ip.py:862
#, python-brace-format
msgid "{ip} is a broadcast address, which may not be assigned to an interface."
msgstr ""
-#: ipam/models/ip.py:876
+#: netbox/ipam/models/ip.py:876
#, python-brace-format
msgid "Duplicate IP address found in {table}: {ipaddress}"
msgstr ""
-#: ipam/models/ip.py:903
+#: netbox/ipam/models/ip.py:903
msgid "Only IPv6 addresses can be assigned SLAAC status"
msgstr ""
-#: ipam/models/services.py:32
+#: netbox/ipam/models/services.py:33
msgid "port numbers"
msgstr ""
-#: ipam/models/services.py:58
+#: netbox/ipam/models/services.py:59
msgid "service template"
msgstr ""
-#: ipam/models/services.py:59
+#: netbox/ipam/models/services.py:60
msgid "service templates"
msgstr ""
-#: ipam/models/services.py:94
+#: netbox/ipam/models/services.py:95
msgid "The specific IP addresses (if any) to which this service is bound"
msgstr ""
-#: ipam/models/services.py:101
+#: netbox/ipam/models/services.py:102
msgid "service"
msgstr ""
-#: ipam/models/services.py:102
+#: netbox/ipam/models/services.py:103
msgid "services"
msgstr ""
-#: ipam/models/services.py:116
+#: netbox/ipam/models/services.py:117
msgid ""
"A service cannot be associated with both a device and a virtual machine."
msgstr ""
-#: ipam/models/services.py:118
+#: netbox/ipam/models/services.py:119
msgid "A service must be associated with either a device or a virtual machine."
msgstr ""
-#: ipam/models/vlans.py:49
+#: netbox/ipam/models/vlans.py:49
msgid "minimum VLAN ID"
msgstr ""
-#: ipam/models/vlans.py:55
+#: netbox/ipam/models/vlans.py:55
msgid "Lowest permissible ID of a child VLAN"
msgstr ""
-#: ipam/models/vlans.py:58
+#: netbox/ipam/models/vlans.py:58
msgid "maximum VLAN ID"
msgstr ""
-#: ipam/models/vlans.py:64
+#: netbox/ipam/models/vlans.py:64
msgid "Highest permissible ID of a child VLAN"
msgstr ""
-#: ipam/models/vlans.py:85
+#: netbox/ipam/models/vlans.py:85
msgid "VLAN groups"
msgstr ""
-#: ipam/models/vlans.py:95
+#: netbox/ipam/models/vlans.py:95
msgid "Cannot set scope_type without scope_id."
msgstr ""
-#: ipam/models/vlans.py:97
+#: netbox/ipam/models/vlans.py:97
msgid "Cannot set scope_id without scope_type."
msgstr ""
-#: ipam/models/vlans.py:102
+#: netbox/ipam/models/vlans.py:102
msgid "Maximum child VID must be greater than or equal to minimum child VID"
msgstr ""
-#: ipam/models/vlans.py:145
+#: netbox/ipam/models/vlans.py:145
msgid "The specific site to which this VLAN is assigned (if any)"
msgstr ""
-#: ipam/models/vlans.py:153
+#: netbox/ipam/models/vlans.py:153
msgid "VLAN group (optional)"
msgstr ""
-#: ipam/models/vlans.py:161
+#: netbox/ipam/models/vlans.py:161
msgid "Numeric VLAN ID (1-4094)"
msgstr ""
-#: ipam/models/vlans.py:179
+#: netbox/ipam/models/vlans.py:179
msgid "Operational status of this VLAN"
msgstr ""
-#: ipam/models/vlans.py:187
+#: netbox/ipam/models/vlans.py:187
msgid "The primary function of this VLAN"
msgstr ""
-#: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78
-#: ipam/views.py:978 netbox/navigation/menu.py:180
-#: netbox/navigation/menu.py:182
+#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:175
+#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:978
+#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182
msgid "VLANs"
msgstr ""
-#: ipam/models/vlans.py:230
+#: netbox/ipam/models/vlans.py:230
#, python-brace-format
msgid ""
"VLAN is assigned to group {group} (scope: {scope}); cannot also assign to "
"site {site}."
msgstr ""
-#: ipam/models/vlans.py:238
+#: netbox/ipam/models/vlans.py:238
#, python-brace-format
msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}"
msgstr ""
-#: ipam/models/vrfs.py:30
+#: netbox/ipam/models/vrfs.py:30
msgid "route distinguisher"
msgstr ""
-#: ipam/models/vrfs.py:31
+#: netbox/ipam/models/vrfs.py:31
msgid "Unique route distinguisher (as defined in RFC 4364)"
msgstr ""
-#: ipam/models/vrfs.py:42
+#: netbox/ipam/models/vrfs.py:42
msgid "enforce unique space"
msgstr ""
-#: ipam/models/vrfs.py:43
+#: netbox/ipam/models/vrfs.py:43
msgid "Prevent duplicate prefixes/IP addresses within this VRF"
msgstr ""
-#: ipam/models/vrfs.py:63 netbox/navigation/menu.py:173
-#: netbox/navigation/menu.py:175
+#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173
+#: netbox/netbox/navigation/menu.py:175
msgid "VRFs"
msgstr ""
-#: ipam/models/vrfs.py:82
+#: netbox/ipam/models/vrfs.py:82
msgid "Route target value (formatted in accordance with RFC 4360)"
msgstr ""
-#: ipam/models/vrfs.py:94
+#: netbox/ipam/models/vrfs.py:94
msgid "route target"
msgstr ""
-#: ipam/models/vrfs.py:95
+#: netbox/ipam/models/vrfs.py:95
msgid "route targets"
msgstr ""
-#: ipam/tables/asn.py:52
+#: netbox/ipam/tables/asn.py:52
msgid "ASDOT"
msgstr ""
-#: ipam/tables/asn.py:57
+#: netbox/ipam/tables/asn.py:57
msgid "Site Count"
msgstr ""
-#: ipam/tables/asn.py:62
+#: netbox/ipam/tables/asn.py:62
msgid "Provider Count"
msgstr ""
-#: ipam/tables/ip.py:94 netbox/navigation/menu.py:166
-#: netbox/navigation/menu.py:168
+#: netbox/ipam/tables/ip.py:94 netbox/netbox/navigation/menu.py:166
+#: netbox/netbox/navigation/menu.py:168
msgid "Aggregates"
msgstr ""
-#: ipam/tables/ip.py:124
+#: netbox/ipam/tables/ip.py:124
msgid "Added"
msgstr ""
-#: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138
-#: ipam/views.py:349 netbox/navigation/menu.py:152
-#: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84
+#: netbox/ipam/tables/ip.py:127 netbox/ipam/tables/ip.py:165
+#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:349
+#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154
+#: netbox/templates/ipam/vlan.html:84
msgid "Prefixes"
msgstr ""
-#: ipam/tables/ip.py:130 ipam/tables/ip.py:267 ipam/tables/ip.py:320
-#: ipam/tables/vlans.py:82 templates/dcim/device.html:252
-#: templates/ipam/aggregate.html:24 templates/ipam/iprange.html:29
-#: templates/ipam/prefix.html:106
+#: netbox/ipam/tables/ip.py:130 netbox/ipam/tables/ip.py:267
+#: netbox/ipam/tables/ip.py:320 netbox/ipam/tables/vlans.py:82
+#: netbox/templates/dcim/device.html:253
+#: netbox/templates/ipam/aggregate.html:24
+#: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106
msgid "Utilization"
msgstr ""
-#: ipam/tables/ip.py:170 netbox/navigation/menu.py:148
+#: netbox/ipam/tables/ip.py:170 netbox/netbox/navigation/menu.py:148
msgid "IP Ranges"
msgstr ""
-#: ipam/tables/ip.py:220
+#: netbox/ipam/tables/ip.py:220
msgid "Prefix (Flat)"
msgstr ""
-#: ipam/tables/ip.py:224
+#: netbox/ipam/tables/ip.py:224
msgid "Depth"
msgstr ""
-#: ipam/tables/ip.py:261
+#: netbox/ipam/tables/ip.py:261
msgid "Pool"
msgstr ""
-#: ipam/tables/ip.py:264 ipam/tables/ip.py:317
+#: netbox/ipam/tables/ip.py:264 netbox/ipam/tables/ip.py:317
msgid "Marked Utilized"
msgstr ""
-#: ipam/tables/ip.py:301
+#: netbox/ipam/tables/ip.py:301
msgid "Start address"
msgstr ""
-#: ipam/tables/ip.py:379
+#: netbox/ipam/tables/ip.py:379
msgid "NAT (Inside)"
msgstr ""
-#: ipam/tables/ip.py:384
+#: netbox/ipam/tables/ip.py:384
msgid "NAT (Outside)"
msgstr ""
-#: ipam/tables/ip.py:389
+#: netbox/ipam/tables/ip.py:389
msgid "Assigned"
msgstr ""
-#: ipam/tables/ip.py:424 templates/vpn/l2vpntermination.html:16
-#: vpn/forms/filtersets.py:240
+#: netbox/ipam/tables/ip.py:424 netbox/templates/vpn/l2vpntermination.html:16
+#: netbox/vpn/forms/filtersets.py:240
msgid "Assigned Object"
msgstr ""
-#: ipam/tables/vlans.py:68
+#: netbox/ipam/tables/vlans.py:68
msgid "Scope Type"
msgstr ""
-#: ipam/tables/vlans.py:107 ipam/tables/vlans.py:210
-#: templates/dcim/inc/interface_vlans_table.html:4
+#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210
+#: netbox/templates/dcim/inc/interface_vlans_table.html:4
msgid "VID"
msgstr ""
-#: ipam/tables/vrfs.py:30
+#: netbox/ipam/tables/vrfs.py:30
msgid "RD"
msgstr ""
-#: ipam/tables/vrfs.py:33
+#: netbox/ipam/tables/vrfs.py:33
msgid "Unique"
msgstr ""
-#: ipam/tables/vrfs.py:36 vpn/tables/l2vpn.py:27
+#: netbox/ipam/tables/vrfs.py:36 netbox/vpn/tables/l2vpn.py:27
msgid "Import Targets"
msgstr ""
-#: ipam/tables/vrfs.py:41 vpn/tables/l2vpn.py:32
+#: netbox/ipam/tables/vrfs.py:41 netbox/vpn/tables/l2vpn.py:32
msgid "Export Targets"
msgstr ""
-#: ipam/validators.py:9
+#: netbox/ipam/validators.py:9
#, python-brace-format
msgid "{prefix} is not a valid prefix. Did you mean {suggested}?"
msgstr ""
-#: ipam/validators.py:16
+#: netbox/ipam/validators.py:16
#, python-format
msgid "The prefix length must be less than or equal to %(limit_value)s."
msgstr ""
-#: ipam/validators.py:24
+#: netbox/ipam/validators.py:24
#, python-format
msgid "The prefix length must be greater than or equal to %(limit_value)s."
msgstr ""
-#: ipam/validators.py:33
+#: netbox/ipam/validators.py:33
msgid ""
"Only alphanumeric characters, asterisks, hyphens, periods, and underscores "
"are allowed in DNS names"
msgstr ""
-#: ipam/views.py:541
+#: netbox/ipam/views.py:541
msgid "Child Prefixes"
msgstr ""
-#: ipam/views.py:576
+#: netbox/ipam/views.py:576
msgid "Child Ranges"
msgstr ""
-#: ipam/views.py:902
+#: netbox/ipam/views.py:902
msgid "Related IPs"
msgstr ""
-#: ipam/views.py:1133
+#: netbox/ipam/views.py:1133
msgid "Device Interfaces"
msgstr ""
-#: ipam/views.py:1150
+#: netbox/ipam/views.py:1150
msgid "VM Interfaces"
msgstr ""
-#: netbox/api/fields.py:63
+#: netbox/netbox/api/fields.py:63
msgid "This field may not be blank."
msgstr ""
-#: netbox/api/fields.py:68
+#: netbox/netbox/api/fields.py:68
msgid ""
"Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary "
"or list."
msgstr ""
-#: netbox/api/fields.py:89
+#: netbox/netbox/api/fields.py:89
#, python-brace-format
msgid "{value} is not a valid choice."
msgstr ""
-#: netbox/api/fields.py:102
+#: netbox/netbox/api/fields.py:102
#, python-brace-format
msgid "Invalid content type: {content_type}"
msgstr ""
-#: netbox/api/fields.py:103
+#: netbox/netbox/api/fields.py:103
msgid "Invalid value. Specify a content type as '.'."
msgstr ""
-#: netbox/authentication/__init__.py:138
+#: netbox/netbox/authentication/__init__.py:138
#, python-brace-format
msgid "Invalid permission {permission} for model {model}"
msgstr ""
-#: netbox/choices.py:49
+#: netbox/netbox/choices.py:49
msgid "Dark Red"
msgstr ""
-#: netbox/choices.py:52
+#: netbox/netbox/choices.py:52
msgid "Rose"
msgstr ""
-#: netbox/choices.py:53
+#: netbox/netbox/choices.py:53
msgid "Fuchsia"
msgstr ""
-#: netbox/choices.py:55
+#: netbox/netbox/choices.py:55
msgid "Dark Purple"
msgstr ""
-#: netbox/choices.py:58
+#: netbox/netbox/choices.py:58
msgid "Light Blue"
msgstr ""
-#: netbox/choices.py:61
+#: netbox/netbox/choices.py:61
msgid "Aqua"
msgstr ""
-#: netbox/choices.py:62
+#: netbox/netbox/choices.py:62
msgid "Dark Green"
msgstr ""
-#: netbox/choices.py:64
+#: netbox/netbox/choices.py:64
msgid "Light Green"
msgstr ""
-#: netbox/choices.py:65
+#: netbox/netbox/choices.py:65
msgid "Lime"
msgstr ""
-#: netbox/choices.py:67
+#: netbox/netbox/choices.py:67
msgid "Amber"
msgstr ""
-#: netbox/choices.py:69
+#: netbox/netbox/choices.py:69
msgid "Dark Orange"
msgstr ""
-#: netbox/choices.py:70
+#: netbox/netbox/choices.py:70
msgid "Brown"
msgstr ""
-#: netbox/choices.py:71
+#: netbox/netbox/choices.py:71
msgid "Light Grey"
msgstr ""
-#: netbox/choices.py:72
+#: netbox/netbox/choices.py:72
msgid "Grey"
msgstr ""
-#: netbox/choices.py:73
+#: netbox/netbox/choices.py:73
msgid "Dark Grey"
msgstr ""
-#: netbox/choices.py:131
+#: netbox/netbox/choices.py:131
msgid "Direct"
msgstr ""
-#: netbox/choices.py:132
+#: netbox/netbox/choices.py:132
msgid "Upload"
msgstr ""
-#: netbox/choices.py:144 netbox/choices.py:158
+#: netbox/netbox/choices.py:144 netbox/netbox/choices.py:158
msgid "Auto-detect"
msgstr ""
-#: netbox/choices.py:159
+#: netbox/netbox/choices.py:159
msgid "Comma"
msgstr ""
-#: netbox/choices.py:160
+#: netbox/netbox/choices.py:160
msgid "Semicolon"
msgstr ""
-#: netbox/choices.py:161
+#: netbox/netbox/choices.py:161
msgid "Tab"
msgstr ""
-#: netbox/config/__init__.py:67
+#: netbox/netbox/config/__init__.py:67
#, python-brace-format
msgid "Invalid configuration parameter: {item}"
msgstr ""
-#: netbox/config/parameters.py:22 templates/core/inc/config_data.html:62
+#: netbox/netbox/config/parameters.py:22
+#: netbox/templates/core/inc/config_data.html:62
msgid "Login banner"
msgstr ""
-#: netbox/config/parameters.py:24
+#: netbox/netbox/config/parameters.py:24
msgid "Additional content to display on the login page"
msgstr ""
-#: netbox/config/parameters.py:33 templates/core/inc/config_data.html:66
+#: netbox/netbox/config/parameters.py:33
+#: netbox/templates/core/inc/config_data.html:66
msgid "Maintenance banner"
msgstr ""
-#: netbox/config/parameters.py:35
+#: netbox/netbox/config/parameters.py:35
msgid "Additional content to display when in maintenance mode"
msgstr ""
-#: netbox/config/parameters.py:44 templates/core/inc/config_data.html:70
+#: netbox/netbox/config/parameters.py:44
+#: netbox/templates/core/inc/config_data.html:70
msgid "Top banner"
msgstr ""
-#: netbox/config/parameters.py:46
+#: netbox/netbox/config/parameters.py:46
msgid "Additional content to display at the top of every page"
msgstr ""
-#: netbox/config/parameters.py:55 templates/core/inc/config_data.html:74
+#: netbox/netbox/config/parameters.py:55
+#: netbox/templates/core/inc/config_data.html:74
msgid "Bottom banner"
msgstr ""
-#: netbox/config/parameters.py:57
+#: netbox/netbox/config/parameters.py:57
msgid "Additional content to display at the bottom of every page"
msgstr ""
-#: netbox/config/parameters.py:68
+#: netbox/netbox/config/parameters.py:68
msgid "Globally unique IP space"
msgstr ""
-#: netbox/config/parameters.py:70
+#: netbox/netbox/config/parameters.py:70
msgid "Enforce unique IP addressing within the global table"
msgstr ""
-#: netbox/config/parameters.py:75 templates/core/inc/config_data.html:44
+#: netbox/netbox/config/parameters.py:75
+#: netbox/templates/core/inc/config_data.html:44
msgid "Prefer IPv4"
msgstr ""
-#: netbox/config/parameters.py:77
+#: netbox/netbox/config/parameters.py:77
msgid "Prefer IPv4 addresses over IPv6"
msgstr ""
-#: netbox/config/parameters.py:84
+#: netbox/netbox/config/parameters.py:84
msgid "Rack unit height"
msgstr ""
-#: netbox/config/parameters.py:86
+#: netbox/netbox/config/parameters.py:86
msgid "Default unit height for rendered rack elevations"
msgstr ""
-#: netbox/config/parameters.py:91
+#: netbox/netbox/config/parameters.py:91
msgid "Rack unit width"
msgstr ""
-#: netbox/config/parameters.py:93
+#: netbox/netbox/config/parameters.py:93
msgid "Default unit width for rendered rack elevations"
msgstr ""
-#: netbox/config/parameters.py:100
+#: netbox/netbox/config/parameters.py:100
msgid "Powerfeed voltage"
msgstr ""
-#: netbox/config/parameters.py:102
+#: netbox/netbox/config/parameters.py:102
msgid "Default voltage for powerfeeds"
msgstr ""
-#: netbox/config/parameters.py:107
+#: netbox/netbox/config/parameters.py:107
msgid "Powerfeed amperage"
msgstr ""
-#: netbox/config/parameters.py:109
+#: netbox/netbox/config/parameters.py:109
msgid "Default amperage for powerfeeds"
msgstr ""
-#: netbox/config/parameters.py:114
+#: netbox/netbox/config/parameters.py:114
msgid "Powerfeed max utilization"
msgstr ""
-#: netbox/config/parameters.py:116
+#: netbox/netbox/config/parameters.py:116
msgid "Default max utilization for powerfeeds"
msgstr ""
-#: netbox/config/parameters.py:123 templates/core/inc/config_data.html:53
+#: netbox/netbox/config/parameters.py:123
+#: netbox/templates/core/inc/config_data.html:53
msgid "Allowed URL schemes"
msgstr ""
-#: netbox/config/parameters.py:128
+#: netbox/netbox/config/parameters.py:128
msgid "Permitted schemes for URLs in user-provided content"
msgstr ""
-#: netbox/config/parameters.py:136
+#: netbox/netbox/config/parameters.py:136
msgid "Default page size"
msgstr ""
-#: netbox/config/parameters.py:142
+#: netbox/netbox/config/parameters.py:142
msgid "Maximum page size"
msgstr ""
-#: netbox/config/parameters.py:150 templates/core/inc/config_data.html:96
+#: netbox/netbox/config/parameters.py:150
+#: netbox/templates/core/inc/config_data.html:96
msgid "Custom validators"
msgstr ""
-#: netbox/config/parameters.py:152
+#: netbox/netbox/config/parameters.py:152
msgid "Custom validation rules (JSON)"
msgstr ""
-#: netbox/config/parameters.py:160 templates/core/inc/config_data.html:104
+#: netbox/netbox/config/parameters.py:160
+#: netbox/templates/core/inc/config_data.html:104
msgid "Protection rules"
msgstr ""
-#: netbox/config/parameters.py:162
+#: netbox/netbox/config/parameters.py:162
msgid "Deletion protection rules (JSON)"
msgstr ""
-#: netbox/config/parameters.py:172 templates/core/inc/config_data.html:117
+#: netbox/netbox/config/parameters.py:172
+#: netbox/templates/core/inc/config_data.html:117
msgid "Default preferences"
msgstr ""
-#: netbox/config/parameters.py:174
+#: netbox/netbox/config/parameters.py:174
msgid "Default preferences for new users"
msgstr ""
-#: netbox/config/parameters.py:181 templates/core/inc/config_data.html:129
+#: netbox/netbox/config/parameters.py:181
+#: netbox/templates/core/inc/config_data.html:129
msgid "Maintenance mode"
msgstr ""
-#: netbox/config/parameters.py:183
+#: netbox/netbox/config/parameters.py:183
msgid "Enable maintenance mode"
msgstr ""
-#: netbox/config/parameters.py:188 templates/core/inc/config_data.html:133
+#: netbox/netbox/config/parameters.py:188
+#: netbox/templates/core/inc/config_data.html:133
msgid "GraphQL enabled"
msgstr ""
-#: netbox/config/parameters.py:190
+#: netbox/netbox/config/parameters.py:190
msgid "Enable the GraphQL API"
msgstr ""
-#: netbox/config/parameters.py:195 templates/core/inc/config_data.html:137
+#: netbox/netbox/config/parameters.py:195
+#: netbox/templates/core/inc/config_data.html:137
msgid "Changelog retention"
msgstr ""
-#: netbox/config/parameters.py:197
+#: netbox/netbox/config/parameters.py:197
msgid "Days to retain changelog history (set to zero for unlimited)"
msgstr ""
-#: netbox/config/parameters.py:202
+#: netbox/netbox/config/parameters.py:202
msgid "Job result retention"
msgstr ""
-#: netbox/config/parameters.py:204
+#: netbox/netbox/config/parameters.py:204
msgid "Days to retain job result history (set to zero for unlimited)"
msgstr ""
-#: netbox/config/parameters.py:209 templates/core/inc/config_data.html:145
+#: netbox/netbox/config/parameters.py:209
+#: netbox/templates/core/inc/config_data.html:145
msgid "Maps URL"
msgstr ""
-#: netbox/config/parameters.py:211
+#: netbox/netbox/config/parameters.py:211
msgid "Base URL for mapping geographic locations"
msgstr ""
-#: netbox/forms/__init__.py:12
+#: netbox/netbox/forms/__init__.py:12
msgid "Partial match"
msgstr ""
-#: netbox/forms/__init__.py:13
+#: netbox/netbox/forms/__init__.py:13
msgid "Exact match"
msgstr ""
-#: netbox/forms/__init__.py:14
+#: netbox/netbox/forms/__init__.py:14
msgid "Starts with"
msgstr ""
-#: netbox/forms/__init__.py:15
+#: netbox/netbox/forms/__init__.py:15
msgid "Ends with"
msgstr ""
-#: netbox/forms/__init__.py:16
+#: netbox/netbox/forms/__init__.py:16
msgid "Regex"
msgstr ""
-#: netbox/forms/__init__.py:34
+#: netbox/netbox/forms/__init__.py:34
msgid "Object type(s)"
msgstr ""
-#: netbox/forms/base.py:88
+#: netbox/netbox/forms/base.py:88
msgid ""
"Tag slugs separated by commas, encased with double quotes (e.g. \"tag1,tag2,"
"tag3\")"
msgstr ""
-#: netbox/forms/base.py:118
+#: netbox/netbox/forms/base.py:118
msgid "Add tags"
msgstr ""
-#: netbox/forms/base.py:123
+#: netbox/netbox/forms/base.py:123
msgid "Remove tags"
msgstr ""
-#: netbox/forms/mixins.py:38
+#: netbox/netbox/forms/mixins.py:38
#, python-brace-format
msgid "{class_name} must specify a model class."
msgstr ""
-#: netbox/models/features.py:277
+#: netbox/netbox/models/features.py:277
#, python-brace-format
msgid "Unknown field name '{name}' in custom field data."
msgstr ""
-#: netbox/models/features.py:283
+#: netbox/netbox/models/features.py:283
#, python-brace-format
msgid "Invalid value for custom field '{name}': {error}"
msgstr ""
-#: netbox/models/features.py:290
+#: netbox/netbox/models/features.py:290
#, python-brace-format
msgid "Missing required custom field '{name}'."
msgstr ""
-#: netbox/models/features.py:441
+#: netbox/netbox/models/features.py:441
msgid "Remote data source"
msgstr ""
-#: netbox/models/features.py:451
+#: netbox/netbox/models/features.py:451
msgid "data path"
msgstr ""
-#: netbox/models/features.py:455
+#: netbox/netbox/models/features.py:455
msgid "Path to remote file (relative to data source root)"
msgstr ""
-#: netbox/models/features.py:458
+#: netbox/netbox/models/features.py:458
msgid "auto sync enabled"
msgstr ""
-#: netbox/models/features.py:460
+#: netbox/netbox/models/features.py:460
msgid "Enable automatic synchronization of data when the data file is updated"
msgstr ""
-#: netbox/models/features.py:463
+#: netbox/netbox/models/features.py:463
msgid "date synced"
msgstr ""
-#: netbox/models/features.py:557
+#: netbox/netbox/models/features.py:557
#, python-brace-format
msgid "{class_name} must implement a sync_data() method."
msgstr ""
-#: netbox/navigation/menu.py:11
+#: netbox/netbox/navigation/menu.py:11
msgid "Organization"
msgstr ""
-#: netbox/navigation/menu.py:19
+#: netbox/netbox/navigation/menu.py:19
msgid "Site Groups"
msgstr ""
-#: netbox/navigation/menu.py:27
+#: netbox/netbox/navigation/menu.py:27
msgid "Rack Roles"
msgstr ""
-#: netbox/navigation/menu.py:31
+#: netbox/netbox/navigation/menu.py:31
msgid "Elevations"
msgstr ""
-#: netbox/navigation/menu.py:40
+#: netbox/netbox/navigation/menu.py:40
msgid "Tenant Groups"
msgstr ""
-#: netbox/navigation/menu.py:47
+#: netbox/netbox/navigation/menu.py:47
msgid "Contact Groups"
msgstr ""
-#: netbox/navigation/menu.py:48 templates/tenancy/contactrole.html:8
+#: netbox/netbox/navigation/menu.py:48
+#: netbox/templates/tenancy/contactrole.html:8
msgid "Contact Roles"
msgstr ""
-#: netbox/navigation/menu.py:49
+#: netbox/netbox/navigation/menu.py:49
msgid "Contact Assignments"
msgstr ""
-#: netbox/navigation/menu.py:63
+#: netbox/netbox/navigation/menu.py:63
msgid "Modules"
msgstr ""
-#: netbox/navigation/menu.py:67 templates/dcim/device.html:157
-#: templates/dcim/virtualdevicecontext.html:8
+#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:158
+#: netbox/templates/dcim/virtualdevicecontext.html:8
msgid "Virtual Device Contexts"
msgstr ""
-#: netbox/navigation/menu.py:75
+#: netbox/netbox/navigation/menu.py:75
msgid "Manufacturers"
msgstr ""
-#: netbox/navigation/menu.py:79
+#: netbox/netbox/navigation/menu.py:79
msgid "Device Components"
msgstr ""
-#: netbox/navigation/menu.py:91 templates/dcim/inventoryitemrole.html:8
+#: netbox/netbox/navigation/menu.py:91
+#: netbox/templates/dcim/inventoryitemrole.html:8
msgid "Inventory Item Roles"
msgstr ""
-#: netbox/navigation/menu.py:98 netbox/navigation/menu.py:102
+#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102
msgid "Connections"
msgstr ""
-#: netbox/navigation/menu.py:104
+#: netbox/netbox/navigation/menu.py:104
msgid "Cables"
msgstr ""
-#: netbox/navigation/menu.py:105
+#: netbox/netbox/navigation/menu.py:105
msgid "Wireless Links"
msgstr ""
-#: netbox/navigation/menu.py:108
+#: netbox/netbox/navigation/menu.py:108
msgid "Interface Connections"
msgstr ""
-#: netbox/navigation/menu.py:113
+#: netbox/netbox/navigation/menu.py:113
msgid "Console Connections"
msgstr ""
-#: netbox/navigation/menu.py:118
+#: netbox/netbox/navigation/menu.py:118
msgid "Power Connections"
msgstr ""
-#: netbox/navigation/menu.py:134
+#: netbox/netbox/navigation/menu.py:134
msgid "Wireless LAN Groups"
msgstr ""
-#: netbox/navigation/menu.py:155
+#: netbox/netbox/navigation/menu.py:155
msgid "Prefix & VLAN Roles"
msgstr ""
-#: netbox/navigation/menu.py:161
+#: netbox/netbox/navigation/menu.py:161
msgid "ASN Ranges"
msgstr ""
-#: netbox/navigation/menu.py:183
+#: netbox/netbox/navigation/menu.py:183
msgid "VLAN Groups"
msgstr ""
-#: netbox/navigation/menu.py:190
+#: netbox/netbox/navigation/menu.py:190
msgid "Service Templates"
msgstr ""
-#: netbox/navigation/menu.py:191 templates/dcim/device.html:294
-#: templates/ipam/ipaddress.html:118
-#: templates/virtualization/virtualmachine.html:150
+#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:295
+#: netbox/templates/ipam/ipaddress.html:118
+#: netbox/templates/virtualization/virtualmachine.html:150
msgid "Services"
msgstr ""
-#: netbox/navigation/menu.py:198
+#: netbox/netbox/navigation/menu.py:198
msgid "VPN"
msgstr ""
-#: netbox/navigation/menu.py:202 netbox/navigation/menu.py:204
-#: vpn/tables/tunnels.py:24
+#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204
+#: netbox/vpn/tables/tunnels.py:24
msgid "Tunnels"
msgstr ""
-#: netbox/navigation/menu.py:205 templates/vpn/tunnelgroup.html:8
+#: netbox/netbox/navigation/menu.py:205 netbox/templates/vpn/tunnelgroup.html:8
msgid "Tunnel Groups"
msgstr ""
-#: netbox/navigation/menu.py:206
+#: netbox/netbox/navigation/menu.py:206
msgid "Tunnel Terminations"
msgstr ""
-#: netbox/navigation/menu.py:210 netbox/navigation/menu.py:212
-#: vpn/models/l2vpn.py:64
+#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212
+#: netbox/vpn/models/l2vpn.py:64
msgid "L2VPNs"
msgstr ""
-#: netbox/navigation/menu.py:213 templates/vpn/l2vpn.html:56
-#: templates/vpn/tunnel.html:72 vpn/tables/tunnels.py:58
+#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56
+#: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58
msgid "Terminations"
msgstr ""
-#: netbox/navigation/menu.py:219
+#: netbox/netbox/navigation/menu.py:219
msgid "IKE Proposals"
msgstr ""
-#: netbox/navigation/menu.py:220 templates/vpn/ikeproposal.html:41
+#: netbox/netbox/navigation/menu.py:220
+#: netbox/templates/vpn/ikeproposal.html:41
msgid "IKE Policies"
msgstr ""
-#: netbox/navigation/menu.py:221
+#: netbox/netbox/navigation/menu.py:221
msgid "IPSec Proposals"
msgstr ""
-#: netbox/navigation/menu.py:222 templates/vpn/ipsecproposal.html:37
+#: netbox/netbox/navigation/menu.py:222
+#: netbox/templates/vpn/ipsecproposal.html:37
msgid "IPSec Policies"
msgstr ""
-#: netbox/navigation/menu.py:223 templates/vpn/ikepolicy.html:38
-#: templates/vpn/ipsecpolicy.html:25
+#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38
+#: netbox/templates/vpn/ipsecpolicy.html:25
msgid "IPSec Profiles"
msgstr ""
-#: netbox/navigation/menu.py:230 templates/dcim/device_edit.html:78
+#: netbox/netbox/navigation/menu.py:230
+#: netbox/templates/dcim/device_edit.html:78
msgid "Virtualization"
msgstr ""
-#: netbox/navigation/menu.py:238
-#: templates/virtualization/virtualmachine.html:170
-#: templates/virtualization/virtualmachine/base.html:32
-#: templates/virtualization/virtualmachine_list.html:21
-#: virtualization/tables/virtualmachines.py:103 virtualization/views.py:388
+#: netbox/netbox/navigation/menu.py:238
+#: netbox/templates/virtualization/virtualmachine.html:170
+#: netbox/templates/virtualization/virtualmachine/base.html:32
+#: netbox/templates/virtualization/virtualmachine_list.html:21
+#: netbox/virtualization/tables/virtualmachines.py:103
+#: netbox/virtualization/views.py:388
msgid "Virtual Disks"
msgstr ""
-#: netbox/navigation/menu.py:245
+#: netbox/netbox/navigation/menu.py:245
msgid "Cluster Types"
msgstr ""
-#: netbox/navigation/menu.py:246
+#: netbox/netbox/navigation/menu.py:246
msgid "Cluster Groups"
msgstr ""
-#: netbox/navigation/menu.py:260
+#: netbox/netbox/navigation/menu.py:260
msgid "Circuit Types"
msgstr ""
-#: netbox/navigation/menu.py:261
+#: netbox/netbox/navigation/menu.py:261
msgid "Circuit Terminations"
msgstr ""
-#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267
+#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267
msgid "Providers"
msgstr ""
-#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51
+#: netbox/netbox/navigation/menu.py:268
+#: netbox/templates/circuits/provider.html:51
msgid "Provider Accounts"
msgstr ""
-#: netbox/navigation/menu.py:269
+#: netbox/netbox/navigation/menu.py:269
msgid "Provider Networks"
msgstr ""
-#: netbox/navigation/menu.py:283
+#: netbox/netbox/navigation/menu.py:283
msgid "Power Panels"
msgstr ""
-#: netbox/navigation/menu.py:294
+#: netbox/netbox/navigation/menu.py:294
msgid "Configurations"
msgstr ""
-#: netbox/navigation/menu.py:296
+#: netbox/netbox/navigation/menu.py:296
msgid "Config Contexts"
msgstr ""
-#: netbox/navigation/menu.py:297
+#: netbox/netbox/navigation/menu.py:297
msgid "Config Templates"
msgstr ""
-#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308
+#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308
msgid "Customization"
msgstr ""
-#: netbox/navigation/menu.py:310 templates/dcim/device_edit.html:103
-#: templates/dcim/htmx/cable_edit.html:81
-#: templates/dcim/virtualchassis_add.html:31
-#: templates/dcim/virtualchassis_edit.html:40
-#: templates/generic/bulk_edit.html:76 templates/htmx/form.html:19
-#: templates/inc/filter_list.html:30 templates/inc/panels/custom_fields.html:7
-#: templates/ipam/ipaddress_bulk_add.html:35 templates/ipam/vlan_edit.html:63
+#: netbox/netbox/navigation/menu.py:310
+#: netbox/templates/dcim/device_edit.html:103
+#: netbox/templates/dcim/htmx/cable_edit.html:81
+#: netbox/templates/dcim/virtualchassis_add.html:31
+#: netbox/templates/dcim/virtualchassis_edit.html:40
+#: netbox/templates/generic/bulk_edit.html:76
+#: netbox/templates/htmx/form.html:19 netbox/templates/inc/filter_list.html:30
+#: netbox/templates/inc/panels/custom_fields.html:7
+#: netbox/templates/ipam/ipaddress_bulk_add.html:35
+#: netbox/templates/ipam/vlan_edit.html:63
msgid "Custom Fields"
msgstr ""
-#: netbox/navigation/menu.py:311
+#: netbox/netbox/navigation/menu.py:311
msgid "Custom Field Choices"
msgstr ""
-#: netbox/navigation/menu.py:312
+#: netbox/netbox/navigation/menu.py:312
msgid "Custom Links"
msgstr ""
-#: netbox/navigation/menu.py:313
+#: netbox/netbox/navigation/menu.py:313
msgid "Export Templates"
msgstr ""
-#: netbox/navigation/menu.py:314
+#: netbox/netbox/navigation/menu.py:314
msgid "Saved Filters"
msgstr ""
-#: netbox/navigation/menu.py:316
+#: netbox/netbox/navigation/menu.py:316
msgid "Image Attachments"
msgstr ""
-#: netbox/navigation/menu.py:334
+#: netbox/netbox/navigation/menu.py:334
msgid "Operations"
msgstr ""
-#: netbox/navigation/menu.py:338
+#: netbox/netbox/navigation/menu.py:338
msgid "Integrations"
msgstr ""
-#: netbox/navigation/menu.py:340
+#: netbox/netbox/navigation/menu.py:340
msgid "Data Sources"
msgstr ""
-#: netbox/navigation/menu.py:341
+#: netbox/netbox/navigation/menu.py:341
msgid "Event Rules"
msgstr ""
-#: netbox/navigation/menu.py:342
+#: netbox/netbox/navigation/menu.py:342
msgid "Webhooks"
msgstr ""
-#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350
-#: netbox/views/generic/feature_views.py:151
-#: templates/extras/report/base.html:37 templates/extras/script/base.html:36
+#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350
+#: netbox/netbox/views/generic/feature_views.py:151
+#: netbox/templates/extras/report/base.html:37
+#: netbox/templates/extras/script/base.html:36
msgid "Jobs"
msgstr ""
-#: netbox/navigation/menu.py:356
+#: netbox/netbox/navigation/menu.py:356
msgid "Logging"
msgstr ""
-#: netbox/navigation/menu.py:358
+#: netbox/netbox/navigation/menu.py:358
msgid "Journal Entries"
msgstr ""
-#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8
-#: templates/extras/objectchange_list.html:4
+#: netbox/netbox/navigation/menu.py:359
+#: netbox/templates/extras/objectchange.html:8
+#: netbox/templates/extras/objectchange_list.html:4
msgid "Change Log"
msgstr ""
-#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11
+#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11
msgid "Admin"
msgstr ""
-#: netbox/navigation/menu.py:374 templates/users/group.html:29
-#: users/forms/model_forms.py:233 users/forms/model_forms.py:245
-#: users/forms/model_forms.py:297 users/tables.py:102
+#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29
+#: netbox/users/forms/model_forms.py:233 netbox/users/forms/model_forms.py:245
+#: netbox/users/forms/model_forms.py:297 netbox/users/tables.py:102
msgid "Users"
msgstr ""
-#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182
-#: users/forms/model_forms.py:194 users/forms/model_forms.py:302
-#: users/tables.py:35 users/tables.py:106
+#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182
+#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:302
+#: netbox/users/tables.py:35 netbox/users/tables.py:106
msgid "Groups"
msgstr ""
-#: netbox/navigation/menu.py:414 templates/account/base.html:21
-#: templates/inc/user_menu.html:36
+#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21
+#: netbox/templates/inc/user_menu.html:36
msgid "API Tokens"
msgstr ""
-#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188
-#: users/forms/model_forms.py:196 users/forms/model_forms.py:239
-#: users/forms/model_forms.py:246
+#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188
+#: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:239
+#: netbox/users/forms/model_forms.py:246
msgid "Permissions"
msgstr ""
-#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433
-#: templates/core/system.html:7
+#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433
+#: netbox/templates/core/system.html:7
msgid "System"
msgstr ""
-#: netbox/navigation/menu.py:438
+#: netbox/netbox/navigation/menu.py:438
msgid "Configuration History"
msgstr ""
-#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8
-#: templates/core/rq_task_list.html:22
+#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8
+#: netbox/templates/core/rq_task_list.html:22
msgid "Background Tasks"
msgstr ""
-#: netbox/navigation/menu.py:483 templates/500.html:35
-#: templates/account/preferences.html:22 templates/core/system.html:80
+#: netbox/netbox/navigation/menu.py:483 netbox/templates/500.html:35
+#: netbox/templates/account/preferences.html:22
+#: netbox/templates/core/system.html:80
msgid "Plugins"
msgstr ""
-#: netbox/plugins/navigation.py:47 netbox/plugins/navigation.py:69
+#: netbox/netbox/plugins/navigation.py:47
+#: netbox/netbox/plugins/navigation.py:69
msgid "Permissions must be passed as a tuple or list."
msgstr ""
-#: netbox/plugins/navigation.py:51
+#: netbox/netbox/plugins/navigation.py:51
msgid "Buttons must be passed as a tuple or list."
msgstr ""
-#: netbox/plugins/navigation.py:73
+#: netbox/netbox/plugins/navigation.py:73
msgid "Button color must be a choice within ButtonColorChoices."
msgstr ""
-#: netbox/plugins/registration.py:25
+#: netbox/netbox/plugins/registration.py:25
#, python-brace-format
msgid ""
"PluginTemplateExtension class {template_extension} was passed as an instance!"
msgstr ""
-#: netbox/plugins/registration.py:31
+#: netbox/netbox/plugins/registration.py:31
#, python-brace-format
msgid ""
"{template_extension} is not a subclass of netbox.plugins."
"PluginTemplateExtension!"
msgstr ""
-#: netbox/plugins/registration.py:37
+#: netbox/netbox/plugins/registration.py:37
#, python-brace-format
msgid ""
"PluginTemplateExtension class {template_extension} does not define a valid "
"model!"
msgstr ""
-#: netbox/plugins/registration.py:47
+#: netbox/netbox/plugins/registration.py:47
#, python-brace-format
msgid "{item} must be an instance of netbox.plugins.PluginMenuItem"
msgstr ""
-#: netbox/plugins/registration.py:60
+#: netbox/netbox/plugins/registration.py:60
#, python-brace-format
msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem"
msgstr ""
-#: netbox/plugins/registration.py:65
+#: netbox/netbox/plugins/registration.py:65
#, python-brace-format
msgid "{button} must be an instance of netbox.plugins.PluginMenuButton"
msgstr ""
-#: netbox/plugins/templates.py:35
+#: netbox/netbox/plugins/templates.py:35
msgid "extra_context must be a dictionary"
msgstr ""
-#: netbox/preferences.py:19
+#: netbox/netbox/preferences.py:19
msgid "HTMX Navigation"
msgstr ""
-#: netbox/preferences.py:24
+#: netbox/netbox/preferences.py:24
msgid "Enable dynamic UI navigation"
msgstr ""
-#: netbox/preferences.py:26
+#: netbox/netbox/preferences.py:26
msgid "Experimental feature"
msgstr ""
-#: netbox/preferences.py:29
+#: netbox/netbox/preferences.py:29
msgid "Language"
msgstr ""
-#: netbox/preferences.py:34
+#: netbox/netbox/preferences.py:34
msgid "Forces UI translation to the specified language"
msgstr ""
-#: netbox/preferences.py:36
+#: netbox/netbox/preferences.py:36
msgid "Support for translation has been disabled locally"
msgstr ""
-#: netbox/preferences.py:42
+#: netbox/netbox/preferences.py:42
msgid "Page length"
msgstr ""
-#: netbox/preferences.py:44
+#: netbox/netbox/preferences.py:44
msgid "The default number of objects to display per page"
msgstr ""
-#: netbox/preferences.py:48
+#: netbox/netbox/preferences.py:48
msgid "Paginator placement"
msgstr ""
-#: netbox/preferences.py:50
+#: netbox/netbox/preferences.py:50
msgid "Bottom"
msgstr ""
-#: netbox/preferences.py:51
+#: netbox/netbox/preferences.py:51
msgid "Top"
msgstr ""
-#: netbox/preferences.py:52
+#: netbox/netbox/preferences.py:52
msgid "Both"
msgstr ""
-#: netbox/preferences.py:55
+#: netbox/netbox/preferences.py:55
msgid "Where the paginator controls will be displayed relative to a table"
msgstr ""
-#: netbox/preferences.py:60
+#: netbox/netbox/preferences.py:60
msgid "Data format"
msgstr ""
-#: netbox/preferences.py:65
+#: netbox/netbox/preferences.py:65
msgid "The preferred syntax for displaying generic data within the UI"
msgstr ""
-#: netbox/registry.py:14
+#: netbox/netbox/registry.py:14
#, python-brace-format
msgid "Invalid store: {key}"
msgstr ""
-#: netbox/registry.py:17
+#: netbox/netbox/registry.py:17
msgid "Cannot add stores to registry after initialization"
msgstr ""
-#: netbox/registry.py:20
+#: netbox/netbox/registry.py:20
msgid "Cannot delete stores from registry"
msgstr ""
-#: netbox/settings.py:722
+#: netbox/netbox/settings.py:722
msgid "German"
msgstr ""
-#: netbox/settings.py:723
+#: netbox/netbox/settings.py:723
msgid "English"
msgstr ""
-#: netbox/settings.py:724
+#: netbox/netbox/settings.py:724
msgid "Spanish"
msgstr ""
-#: netbox/settings.py:725
+#: netbox/netbox/settings.py:725
msgid "French"
msgstr ""
-#: netbox/settings.py:726
+#: netbox/netbox/settings.py:726
msgid "Japanese"
msgstr ""
-#: netbox/settings.py:727
+#: netbox/netbox/settings.py:727
msgid "Portuguese"
msgstr ""
-#: netbox/settings.py:728
+#: netbox/netbox/settings.py:728
msgid "Russian"
msgstr ""
-#: netbox/settings.py:729
+#: netbox/netbox/settings.py:729
msgid "Turkish"
msgstr ""
-#: netbox/settings.py:730
+#: netbox/netbox/settings.py:730
msgid "Ukrainian"
msgstr ""
-#: netbox/settings.py:731
+#: netbox/netbox/settings.py:731
msgid "Chinese"
msgstr ""
-#: netbox/tables/columns.py:185
+#: netbox/netbox/tables/columns.py:185
msgid "Toggle all"
msgstr ""
-#: netbox/tables/columns.py:287
+#: netbox/netbox/tables/columns.py:287
msgid "Toggle Dropdown"
msgstr ""
-#: netbox/tables/columns.py:552 templates/core/job.html:35
+#: netbox/netbox/tables/columns.py:552 netbox/templates/core/job.html:35
msgid "Error"
msgstr ""
-#: netbox/tables/tables.py:57
+#: netbox/netbox/tables/tables.py:57
#, python-brace-format
msgid "No {model_name} found"
msgstr ""
-#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117
+#: netbox/netbox/tables/tables.py:248
+#: netbox/templates/generic/bulk_import.html:117
msgid "Field"
msgstr ""
-#: netbox/tables/tables.py:251
+#: netbox/netbox/tables/tables.py:251
msgid "Value"
msgstr ""
-#: netbox/tests/dummy_plugin/navigation.py:29
+#: netbox/netbox/tests/dummy_plugin/navigation.py:29
msgid "Dummy Plugin"
msgstr ""
-#: netbox/views/generic/bulk_views.py:405
+#: netbox/netbox/views/generic/bulk_views.py:405
#, python-brace-format
msgid "Row {i}: Object with ID {id} does not exist"
msgstr ""
-#: netbox/views/generic/feature_views.py:38
+#: netbox/netbox/views/generic/feature_views.py:38
msgid "Changelog"
msgstr ""
-#: netbox/views/generic/feature_views.py:91
+#: netbox/netbox/views/generic/feature_views.py:91
msgid "Journal"
msgstr ""
-#: netbox/views/generic/object_views.py:106
+#: netbox/netbox/views/generic/object_views.py:106
#, python-brace-format
msgid "{class_name} must implement get_children()"
msgstr ""
-#: netbox/views/misc.py:43
+#: netbox/netbox/views/misc.py:43
msgid ""
"There was an error loading the dashboard configuration. A default dashboard "
"is in use."
msgstr ""
-#: templates/403.html:4
+#: netbox/templates/403.html:4
msgid "Access Denied"
msgstr ""
-#: templates/403.html:9
+#: netbox/templates/403.html:9
msgid "You do not have permission to access this page"
msgstr ""
-#: templates/404.html:4
+#: netbox/templates/404.html:4
msgid "Page Not Found"
msgstr ""
-#: templates/404.html:9
+#: netbox/templates/404.html:9
msgid "The requested page does not exist"
msgstr ""
-#: templates/500.html:7 templates/500.html:18
+#: netbox/templates/500.html:7 netbox/templates/500.html:18
msgid "Server Error"
msgstr ""
-#: templates/500.html:23
+#: netbox/templates/500.html:23
msgid "There was a problem with your request. Please contact an administrator"
msgstr ""
-#: templates/500.html:28
+#: netbox/templates/500.html:28
msgid "The complete exception is provided below"
msgstr ""
-#: templates/500.html:33 templates/core/system.html:35
+#: netbox/templates/500.html:33 netbox/templates/core/system.html:35
msgid "Python version"
msgstr ""
-#: templates/500.html:34 templates/core/system.html:31
+#: netbox/templates/500.html:34 netbox/templates/core/system.html:31
msgid "NetBox version"
msgstr ""
-#: templates/500.html:36
+#: netbox/templates/500.html:36
msgid "None installed"
msgstr ""
-#: templates/500.html:39
+#: netbox/templates/500.html:39
msgid "If further assistance is required, please post to the"
msgstr ""
-#: templates/500.html:39
+#: netbox/templates/500.html:39
msgid "NetBox discussion forum"
msgstr ""
-#: templates/500.html:39
+#: netbox/templates/500.html:39
msgid "on GitHub"
msgstr ""
-#: templates/500.html:42 templates/base/40x.html:17
+#: netbox/templates/500.html:42 netbox/templates/base/40x.html:17
msgid "Home Page"
msgstr ""
-#: templates/account/base.html:7 templates/inc/user_menu.html:27
-#: vpn/forms/bulk_edit.py:255 vpn/forms/filtersets.py:189
-#: vpn/forms/model_forms.py:379
+#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27
+#: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189
+#: netbox/vpn/forms/model_forms.py:379
msgid "Profile"
msgstr ""
-#: templates/account/base.html:13 templates/inc/user_menu.html:33
+#: netbox/templates/account/base.html:13 netbox/templates/inc/user_menu.html:33
msgid "Preferences"
msgstr ""
-#: templates/account/password.html:5
+#: netbox/templates/account/password.html:5
msgid "Change Password"
msgstr ""
-#: templates/account/password.html:17 templates/account/preferences.html:77
-#: templates/core/configrevision_restore.html:63
-#: templates/dcim/devicebay_populate.html:34
-#: templates/dcim/virtualchassis_add_member.html:26
-#: templates/dcim/virtualchassis_edit.html:103
-#: templates/extras/object_journal.html:26 templates/extras/script.html:38
-#: templates/generic/bulk_add_component.html:67
-#: templates/generic/bulk_delete.html:65 templates/generic/bulk_edit.html:106
-#: templates/generic/bulk_import.html:56 templates/generic/bulk_import.html:78
-#: templates/generic/bulk_import.html:100 templates/generic/bulk_remove.html:62
-#: templates/generic/bulk_rename.html:63
-#: templates/generic/confirmation_form.html:19
-#: templates/generic/object_edit.html:72 templates/htmx/delete_form.html:53
-#: templates/htmx/delete_form.html:55 templates/ipam/ipaddress_assign.html:28
-#: templates/virtualization/cluster_add_devices.html:30
+#: netbox/templates/account/password.html:17
+#: netbox/templates/account/preferences.html:77
+#: netbox/templates/core/configrevision_restore.html:63
+#: netbox/templates/dcim/devicebay_populate.html:34
+#: netbox/templates/dcim/virtualchassis_add_member.html:26
+#: netbox/templates/dcim/virtualchassis_edit.html:103
+#: netbox/templates/extras/object_journal.html:26
+#: netbox/templates/extras/script.html:38
+#: netbox/templates/generic/bulk_add_component.html:67
+#: netbox/templates/generic/bulk_delete.html:65
+#: netbox/templates/generic/bulk_edit.html:106
+#: netbox/templates/generic/bulk_import.html:56
+#: netbox/templates/generic/bulk_import.html:78
+#: netbox/templates/generic/bulk_import.html:100
+#: netbox/templates/generic/bulk_remove.html:62
+#: netbox/templates/generic/bulk_rename.html:63
+#: netbox/templates/generic/confirmation_form.html:19
+#: netbox/templates/generic/object_edit.html:72
+#: netbox/templates/htmx/delete_form.html:53
+#: netbox/templates/htmx/delete_form.html:55
+#: netbox/templates/ipam/ipaddress_assign.html:28
+#: netbox/templates/virtualization/cluster_add_devices.html:30
msgid "Cancel"
msgstr ""
-#: templates/account/password.html:18 templates/account/preferences.html:78
-#: templates/dcim/devicebay_populate.html:35
-#: templates/dcim/virtualchassis_add_member.html:28
-#: templates/dcim/virtualchassis_edit.html:105
-#: templates/extras/dashboard/widget_add.html:26
-#: templates/extras/dashboard/widget_config.html:19
-#: templates/extras/object_journal.html:27
-#: templates/generic/object_edit.html:75
-#: utilities/templates/helpers/applied_filters.html:16
-#: utilities/templates/helpers/table_config_form.html:40
+#: netbox/templates/account/password.html:18
+#: netbox/templates/account/preferences.html:78
+#: netbox/templates/dcim/devicebay_populate.html:35
+#: netbox/templates/dcim/virtualchassis_add_member.html:28
+#: netbox/templates/dcim/virtualchassis_edit.html:105
+#: netbox/templates/extras/dashboard/widget_add.html:26
+#: netbox/templates/extras/dashboard/widget_config.html:19
+#: netbox/templates/extras/object_journal.html:27
+#: netbox/templates/generic/object_edit.html:75
+#: netbox/utilities/templates/helpers/applied_filters.html:16
+#: netbox/utilities/templates/helpers/table_config_form.html:40
msgid "Save"
msgstr ""
-#: templates/account/preferences.html:34
+#: netbox/templates/account/preferences.html:34
msgid "Table Configurations"
msgstr ""
-#: templates/account/preferences.html:39
+#: netbox/templates/account/preferences.html:39
msgid "Clear table preferences"
msgstr ""
-#: templates/account/preferences.html:47
+#: netbox/templates/account/preferences.html:47
msgid "Toggle All"
msgstr ""
-#: templates/account/preferences.html:49
+#: netbox/templates/account/preferences.html:49
msgid "Table"
msgstr ""
-#: templates/account/preferences.html:50
+#: netbox/templates/account/preferences.html:50
msgid "Ordering"
msgstr ""
-#: templates/account/preferences.html:51
+#: netbox/templates/account/preferences.html:51
msgid "Columns"
msgstr ""
-#: templates/account/preferences.html:71 templates/dcim/cable_trace.html:113
-#: templates/extras/object_configcontext.html:43
+#: netbox/templates/account/preferences.html:71
+#: netbox/templates/dcim/cable_trace.html:113
+#: netbox/templates/extras/object_configcontext.html:43
msgid "None found"
msgstr ""
-#: templates/account/profile.html:6
+#: netbox/templates/account/profile.html:6
msgid "User Profile"
msgstr ""
-#: templates/account/profile.html:12
+#: netbox/templates/account/profile.html:12
msgid "Account Details"
msgstr ""
-#: templates/account/profile.html:29 templates/tenancy/contact.html:43
-#: templates/users/user.html:25 tenancy/forms/bulk_edit.py:109
+#: netbox/templates/account/profile.html:29
+#: netbox/templates/tenancy/contact.html:43 netbox/templates/users/user.html:25
+#: netbox/tenancy/forms/bulk_edit.py:109
msgid "Email"
msgstr ""
-#: templates/account/profile.html:33 templates/users/user.html:29
+#: netbox/templates/account/profile.html:33 netbox/templates/users/user.html:29
msgid "Account Created"
msgstr ""
-#: templates/account/profile.html:37 templates/users/user.html:33
+#: netbox/templates/account/profile.html:37 netbox/templates/users/user.html:33
msgid "Last Login"
msgstr ""
-#: templates/account/profile.html:41 templates/users/user.html:45
+#: netbox/templates/account/profile.html:41 netbox/templates/users/user.html:45
msgid "Superuser"
msgstr ""
-#: templates/account/profile.html:45 templates/inc/user_menu.html:13
-#: templates/users/user.html:41
+#: netbox/templates/account/profile.html:45
+#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41
msgid "Staff"
msgstr ""
-#: templates/account/profile.html:53 templates/users/objectpermission.html:82
-#: templates/users/user.html:53
+#: netbox/templates/account/profile.html:53
+#: netbox/templates/users/objectpermission.html:82
+#: netbox/templates/users/user.html:53
msgid "Assigned Groups"
msgstr ""
-#: templates/account/profile.html:58
-#: templates/circuits/circuit_terminations_swap.html:18
-#: templates/circuits/circuit_terminations_swap.html:26
-#: templates/circuits/circuittermination.html:34
-#: templates/circuits/inc/circuit_termination.html:68
-#: templates/dcim/devicebay.html:59
-#: templates/dcim/inc/panels/inventory_items.html:45
-#: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76
-#: templates/extras/configcontext.html:70 templates/extras/eventrule.html:72
-#: templates/extras/htmx/script_result.html:56
-#: templates/extras/objectchange.html:123
-#: templates/extras/objectchange.html:141 templates/extras/webhook.html:67
-#: templates/extras/webhook.html:79 templates/inc/panel_table.html:13
-#: templates/inc/panels/comments.html:12
-#: templates/ipam/inc/panels/fhrp_groups.html:56 templates/users/group.html:34
-#: templates/users/group.html:44 templates/users/objectpermission.html:77
-#: templates/users/objectpermission.html:87 templates/users/user.html:58
-#: templates/users/user.html:68
+#: netbox/templates/account/profile.html:58
+#: netbox/templates/circuits/circuit_terminations_swap.html:18
+#: netbox/templates/circuits/circuit_terminations_swap.html:26
+#: netbox/templates/circuits/circuittermination.html:34
+#: netbox/templates/circuits/inc/circuit_termination.html:68
+#: netbox/templates/dcim/devicebay.html:59
+#: netbox/templates/dcim/inc/panels/inventory_items.html:45
+#: netbox/templates/dcim/interface.html:296
+#: netbox/templates/dcim/modulebay.html:76
+#: netbox/templates/extras/configcontext.html:70
+#: netbox/templates/extras/eventrule.html:72
+#: netbox/templates/extras/htmx/script_result.html:56
+#: netbox/templates/extras/objectchange.html:123
+#: netbox/templates/extras/objectchange.html:141
+#: netbox/templates/extras/webhook.html:67
+#: netbox/templates/extras/webhook.html:79
+#: netbox/templates/inc/panel_table.html:13
+#: netbox/templates/inc/panels/comments.html:12
+#: netbox/templates/ipam/inc/panels/fhrp_groups.html:56
+#: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44
+#: netbox/templates/users/objectpermission.html:77
+#: netbox/templates/users/objectpermission.html:87
+#: netbox/templates/users/user.html:58 netbox/templates/users/user.html:68
msgid "None"
msgstr ""
-#: templates/account/profile.html:68 templates/users/user.html:78
+#: netbox/templates/account/profile.html:68 netbox/templates/users/user.html:78
msgid "Recent Activity"
msgstr ""
-#: templates/account/token.html:8 templates/account/token_list.html:6
+#: netbox/templates/account/token.html:8
+#: netbox/templates/account/token_list.html:6
msgid "My API Tokens"
msgstr ""
-#: templates/account/token.html:11 templates/account/token.html:19
-#: templates/users/token.html:6 templates/users/token.html:14
-#: users/forms/filtersets.py:121
+#: netbox/templates/account/token.html:11
+#: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6
+#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121
msgid "Token"
msgstr ""
-#: templates/account/token.html:39 templates/users/token.html:31
-#: users/forms/bulk_edit.py:107
+#: netbox/templates/account/token.html:39 netbox/templates/users/token.html:31
+#: netbox/users/forms/bulk_edit.py:107
msgid "Write enabled"
msgstr ""
-#: templates/account/token.html:51 templates/users/token.html:43
+#: netbox/templates/account/token.html:51 netbox/templates/users/token.html:43
msgid "Last used"
msgstr ""
-#: templates/account/token_list.html:12
+#: netbox/templates/account/token_list.html:12
msgid "Add a Token"
msgstr ""
-#: templates/base/base.html:18 templates/home.html:27
+#: netbox/templates/base/base.html:18 netbox/templates/home.html:27
msgid "Home"
msgstr ""
-#: templates/base/layout.html:32
+#: netbox/templates/base/layout.html:32
msgid "NetBox Logo"
msgstr ""
-#: templates/base/layout.html:56
+#: netbox/templates/base/layout.html:56
msgid "Enable dark mode"
msgstr ""
-#: templates/base/layout.html:59
+#: netbox/templates/base/layout.html:59
msgid "Enable light mode"
msgstr ""
-#: templates/base/layout.html:145
+#: netbox/templates/base/layout.html:145
msgid "Docs"
msgstr ""
-#: templates/base/layout.html:151 templates/rest_framework/api.html:10
+#: netbox/templates/base/layout.html:151
+#: netbox/templates/rest_framework/api.html:10
msgid "REST API"
msgstr ""
-#: templates/base/layout.html:157
+#: netbox/templates/base/layout.html:157
msgid "REST API documentation"
msgstr ""
-#: templates/base/layout.html:164
+#: netbox/templates/base/layout.html:164
msgid "GraphQL API"
msgstr ""
-#: templates/base/layout.html:171
+#: netbox/templates/base/layout.html:171
msgid "Source Code"
msgstr ""
-#: templates/base/layout.html:177
+#: netbox/templates/base/layout.html:177
msgid "Community"
msgstr ""
-#: templates/circuits/circuit.html:47
+#: netbox/templates/circuits/circuit.html:47
msgid "Install Date"
msgstr ""
-#: templates/circuits/circuit.html:51
+#: netbox/templates/circuits/circuit.html:51
msgid "Termination Date"
msgstr ""
-#: templates/circuits/circuit_terminations_swap.html:4
+#: netbox/templates/circuits/circuit_terminations_swap.html:4
msgid "Swap Circuit Terminations"
msgstr ""
-#: templates/circuits/circuit_terminations_swap.html:8
+#: netbox/templates/circuits/circuit_terminations_swap.html:8
#, python-format
msgid "Swap these terminations for circuit %(circuit)s?"
msgstr ""
-#: templates/circuits/circuit_terminations_swap.html:14
+#: netbox/templates/circuits/circuit_terminations_swap.html:14
msgid "A side"
msgstr ""
-#: templates/circuits/circuit_terminations_swap.html:22
+#: netbox/templates/circuits/circuit_terminations_swap.html:22
msgid "Z side"
msgstr ""
-#: templates/circuits/circuittype.html:10
+#: netbox/templates/circuits/circuittype.html:10
msgid "Add Circuit"
msgstr ""
-#: templates/circuits/circuittype.html:19
+#: netbox/templates/circuits/circuittype.html:19
msgid "Circuit Type"
msgstr ""
-#: templates/circuits/inc/circuit_termination.html:10
-#: templates/dcim/devicetype/component_templates.html:33
-#: templates/dcim/manufacturer.html:11
-#: templates/dcim/moduletype/component_templates.html:29
-#: templates/generic/bulk_add_component.html:22
-#: templates/users/objectpermission.html:38
-#: utilities/templates/buttons/add.html:4
-#: utilities/templates/helpers/table_config_form.html:20
+#: netbox/templates/circuits/inc/circuit_termination.html:10
+#: netbox/templates/dcim/devicetype/component_templates.html:33
+#: netbox/templates/dcim/manufacturer.html:11
+#: netbox/templates/dcim/moduletype/component_templates.html:29
+#: netbox/templates/generic/bulk_add_component.html:22
+#: netbox/templates/users/objectpermission.html:38
+#: netbox/utilities/templates/buttons/add.html:4
+#: netbox/utilities/templates/helpers/table_config_form.html:20
msgid "Add"
msgstr ""
-#: templates/circuits/inc/circuit_termination.html:15
-#: templates/circuits/inc/circuit_termination_fields.html:36
-#: templates/dcim/inc/panels/inventory_items.html:32
-#: templates/dcim/moduletype/component_templates.html:20
-#: templates/dcim/powerpanel.html:56 templates/extras/script_list.html:32
-#: templates/generic/object_edit.html:47
-#: templates/ipam/inc/ipaddress_edit_header.html:7
-#: templates/ipam/inc/panels/fhrp_groups.html:43
-#: utilities/templates/buttons/edit.html:3
+#: netbox/templates/circuits/inc/circuit_termination.html:15
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:36
+#: netbox/templates/dcim/inc/panels/inventory_items.html:32
+#: netbox/templates/dcim/moduletype/component_templates.html:20
+#: netbox/templates/dcim/powerpanel.html:56
+#: netbox/templates/extras/script_list.html:32
+#: netbox/templates/generic/object_edit.html:47
+#: netbox/templates/ipam/inc/ipaddress_edit_header.html:7
+#: netbox/templates/ipam/inc/panels/fhrp_groups.html:43
+#: netbox/utilities/templates/buttons/edit.html:3
msgid "Edit"
msgstr ""
-#: templates/circuits/inc/circuit_termination.html:18
+#: netbox/templates/circuits/inc/circuit_termination.html:18
msgid "Swap"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:19
-#: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60
-#: templates/dcim/powerfeed.html:114
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:19
+#: netbox/templates/dcim/consoleport.html:59
+#: netbox/templates/dcim/consoleserverport.html:60
+#: netbox/templates/dcim/powerfeed.html:114
msgid "Marked as connected"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:21
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:21
msgid "to"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:31
-#: templates/circuits/inc/circuit_termination_fields.html:32
-#: templates/dcim/frontport.html:80
-#: templates/dcim/inc/connection_endpoints.html:7
-#: templates/dcim/interface.html:154 templates/dcim/rearport.html:76
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:31
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:32
+#: netbox/templates/dcim/frontport.html:80
+#: netbox/templates/dcim/inc/connection_endpoints.html:7
+#: netbox/templates/dcim/interface.html:154
+#: netbox/templates/dcim/rearport.html:76
msgid "Trace"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:35
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:35
msgid "Edit cable"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:40
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:40
msgid "Remove cable"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:41
-#: templates/dcim/bulk_disconnect.html:5
-#: templates/dcim/device/consoleports.html:12
-#: templates/dcim/device/consoleserverports.html:12
-#: templates/dcim/device/frontports.html:12
-#: templates/dcim/device/interfaces.html:16
-#: templates/dcim/device/poweroutlets.html:12
-#: templates/dcim/device/powerports.html:12
-#: templates/dcim/device/rearports.html:12 templates/dcim/powerpanel.html:61
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:41
+#: netbox/templates/dcim/bulk_disconnect.html:5
+#: netbox/templates/dcim/device/consoleports.html:12
+#: netbox/templates/dcim/device/consoleserverports.html:12
+#: netbox/templates/dcim/device/frontports.html:12
+#: netbox/templates/dcim/device/interfaces.html:16
+#: netbox/templates/dcim/device/poweroutlets.html:12
+#: netbox/templates/dcim/device/powerports.html:12
+#: netbox/templates/dcim/device/rearports.html:12
+#: netbox/templates/dcim/powerpanel.html:61
msgid "Disconnect"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:48
-#: templates/dcim/consoleport.html:69 templates/dcim/consoleserverport.html:70
-#: templates/dcim/frontport.html:102 templates/dcim/interface.html:180
-#: templates/dcim/interface.html:200 templates/dcim/powerfeed.html:127
-#: templates/dcim/poweroutlet.html:71 templates/dcim/poweroutlet.html:72
-#: templates/dcim/powerport.html:73 templates/dcim/rearport.html:98
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:48
+#: netbox/templates/dcim/consoleport.html:69
+#: netbox/templates/dcim/consoleserverport.html:70
+#: netbox/templates/dcim/frontport.html:102
+#: netbox/templates/dcim/interface.html:180
+#: netbox/templates/dcim/interface.html:200
+#: netbox/templates/dcim/powerfeed.html:127
+#: netbox/templates/dcim/poweroutlet.html:71
+#: netbox/templates/dcim/poweroutlet.html:72
+#: netbox/templates/dcim/powerport.html:73
+#: netbox/templates/dcim/rearport.html:98
msgid "Connect"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:70
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:70
msgid "Downstream"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:71
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:71
msgid "Upstream"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:80
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:80
msgid "Cross-Connect"
msgstr ""
-#: templates/circuits/inc/circuit_termination_fields.html:84
+#: netbox/templates/circuits/inc/circuit_termination_fields.html:84
msgid "Patch Panel/Port"
msgstr ""
-#: templates/circuits/provider.html:11
+#: netbox/templates/circuits/provider.html:11
msgid "Add circuit"
msgstr ""
-#: templates/circuits/provideraccount.html:17
+#: netbox/templates/circuits/provideraccount.html:17
msgid "Provider Account"
msgstr ""
-#: templates/core/configrevision.html:35
+#: netbox/templates/core/configrevision.html:35
msgid "Configuration Data"
msgstr ""
-#: templates/core/configrevision.html:40
+#: netbox/templates/core/configrevision.html:40
msgid "Comment"
msgstr ""
-#: templates/core/configrevision_restore.html:8
-#: templates/core/configrevision_restore.html:25
-#: templates/core/configrevision_restore.html:64
+#: netbox/templates/core/configrevision_restore.html:8
+#: netbox/templates/core/configrevision_restore.html:25
+#: netbox/templates/core/configrevision_restore.html:64
msgid "Restore"
msgstr ""
-#: templates/core/configrevision_restore.html:36
+#: netbox/templates/core/configrevision_restore.html:36
msgid "Parameter"
msgstr ""
-#: templates/core/configrevision_restore.html:37
+#: netbox/templates/core/configrevision_restore.html:37
msgid "Current Value"
msgstr ""
-#: templates/core/configrevision_restore.html:38
+#: netbox/templates/core/configrevision_restore.html:38
msgid "New Value"
msgstr ""
-#: templates/core/configrevision_restore.html:50
+#: netbox/templates/core/configrevision_restore.html:50
msgid "Changed"
msgstr ""
-#: templates/core/datafile.html:38
+#: netbox/templates/core/datafile.html:38
msgid "Last Updated"
msgstr ""
-#: templates/core/datafile.html:42 templates/ipam/iprange.html:25
-#: templates/virtualization/virtualdisk.html:29
+#: netbox/templates/core/datafile.html:42 netbox/templates/ipam/iprange.html:25
+#: netbox/templates/virtualization/virtualdisk.html:29
msgid "Size"
msgstr ""
-#: templates/core/datafile.html:43
+#: netbox/templates/core/datafile.html:43
msgid "bytes"
msgstr ""
-#: templates/core/datafile.html:46
+#: netbox/templates/core/datafile.html:46
msgid "SHA256 Hash"
msgstr ""
-#: templates/core/datasource.html:14 templates/core/datasource.html:20
-#: utilities/templates/buttons/sync.html:5
+#: netbox/templates/core/datasource.html:14
+#: netbox/templates/core/datasource.html:20
+#: netbox/utilities/templates/buttons/sync.html:5
msgid "Sync"
msgstr ""
-#: templates/core/datasource.html:50
+#: netbox/templates/core/datasource.html:50
msgid "Last synced"
msgstr ""
-#: templates/core/datasource.html:84
+#: netbox/templates/core/datasource.html:84
msgid "Backend"
msgstr ""
-#: templates/core/datasource.html:99
+#: netbox/templates/core/datasource.html:99
msgid "No parameters defined"
msgstr ""
-#: templates/core/datasource.html:114
+#: netbox/templates/core/datasource.html:114
msgid "Files"
msgstr ""
-#: templates/core/inc/config_data.html:7
+#: netbox/templates/core/inc/config_data.html:7
msgid "Rack elevations"
msgstr ""
-#: templates/core/inc/config_data.html:10
+#: netbox/templates/core/inc/config_data.html:10
msgid "Default unit height"
msgstr ""
-#: templates/core/inc/config_data.html:14
+#: netbox/templates/core/inc/config_data.html:14
msgid "Default unit width"
msgstr ""
-#: templates/core/inc/config_data.html:20
+#: netbox/templates/core/inc/config_data.html:20
msgid "Power feeds"
msgstr ""
-#: templates/core/inc/config_data.html:23
+#: netbox/templates/core/inc/config_data.html:23
msgid "Default voltage"
msgstr ""
-#: templates/core/inc/config_data.html:27
+#: netbox/templates/core/inc/config_data.html:27
msgid "Default amperage"
msgstr ""
-#: templates/core/inc/config_data.html:31
+#: netbox/templates/core/inc/config_data.html:31
msgid "Default max utilization"
msgstr ""
-#: templates/core/inc/config_data.html:40
+#: netbox/templates/core/inc/config_data.html:40
msgid "Enforce global unique"
msgstr ""
-#: templates/core/inc/config_data.html:83
+#: netbox/templates/core/inc/config_data.html:83
msgid "Paginate count"
msgstr ""
-#: templates/core/inc/config_data.html:87
+#: netbox/templates/core/inc/config_data.html:87
msgid "Max page size"
msgstr ""
-#: templates/core/inc/config_data.html:114
+#: netbox/templates/core/inc/config_data.html:114
msgid "User preferences"
msgstr ""
-#: templates/core/inc/config_data.html:141
+#: netbox/templates/core/inc/config_data.html:141
msgid "Job retention"
msgstr ""
-#: templates/core/job.html:17 templates/core/rq_task.html:12
-#: templates/core/rq_task.html:49 templates/core/rq_task.html:58
+#: netbox/templates/core/job.html:17 netbox/templates/core/rq_task.html:12
+#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58
msgid "Job"
msgstr ""
-#: templates/core/job.html:40 templates/extras/journalentry.html:26
+#: netbox/templates/core/job.html:40
+#: netbox/templates/extras/journalentry.html:26
msgid "Created By"
msgstr ""
-#: templates/core/job.html:48
+#: netbox/templates/core/job.html:48
msgid "Scheduling"
msgstr ""
-#: templates/core/job.html:59
+#: netbox/templates/core/job.html:59
#, python-format
msgid "every %(interval)s minutes"
msgstr ""
-#: templates/core/rq_queue_list.html:5 templates/core/rq_queue_list.html:13
-#: templates/core/rq_task_list.html:14 templates/core/rq_worker.html:7
+#: netbox/templates/core/rq_queue_list.html:5
+#: netbox/templates/core/rq_queue_list.html:13
+#: netbox/templates/core/rq_task_list.html:14
+#: netbox/templates/core/rq_worker.html:7
msgid "Background Queues"
msgstr ""
-#: templates/core/rq_queue_list.html:24 templates/core/rq_queue_list.html:25
-#: templates/core/rq_worker_list.html:44 templates/core/rq_worker_list.html:45
-#: templates/extras/script_result.html:49
-#: templates/extras/script_result.html:51
-#: templates/inc/table_controls_htmx.html:18
-#: templates/inc/table_controls_htmx.html:20
+#: netbox/templates/core/rq_queue_list.html:24
+#: netbox/templates/core/rq_queue_list.html:25
+#: netbox/templates/core/rq_worker_list.html:44
+#: netbox/templates/core/rq_worker_list.html:45
+#: netbox/templates/extras/script_result.html:49
+#: netbox/templates/extras/script_result.html:51
+#: netbox/templates/inc/table_controls_htmx.html:18
+#: netbox/templates/inc/table_controls_htmx.html:20
msgid "Configure Table"
msgstr ""
-#: templates/core/rq_task.html:29
+#: netbox/templates/core/rq_task.html:29
msgid "Stop"
msgstr ""
-#: templates/core/rq_task.html:34
+#: netbox/templates/core/rq_task.html:34
msgid "Requeue"
msgstr ""
-#: templates/core/rq_task.html:39
+#: netbox/templates/core/rq_task.html:39
msgid "Enqueue"
msgstr ""
-#: templates/core/rq_task.html:61
+#: netbox/templates/core/rq_task.html:61
msgid "Queue"
msgstr ""
-#: templates/core/rq_task.html:65
+#: netbox/templates/core/rq_task.html:65
msgid "Timeout"
msgstr ""
-#: templates/core/rq_task.html:69
+#: netbox/templates/core/rq_task.html:69
msgid "Result TTL"
msgstr ""
-#: templates/core/rq_task.html:89
+#: netbox/templates/core/rq_task.html:89
msgid "Meta"
msgstr ""
-#: templates/core/rq_task.html:93
+#: netbox/templates/core/rq_task.html:93
msgid "Arguments"
msgstr ""
-#: templates/core/rq_task.html:97
+#: netbox/templates/core/rq_task.html:97
msgid "Keyword Arguments"
msgstr ""
-#: templates/core/rq_task.html:103
+#: netbox/templates/core/rq_task.html:103
msgid "Depends on"
msgstr ""
-#: templates/core/rq_task.html:109
+#: netbox/templates/core/rq_task.html:109
msgid "Exception"
msgstr ""
-#: templates/core/rq_task_list.html:28
+#: netbox/templates/core/rq_task_list.html:28
msgid "tasks in "
msgstr ""
-#: templates/core/rq_task_list.html:33
+#: netbox/templates/core/rq_task_list.html:33
msgid "Queued Jobs"
msgstr ""
-#: templates/core/rq_task_list.html:64 templates/extras/script_result.html:68
+#: netbox/templates/core/rq_task_list.html:64
+#: netbox/templates/extras/script_result.html:68
#, python-format
msgid ""
"Select all %(count)s %(object_type_plural)s matching query"
msgstr ""
-#: templates/core/rq_worker.html:10
+#: netbox/templates/core/rq_worker.html:10
msgid "Worker Info"
msgstr ""
-#: templates/core/rq_worker.html:31 templates/core/rq_worker.html:40
+#: netbox/templates/core/rq_worker.html:31
+#: netbox/templates/core/rq_worker.html:40
msgid "Worker"
msgstr ""
-#: templates/core/rq_worker.html:55
+#: netbox/templates/core/rq_worker.html:55
msgid "Queues"
msgstr ""
-#: templates/core/rq_worker.html:63
+#: netbox/templates/core/rq_worker.html:63
msgid "Curent Job"
msgstr ""
-#: templates/core/rq_worker.html:67
+#: netbox/templates/core/rq_worker.html:67
msgid "Successful job count"
msgstr ""
-#: templates/core/rq_worker.html:71
+#: netbox/templates/core/rq_worker.html:71
msgid "Failed job count"
msgstr ""
-#: templates/core/rq_worker.html:75
+#: netbox/templates/core/rq_worker.html:75
msgid "Total working time"
msgstr ""
-#: templates/core/rq_worker.html:76
+#: netbox/templates/core/rq_worker.html:76
msgid "seconds"
msgstr ""
-#: templates/core/rq_worker_list.html:13 templates/core/rq_worker_list.html:21
+#: netbox/templates/core/rq_worker_list.html:13
+#: netbox/templates/core/rq_worker_list.html:21
msgid "Background Workers"
msgstr ""
-#: templates/core/rq_worker_list.html:27
+#: netbox/templates/core/rq_worker_list.html:27
msgid "Workers in "
msgstr ""
-#: templates/core/system.html:11 utilities/templates/buttons/export.html:4
+#: netbox/templates/core/system.html:11
+#: netbox/utilities/templates/buttons/export.html:4
msgid "Export"
msgstr ""
-#: templates/core/system.html:28
+#: netbox/templates/core/system.html:28
msgid "System Status"
msgstr ""
-#: templates/core/system.html:39
+#: netbox/templates/core/system.html:39
msgid "Django version"
msgstr ""
-#: templates/core/system.html:43
+#: netbox/templates/core/system.html:43
msgid "PostgreSQL version"
msgstr ""
-#: templates/core/system.html:47
+#: netbox/templates/core/system.html:47
msgid "Database name"
msgstr ""
-#: templates/core/system.html:51
+#: netbox/templates/core/system.html:51
msgid "Database size"
msgstr ""
-#: templates/core/system.html:56
+#: netbox/templates/core/system.html:56
msgid "Unavailable"
msgstr ""
-#: templates/core/system.html:61
+#: netbox/templates/core/system.html:61
msgid "RQ workers"
msgstr ""
-#: templates/core/system.html:64
+#: netbox/templates/core/system.html:64
msgid "default queue"
msgstr ""
-#: templates/core/system.html:68
+#: netbox/templates/core/system.html:68
msgid "System time"
msgstr ""
-#: templates/core/system.html:90
+#: netbox/templates/core/system.html:90
msgid "Current Configuration"
msgstr ""
-#: templates/dcim/bulk_disconnect.html:9
+#: netbox/templates/dcim/bulk_disconnect.html:9
#, python-format
msgid ""
"Are you sure you want to disconnect these %(count)s %(obj_type_plural)s?"
msgstr ""
-#: templates/dcim/cable_trace.html:10
+#: netbox/templates/dcim/cable_trace.html:10
#, python-format
msgid "Cable Trace for %(object_type)s %(object)s"
msgstr ""
-#: templates/dcim/cable_trace.html:24 templates/dcim/inc/rack_elevation.html:7
+#: netbox/templates/dcim/cable_trace.html:24
+#: netbox/templates/dcim/inc/rack_elevation.html:7
msgid "Download SVG"
msgstr ""
-#: templates/dcim/cable_trace.html:30
+#: netbox/templates/dcim/cable_trace.html:30
msgid "Asymmetric Path"
msgstr ""
-#: templates/dcim/cable_trace.html:31
+#: netbox/templates/dcim/cable_trace.html:31
msgid "The nodes below have no links and result in an asymmetric path"
msgstr ""
-#: templates/dcim/cable_trace.html:38
+#: netbox/templates/dcim/cable_trace.html:38
msgid "Path split"
msgstr ""
-#: templates/dcim/cable_trace.html:39
+#: netbox/templates/dcim/cable_trace.html:39
msgid "Select a node below to continue"
msgstr ""
-#: templates/dcim/cable_trace.html:55
+#: netbox/templates/dcim/cable_trace.html:55
msgid "Trace Completed"
msgstr ""
-#: templates/dcim/cable_trace.html:58
+#: netbox/templates/dcim/cable_trace.html:58
msgid "Total segments"
msgstr ""
-#: templates/dcim/cable_trace.html:62
+#: netbox/templates/dcim/cable_trace.html:62
msgid "Total length"
msgstr ""
-#: templates/dcim/cable_trace.html:77
+#: netbox/templates/dcim/cable_trace.html:77
msgid "No paths found"
msgstr ""
-#: templates/dcim/cable_trace.html:85
+#: netbox/templates/dcim/cable_trace.html:85
msgid "Related Paths"
msgstr ""
-#: templates/dcim/cable_trace.html:89
+#: netbox/templates/dcim/cable_trace.html:89
msgid "Origin"
msgstr ""
-#: templates/dcim/cable_trace.html:90
+#: netbox/templates/dcim/cable_trace.html:90
msgid "Destination"
msgstr ""
-#: templates/dcim/cable_trace.html:91
+#: netbox/templates/dcim/cable_trace.html:91
msgid "Segments"
msgstr ""
-#: templates/dcim/cable_trace.html:104
+#: netbox/templates/dcim/cable_trace.html:104
msgid "Incomplete"
msgstr ""
-#: templates/dcim/component_list.html:14
+#: netbox/templates/dcim/component_list.html:14
msgid "Rename Selected"
msgstr ""
-#: templates/dcim/consoleport.html:65 templates/dcim/consoleserverport.html:66
-#: templates/dcim/frontport.html:98 templates/dcim/interface.html:176
-#: templates/dcim/poweroutlet.html:69 templates/dcim/powerport.html:69
+#: netbox/templates/dcim/consoleport.html:65
+#: netbox/templates/dcim/consoleserverport.html:66
+#: netbox/templates/dcim/frontport.html:98
+#: netbox/templates/dcim/interface.html:176
+#: netbox/templates/dcim/poweroutlet.html:69
+#: netbox/templates/dcim/powerport.html:69
msgid "Not Connected"
msgstr ""
-#: templates/dcim/device.html:33
+#: netbox/templates/dcim/device.html:34
msgid "Highlight device in rack"
msgstr ""
-#: templates/dcim/device.html:54
+#: netbox/templates/dcim/device.html:55
msgid "Not racked"
msgstr ""
-#: templates/dcim/device.html:61 templates/dcim/site.html:93
+#: netbox/templates/dcim/device.html:62 netbox/templates/dcim/site.html:94
msgid "GPS Coordinates"
msgstr ""
-#: templates/dcim/device.html:67 templates/dcim/site.html:99
+#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100
msgid "Map It"
msgstr ""
-#: templates/dcim/device.html:107 templates/dcim/inventoryitem.html:56
-#: templates/dcim/module.html:78 templates/dcim/modulebay.html:70
-#: templates/dcim/rack.html:59
+#: netbox/templates/dcim/device.html:108
+#: netbox/templates/dcim/inventoryitem.html:56
+#: netbox/templates/dcim/module.html:78 netbox/templates/dcim/modulebay.html:70
+#: netbox/templates/dcim/rack.html:59
msgid "Asset Tag"
msgstr ""
-#: templates/dcim/device.html:122
+#: netbox/templates/dcim/device.html:123
msgid "View Virtual Chassis"
msgstr ""
-#: templates/dcim/device.html:161
+#: netbox/templates/dcim/device.html:162
msgid "Create VDC"
msgstr ""
-#: templates/dcim/device.html:172 templates/dcim/device_edit.html:64
-#: virtualization/forms/model_forms.py:223
+#: netbox/templates/dcim/device.html:173
+#: netbox/templates/dcim/device_edit.html:64
+#: netbox/virtualization/forms/model_forms.py:223
msgid "Management"
msgstr ""
-#: templates/dcim/device.html:192 templates/dcim/device.html:208
-#: templates/virtualization/virtualmachine.html:53
-#: templates/virtualization/virtualmachine.html:69
+#: netbox/templates/dcim/device.html:193 netbox/templates/dcim/device.html:209
+#: netbox/templates/virtualization/virtualmachine.html:53
+#: netbox/templates/virtualization/virtualmachine.html:69
msgid "NAT for"
msgstr ""
-#: templates/dcim/device.html:194 templates/dcim/device.html:210
-#: templates/virtualization/virtualmachine.html:55
-#: templates/virtualization/virtualmachine.html:71
+#: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211
+#: netbox/templates/virtualization/virtualmachine.html:55
+#: netbox/templates/virtualization/virtualmachine.html:71
msgid "NAT"
msgstr ""
-#: templates/dcim/device.html:244 templates/dcim/rack.html:67
+#: netbox/templates/dcim/device.html:245 netbox/templates/dcim/rack.html:67
msgid "Power Utilization"
msgstr ""
-#: templates/dcim/device.html:248
+#: netbox/templates/dcim/device.html:249
msgid "Input"
msgstr ""
-#: templates/dcim/device.html:249
+#: netbox/templates/dcim/device.html:250
msgid "Outlets"
msgstr ""
-#: templates/dcim/device.html:250
+#: netbox/templates/dcim/device.html:251
msgid "Allocated"
msgstr ""
-#: templates/dcim/device.html:260 templates/dcim/device.html:262
-#: templates/dcim/device.html:278 templates/dcim/powerfeed.html:67
+#: netbox/templates/dcim/device.html:261 netbox/templates/dcim/device.html:263
+#: netbox/templates/dcim/device.html:279
+#: netbox/templates/dcim/powerfeed.html:67
msgid "VA"
msgstr ""
-#: templates/dcim/device.html:272
+#: netbox/templates/dcim/device.html:273
msgctxt "Leg of a power feed"
msgid "Leg"
msgstr ""
-#: templates/dcim/device.html:298
-#: templates/virtualization/virtualmachine.html:154
+#: netbox/templates/dcim/device.html:299
+#: netbox/templates/virtualization/virtualmachine.html:154
msgid "Add a service"
msgstr ""
-#: templates/dcim/device/base.html:21 templates/dcim/device_list.html:9
-#: templates/dcim/devicetype/base.html:18 templates/dcim/module.html:18
-#: templates/dcim/moduletype/base.html:18
-#: templates/virtualization/virtualmachine/base.html:22
-#: templates/virtualization/virtualmachine_list.html:8
+#: netbox/templates/dcim/device/base.html:21
+#: netbox/templates/dcim/device_list.html:9
+#: netbox/templates/dcim/devicetype/base.html:18
+#: netbox/templates/dcim/module.html:18
+#: netbox/templates/dcim/moduletype/base.html:18
+#: netbox/templates/virtualization/virtualmachine/base.html:22
+#: netbox/templates/virtualization/virtualmachine_list.html:8
msgid "Add Components"
msgstr ""
-#: templates/dcim/device/consoleports.html:24
+#: netbox/templates/dcim/device/consoleports.html:24
msgid "Add Console Ports"
msgstr ""
-#: templates/dcim/device/consoleserverports.html:24
+#: netbox/templates/dcim/device/consoleserverports.html:24
msgid "Add Console Server Ports"
msgstr ""
-#: templates/dcim/device/devicebays.html:10
+#: netbox/templates/dcim/device/devicebays.html:10
msgid "Add Device Bays"
msgstr ""
-#: templates/dcim/device/frontports.html:24
+#: netbox/templates/dcim/device/frontports.html:24
msgid "Add Front Ports"
msgstr ""
-#: templates/dcim/device/inc/interface_table_controls.html:9
+#: netbox/templates/dcim/device/inc/interface_table_controls.html:9
msgid "Hide Enabled"
msgstr ""
-#: templates/dcim/device/inc/interface_table_controls.html:10
+#: netbox/templates/dcim/device/inc/interface_table_controls.html:10
msgid "Hide Disabled"
msgstr ""
-#: templates/dcim/device/inc/interface_table_controls.html:11
+#: netbox/templates/dcim/device/inc/interface_table_controls.html:11
msgid "Hide Virtual"
msgstr ""
-#: templates/dcim/device/inc/interface_table_controls.html:12
+#: netbox/templates/dcim/device/inc/interface_table_controls.html:12
msgid "Hide Disconnected"
msgstr ""
-#: templates/dcim/device/interfaces.html:27
+#: netbox/templates/dcim/device/interfaces.html:27
msgid "Add Interfaces"
msgstr ""
-#: templates/dcim/device/inventory.html:10
-#: templates/dcim/inc/panels/inventory_items.html:10
+#: netbox/templates/dcim/device/inventory.html:10
+#: netbox/templates/dcim/inc/panels/inventory_items.html:10
msgid "Add Inventory Item"
msgstr ""
-#: templates/dcim/device/modulebays.html:10
+#: netbox/templates/dcim/device/modulebays.html:10
msgid "Add Module Bays"
msgstr ""
-#: templates/dcim/device/poweroutlets.html:24
+#: netbox/templates/dcim/device/poweroutlets.html:24
msgid "Add Power Outlets"
msgstr ""
-#: templates/dcim/device/powerports.html:24
+#: netbox/templates/dcim/device/powerports.html:24
msgid "Add Power Port"
msgstr ""
-#: templates/dcim/device/rearports.html:24
+#: netbox/templates/dcim/device/rearports.html:24
msgid "Add Rear Ports"
msgstr ""
-#: templates/dcim/device/render_config.html:5
-#: templates/virtualization/virtualmachine/render_config.html:5
+#: netbox/templates/dcim/device/render_config.html:5
+#: netbox/templates/virtualization/virtualmachine/render_config.html:5
msgid "Config"
msgstr ""
-#: templates/dcim/device/render_config.html:35
-#: templates/virtualization/virtualmachine/render_config.html:35
+#: netbox/templates/dcim/device/render_config.html:35
+#: netbox/templates/virtualization/virtualmachine/render_config.html:35
msgid "Context Data"
msgstr ""
-#: templates/dcim/device/render_config.html:53
-#: templates/virtualization/virtualmachine/render_config.html:53
+#: netbox/templates/dcim/device/render_config.html:53
+#: netbox/templates/virtualization/virtualmachine/render_config.html:53
msgid "Rendered Config"
msgstr ""
-#: templates/dcim/device/render_config.html:55
-#: templates/virtualization/virtualmachine/render_config.html:55
+#: netbox/templates/dcim/device/render_config.html:55
+#: netbox/templates/virtualization/virtualmachine/render_config.html:55
msgid "Download"
msgstr ""
-#: templates/dcim/device/render_config.html:61
-#: templates/virtualization/virtualmachine/render_config.html:61
+#: netbox/templates/dcim/device/render_config.html:61
+#: netbox/templates/virtualization/virtualmachine/render_config.html:61
msgid "No configuration template found"
msgstr ""
-#: templates/dcim/device_edit.html:44
+#: netbox/templates/dcim/device_edit.html:44
msgid "Parent Bay"
msgstr ""
-#: templates/dcim/device_edit.html:48
-#: utilities/templates/form_helpers/render_field.html:20
+#: netbox/templates/dcim/device_edit.html:48
+#: netbox/utilities/templates/form_helpers/render_field.html:20
msgid "Regenerate Slug"
msgstr ""
-#: templates/dcim/device_edit.html:49 templates/generic/bulk_remove.html:21
-#: utilities/templates/helpers/table_config_form.html:23
+#: netbox/templates/dcim/device_edit.html:49
+#: netbox/templates/generic/bulk_remove.html:21
+#: netbox/utilities/templates/helpers/table_config_form.html:23
msgid "Remove"
msgstr ""
-#: templates/dcim/device_edit.html:110
+#: netbox/templates/dcim/device_edit.html:110
msgid "Local Config Context Data"
msgstr ""
-#: templates/dcim/device_list.html:82
-#: templates/dcim/moduletype/component_templates.html:17
-#: templates/generic/bulk_rename.html:57
-#: templates/virtualization/virtualmachine/interfaces.html:11
-#: templates/virtualization/virtualmachine/virtual_disks.html:11
+#: netbox/templates/dcim/device_list.html:82
+#: netbox/templates/dcim/moduletype/component_templates.html:17
+#: netbox/templates/generic/bulk_rename.html:57
+#: netbox/templates/virtualization/virtualmachine/interfaces.html:11
+#: netbox/templates/virtualization/virtualmachine/virtual_disks.html:11
msgid "Rename"
msgstr ""
-#: templates/dcim/devicebay.html:17
+#: netbox/templates/dcim/devicebay.html:17
msgid "Device Bay"
msgstr ""
-#: templates/dcim/devicebay.html:43
+#: netbox/templates/dcim/devicebay.html:43
msgid "Installed Device"
msgstr ""
-#: templates/dcim/devicebay_depopulate.html:6
+#: netbox/templates/dcim/devicebay_depopulate.html:6
#, python-format
msgid "Remove %(device)s from %(device_bay)s?"
msgstr ""
-#: templates/dcim/devicebay_depopulate.html:13
+#: netbox/templates/dcim/devicebay_depopulate.html:13
#, python-format
msgid ""
"Are you sure you want to remove %(device)s from "
"%(device_bay)s?"
msgstr ""
-#: templates/dcim/devicebay_populate.html:13
+#: netbox/templates/dcim/devicebay_populate.html:13
msgid "Populate"
msgstr ""
-#: templates/dcim/devicebay_populate.html:22
+#: netbox/templates/dcim/devicebay_populate.html:22
msgid "Bay"
msgstr ""
-#: templates/dcim/devicerole.html:14 templates/dcim/platform.html:17
+#: netbox/templates/dcim/devicerole.html:14
+#: netbox/templates/dcim/platform.html:17
msgid "Add Device"
msgstr ""
-#: templates/dcim/devicerole.html:40
+#: netbox/templates/dcim/devicerole.html:40
msgid "VM Role"
msgstr ""
-#: templates/dcim/devicetype.html:18 templates/dcim/moduletype.html:18
+#: netbox/templates/dcim/devicetype.html:18
+#: netbox/templates/dcim/moduletype.html:18
msgid "Model Name"
msgstr ""
-#: templates/dcim/devicetype.html:25 templates/dcim/moduletype.html:22
+#: netbox/templates/dcim/devicetype.html:25
+#: netbox/templates/dcim/moduletype.html:22
msgid "Part Number"
msgstr ""
-#: templates/dcim/devicetype.html:41
+#: netbox/templates/dcim/devicetype.html:41
msgid "Exclude From Utilization"
msgstr ""
-#: templates/dcim/devicetype.html:59
+#: netbox/templates/dcim/devicetype.html:59
msgid "Parent/Child"
msgstr ""
-#: templates/dcim/devicetype.html:71
+#: netbox/templates/dcim/devicetype.html:71
msgid "Front Image"
msgstr ""
-#: templates/dcim/devicetype.html:83
+#: netbox/templates/dcim/devicetype.html:83
msgid "Rear Image"
msgstr ""
-#: templates/dcim/frontport.html:54
+#: netbox/templates/dcim/frontport.html:54
msgid "Rear Port Position"
msgstr ""
-#: templates/dcim/frontport.html:72 templates/dcim/interface.html:144
-#: templates/dcim/poweroutlet.html:63 templates/dcim/powerport.html:63
-#: templates/dcim/rearport.html:68
+#: netbox/templates/dcim/frontport.html:72
+#: netbox/templates/dcim/interface.html:144
+#: netbox/templates/dcim/poweroutlet.html:63
+#: netbox/templates/dcim/powerport.html:63
+#: netbox/templates/dcim/rearport.html:68
msgid "Marked as Connected"
msgstr ""
-#: templates/dcim/frontport.html:86 templates/dcim/rearport.html:82
+#: netbox/templates/dcim/frontport.html:86
+#: netbox/templates/dcim/rearport.html:82
msgid "Connection Status"
msgstr ""
-#: templates/dcim/htmx/cable_edit.html:10
+#: netbox/templates/dcim/htmx/cable_edit.html:10
msgid "A Side"
msgstr ""
-#: templates/dcim/htmx/cable_edit.html:30
+#: netbox/templates/dcim/htmx/cable_edit.html:30
msgid "B Side"
msgstr ""
-#: templates/dcim/inc/cable_termination.html:65
+#: netbox/templates/dcim/inc/cable_termination.html:65
msgid "No termination"
msgstr ""
-#: templates/dcim/inc/cable_toggle_buttons.html:3
+#: netbox/templates/dcim/inc/cable_toggle_buttons.html:3
msgid "Mark Planned"
msgstr ""
-#: templates/dcim/inc/cable_toggle_buttons.html:6
+#: netbox/templates/dcim/inc/cable_toggle_buttons.html:6
msgid "Mark Installed"
msgstr ""
-#: templates/dcim/inc/connection_endpoints.html:13
+#: netbox/templates/dcim/inc/connection_endpoints.html:13
msgid "Path Status"
msgstr ""
-#: templates/dcim/inc/connection_endpoints.html:18
+#: netbox/templates/dcim/inc/connection_endpoints.html:18
msgid "Not Reachable"
msgstr ""
-#: templates/dcim/inc/connection_endpoints.html:23
+#: netbox/templates/dcim/inc/connection_endpoints.html:23
msgid "Path Endpoints"
msgstr ""
-#: templates/dcim/inc/endpoint_connection.html:8
-#: templates/dcim/powerfeed.html:120 templates/dcim/rearport.html:94
+#: netbox/templates/dcim/inc/endpoint_connection.html:8
+#: netbox/templates/dcim/powerfeed.html:120
+#: netbox/templates/dcim/rearport.html:94
msgid "Not connected"
msgstr ""
-#: templates/dcim/inc/interface_vlans_table.html:6
+#: netbox/templates/dcim/inc/interface_vlans_table.html:6
msgid "Untagged"
msgstr ""
-#: templates/dcim/inc/interface_vlans_table.html:37
+#: netbox/templates/dcim/inc/interface_vlans_table.html:37
msgid "No VLANs Assigned"
msgstr ""
-#: templates/dcim/inc/interface_vlans_table.html:44
-#: templates/ipam/prefix_list.html:16 templates/ipam/prefix_list.html:33
+#: netbox/templates/dcim/inc/interface_vlans_table.html:44
+#: netbox/templates/ipam/prefix_list.html:16
+#: netbox/templates/ipam/prefix_list.html:33
msgid "Clear"
msgstr ""
-#: templates/dcim/inc/interface_vlans_table.html:47
+#: netbox/templates/dcim/inc/interface_vlans_table.html:47
msgid "Clear All"
msgstr ""
-#: templates/dcim/interface.html:17
+#: netbox/templates/dcim/interface.html:17
msgid "Add Child Interface"
msgstr ""
-#: templates/dcim/interface.html:50
+#: netbox/templates/dcim/interface.html:50
msgid "Speed/Duplex"
msgstr ""
-#: templates/dcim/interface.html:73
+#: netbox/templates/dcim/interface.html:73
msgid "PoE Mode"
msgstr ""
-#: templates/dcim/interface.html:77
+#: netbox/templates/dcim/interface.html:77
msgid "PoE Type"
msgstr ""
-#: templates/dcim/interface.html:81
-#: templates/virtualization/vminterface.html:63
+#: netbox/templates/dcim/interface.html:81
+#: netbox/templates/virtualization/vminterface.html:63
msgid "802.1Q Mode"
msgstr ""
-#: templates/dcim/interface.html:125
-#: templates/virtualization/vminterface.html:59
+#: netbox/templates/dcim/interface.html:125
+#: netbox/templates/virtualization/vminterface.html:59
msgid "MAC Address"
msgstr ""
-#: templates/dcim/interface.html:151
+#: netbox/templates/dcim/interface.html:151
msgid "Wireless Link"
msgstr ""
-#: templates/dcim/interface.html:218 vpn/choices.py:55
+#: netbox/templates/dcim/interface.html:218 netbox/vpn/choices.py:55
msgid "Peer"
msgstr ""
-#: templates/dcim/interface.html:230
-#: templates/wireless/inc/wirelesslink_interface.html:26
+#: netbox/templates/dcim/interface.html:230
+#: netbox/templates/wireless/inc/wirelesslink_interface.html:26
msgid "Channel"
msgstr ""
-#: templates/dcim/interface.html:239
-#: templates/wireless/inc/wirelesslink_interface.html:32
+#: netbox/templates/dcim/interface.html:239
+#: netbox/templates/wireless/inc/wirelesslink_interface.html:32
msgid "Channel Frequency"
msgstr ""
-#: templates/dcim/interface.html:242 templates/dcim/interface.html:250
-#: templates/dcim/interface.html:261 templates/dcim/interface.html:269
+#: netbox/templates/dcim/interface.html:242
+#: netbox/templates/dcim/interface.html:250
+#: netbox/templates/dcim/interface.html:261
+#: netbox/templates/dcim/interface.html:269
msgid "MHz"
msgstr ""
-#: templates/dcim/interface.html:258
-#: templates/wireless/inc/wirelesslink_interface.html:42
+#: netbox/templates/dcim/interface.html:258
+#: netbox/templates/wireless/inc/wirelesslink_interface.html:42
msgid "Channel Width"
msgstr ""
-#: templates/dcim/interface.html:285 templates/wireless/wirelesslan.html:14
-#: templates/wireless/wirelesslink.html:21 wireless/forms/bulk_edit.py:60
-#: wireless/forms/bulk_edit.py:102 wireless/forms/filtersets.py:40
-#: wireless/forms/filtersets.py:80 wireless/models.py:81 wireless/models.py:155
-#: wireless/tables/wirelesslan.py:44
+#: netbox/templates/dcim/interface.html:285
+#: netbox/templates/wireless/wirelesslan.html:14
+#: netbox/templates/wireless/wirelesslink.html:21
+#: netbox/wireless/forms/bulk_edit.py:60 netbox/wireless/forms/bulk_edit.py:102
+#: netbox/wireless/forms/filtersets.py:40
+#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81
+#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44
msgid "SSID"
msgstr ""
-#: templates/dcim/interface.html:305
+#: netbox/templates/dcim/interface.html:305
msgid "LAG Members"
msgstr ""
-#: templates/dcim/interface.html:323
+#: netbox/templates/dcim/interface.html:323
msgid "No member interfaces"
msgstr ""
-#: templates/dcim/interface.html:343 templates/ipam/fhrpgroup.html:73
-#: templates/ipam/iprange/ip_addresses.html:7
-#: templates/ipam/prefix/ip_addresses.html:7
-#: templates/virtualization/vminterface.html:89
+#: netbox/templates/dcim/interface.html:343
+#: netbox/templates/ipam/fhrpgroup.html:73
+#: netbox/templates/ipam/iprange/ip_addresses.html:7
+#: netbox/templates/ipam/prefix/ip_addresses.html:7
+#: netbox/templates/virtualization/vminterface.html:89
msgid "Add IP Address"
msgstr ""
-#: templates/dcim/inventoryitem.html:24
+#: netbox/templates/dcim/inventoryitem.html:24
msgid "Parent Item"
msgstr ""
-#: templates/dcim/inventoryitem.html:48
+#: netbox/templates/dcim/inventoryitem.html:48
msgid "Part ID"
msgstr ""
-#: templates/dcim/location.html:17
+#: netbox/templates/dcim/location.html:17
msgid "Add Child Location"
msgstr ""
-#: templates/dcim/location.html:58 templates/dcim/site.html:55
+#: netbox/templates/dcim/location.html:58 netbox/templates/dcim/site.html:56
msgid "Facility"
msgstr ""
-#: templates/dcim/location.html:77
+#: netbox/templates/dcim/location.html:77
msgid "Child Locations"
msgstr ""
-#: templates/dcim/location.html:81 templates/dcim/site.html:130
+#: netbox/templates/dcim/location.html:81 netbox/templates/dcim/site.html:131
msgid "Add a Location"
msgstr ""
-#: templates/dcim/location.html:94 templates/dcim/site.html:143
+#: netbox/templates/dcim/location.html:94 netbox/templates/dcim/site.html:144
msgid "Add a Device"
msgstr ""
-#: templates/dcim/manufacturer.html:16
+#: netbox/templates/dcim/manufacturer.html:16
msgid "Add Device Type"
msgstr ""
-#: templates/dcim/manufacturer.html:21
+#: netbox/templates/dcim/manufacturer.html:21
msgid "Add Module Type"
msgstr ""
-#: templates/dcim/powerfeed.html:53
+#: netbox/templates/dcim/powerfeed.html:53
msgid "Connected Device"
msgstr ""
-#: templates/dcim/powerfeed.html:63
+#: netbox/templates/dcim/powerfeed.html:63
msgid "Utilization (Allocated"
msgstr ""
-#: templates/dcim/powerfeed.html:80
+#: netbox/templates/dcim/powerfeed.html:80
msgid "Electrical Characteristics"
msgstr ""
-#: templates/dcim/powerfeed.html:88
+#: netbox/templates/dcim/powerfeed.html:88
msgctxt "Abbreviation for volts"
msgid "V"
msgstr ""
-#: templates/dcim/powerfeed.html:92
+#: netbox/templates/dcim/powerfeed.html:92
msgctxt "Abbreviation for amperes"
msgid "A"
msgstr ""
-#: templates/dcim/poweroutlet.html:48
+#: netbox/templates/dcim/poweroutlet.html:48
msgid "Feed Leg"
msgstr ""
-#: templates/dcim/powerpanel.html:72
+#: netbox/templates/dcim/powerpanel.html:72
msgid "Add Power Feeds"
msgstr ""
-#: templates/dcim/powerport.html:44
+#: netbox/templates/dcim/powerport.html:44
msgid "Maximum Draw"
msgstr ""
-#: templates/dcim/powerport.html:48
+#: netbox/templates/dcim/powerport.html:48
msgid "Allocated Draw"
msgstr ""
-#: templates/dcim/rack.html:63
+#: netbox/templates/dcim/rack.html:63
msgid "Space Utilization"
msgstr ""
-#: templates/dcim/rack.html:91
+#: netbox/templates/dcim/rack.html:91
msgid "descending"
msgstr ""
-#: templates/dcim/rack.html:91
+#: netbox/templates/dcim/rack.html:91
msgid "ascending"
msgstr ""
-#: templates/dcim/rack.html:94
+#: netbox/templates/dcim/rack.html:94
msgid "Starting Unit"
msgstr ""
-#: templates/dcim/rack.html:120
+#: netbox/templates/dcim/rack.html:120
msgid "Mounting Depth"
msgstr ""
-#: templates/dcim/rack.html:130
+#: netbox/templates/dcim/rack.html:130
msgid "Rack Weight"
msgstr ""
-#: templates/dcim/rack.html:140
+#: netbox/templates/dcim/rack.html:140
msgid "Maximum Weight"
msgstr ""
-#: templates/dcim/rack.html:150
+#: netbox/templates/dcim/rack.html:150
msgid "Total Weight"
msgstr ""
-#: templates/dcim/rack.html:167 templates/dcim/rack_elevation_list.html:15
+#: netbox/templates/dcim/rack.html:167
+#: netbox/templates/dcim/rack_elevation_list.html:15
msgid "Images and Labels"
msgstr ""
-#: templates/dcim/rack.html:168 templates/dcim/rack_elevation_list.html:16
+#: netbox/templates/dcim/rack.html:168
+#: netbox/templates/dcim/rack_elevation_list.html:16
msgid "Images only"
msgstr ""
-#: templates/dcim/rack.html:169 templates/dcim/rack_elevation_list.html:17
+#: netbox/templates/dcim/rack.html:169
+#: netbox/templates/dcim/rack_elevation_list.html:17
msgid "Labels only"
msgstr ""
-#: templates/dcim/rack/reservations.html:8
+#: netbox/templates/dcim/rack/reservations.html:8
msgid "Add reservation"
msgstr ""
-#: templates/dcim/rack_elevation_list.html:12
+#: netbox/templates/dcim/rack_elevation_list.html:12
msgid "View List"
msgstr ""
-#: templates/dcim/rack_elevation_list.html:25
+#: netbox/templates/dcim/rack_elevation_list.html:25
msgid "Sort By"
msgstr ""
-#: templates/dcim/rack_elevation_list.html:74
+#: netbox/templates/dcim/rack_elevation_list.html:74
msgid "No Racks Found"
msgstr ""
-#: templates/dcim/rack_list.html:8
+#: netbox/templates/dcim/rack_list.html:8
msgid "View Elevations"
msgstr ""
-#: templates/dcim/rackreservation.html:42
+#: netbox/templates/dcim/rackreservation.html:42
msgid "Reservation Details"
msgstr ""
-#: templates/dcim/rackrole.html:10
+#: netbox/templates/dcim/rackrole.html:10
msgid "Add Rack"
msgstr ""
-#: templates/dcim/rearport.html:50
+#: netbox/templates/dcim/rearport.html:50
msgid "Positions"
msgstr ""
-#: templates/dcim/region.html:17 templates/dcim/sitegroup.html:17
+#: netbox/templates/dcim/region.html:17 netbox/templates/dcim/sitegroup.html:17
msgid "Add Site"
msgstr ""
-#: templates/dcim/region.html:55
+#: netbox/templates/dcim/region.html:55
msgid "Child Regions"
msgstr ""
-#: templates/dcim/region.html:59
+#: netbox/templates/dcim/region.html:59
msgid "Add Region"
msgstr ""
-#: templates/dcim/site.html:63
+#: netbox/templates/dcim/site.html:64
msgid "Time Zone"
msgstr ""
-#: templates/dcim/site.html:66
+#: netbox/templates/dcim/site.html:67
msgid "UTC"
msgstr ""
-#: templates/dcim/site.html:67
+#: netbox/templates/dcim/site.html:68
msgid "Site time"
msgstr ""
-#: templates/dcim/site.html:74
+#: netbox/templates/dcim/site.html:75
msgid "Physical Address"
msgstr ""
-#: templates/dcim/site.html:80
+#: netbox/templates/dcim/site.html:81
msgid "Map"
msgstr ""
-#: templates/dcim/site.html:89
+#: netbox/templates/dcim/site.html:90
msgid "Shipping Address"
msgstr ""
-#: templates/dcim/sitegroup.html:55 templates/tenancy/contactgroup.html:46
-#: templates/tenancy/tenantgroup.html:55
-#: templates/wireless/wirelesslangroup.html:55
+#: netbox/templates/dcim/sitegroup.html:55
+#: netbox/templates/tenancy/contactgroup.html:46
+#: netbox/templates/tenancy/tenantgroup.html:55
+#: netbox/templates/wireless/wirelesslangroup.html:55
msgid "Child Groups"
msgstr ""
-#: templates/dcim/sitegroup.html:59
+#: netbox/templates/dcim/sitegroup.html:59
msgid "Add Site Group"
msgstr ""
-#: templates/dcim/trace/attachment.html:5
-#: templates/extras/exporttemplate.html:31
+#: netbox/templates/dcim/trace/attachment.html:5
+#: netbox/templates/extras/exporttemplate.html:31
msgid "Attachment"
msgstr ""
-#: templates/dcim/virtualchassis.html:57
+#: netbox/templates/dcim/virtualchassis.html:57
msgid "Add Member"
msgstr ""
-#: templates/dcim/virtualchassis_add.html:18
+#: netbox/templates/dcim/virtualchassis_add.html:18
msgid "Member Devices"
msgstr ""
-#: templates/dcim/virtualchassis_add_member.html:10
+#: netbox/templates/dcim/virtualchassis_add_member.html:10
#, python-format
msgid "Add New Member to Virtual Chassis %(virtual_chassis)s"
msgstr ""
-#: templates/dcim/virtualchassis_add_member.html:19
+#: netbox/templates/dcim/virtualchassis_add_member.html:19
msgid "Add New Member"
msgstr ""
-#: templates/dcim/virtualchassis_add_member.html:27
-#: templates/generic/object_edit.html:78
-#: templates/users/objectpermission.html:31 users/forms/filtersets.py:68
-#: users/forms/model_forms.py:309
+#: netbox/templates/dcim/virtualchassis_add_member.html:27
+#: netbox/templates/generic/object_edit.html:78
+#: netbox/templates/users/objectpermission.html:31
+#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:309
msgid "Actions"
msgstr ""
-#: templates/dcim/virtualchassis_add_member.html:29
+#: netbox/templates/dcim/virtualchassis_add_member.html:29
msgid "Save & Add Another"
msgstr ""
-#: templates/dcim/virtualchassis_edit.html:7
+#: netbox/templates/dcim/virtualchassis_edit.html:7
#, python-format
msgid "Editing Virtual Chassis %(name)s"
msgstr ""
-#: templates/dcim/virtualchassis_edit.html:53
+#: netbox/templates/dcim/virtualchassis_edit.html:53
msgid "Rack/Unit"
msgstr ""
-#: templates/dcim/virtualchassis_remove_member.html:5
+#: netbox/templates/dcim/virtualchassis_remove_member.html:5
msgid "Remove Virtual Chassis Member"
msgstr ""
-#: templates/dcim/virtualchassis_remove_member.html:9
+#: netbox/templates/dcim/virtualchassis_remove_member.html:9
#, python-format
msgid ""
"Are you sure you want to remove %(device)s from virtual "
"chassis %(name)s?"
msgstr ""
-#: templates/dcim/virtualdevicecontext.html:26 templates/vpn/l2vpn.html:18
+#: netbox/templates/dcim/virtualdevicecontext.html:26
+#: netbox/templates/vpn/l2vpn.html:18
msgid "Identifier"
msgstr ""
-#: templates/exceptions/import_error.html:6
+#: netbox/templates/exceptions/import_error.html:6
msgid ""
"A module import error occurred during this request. Common causes include "
"the following:"
msgstr ""
-#: templates/exceptions/import_error.html:10
+#: netbox/templates/exceptions/import_error.html:10
msgid "Missing required packages"
msgstr ""
-#: templates/exceptions/import_error.html:11
+#: netbox/templates/exceptions/import_error.html:11
msgid ""
"This installation of NetBox might be missing one or more required Python "
"packages. These packages are listed in requirements.txt
and "
@@ -11421,28 +12034,28 @@ msgid ""
"of required packages."
msgstr ""
-#: templates/exceptions/import_error.html:20
+#: netbox/templates/exceptions/import_error.html:20
msgid "WSGI service not restarted after upgrade"
msgstr ""
-#: templates/exceptions/import_error.html:21
+#: netbox/templates/exceptions/import_error.html:21
msgid ""
"If this installation has recently been upgraded, check that the WSGI service "
"(e.g. gunicorn or uWSGI) has been restarted. This ensures that the new code "
"is running."
msgstr ""
-#: templates/exceptions/permission_error.html:6
+#: netbox/templates/exceptions/permission_error.html:6
msgid ""
"A file permission error was detected while processing this request. Common "
"causes include the following:"
msgstr ""
-#: templates/exceptions/permission_error.html:10
+#: netbox/templates/exceptions/permission_error.html:10
msgid "Insufficient write permission to the media root"
msgstr ""
-#: templates/exceptions/permission_error.html:11
+#: netbox/templates/exceptions/permission_error.html:11
#, python-format
msgid ""
"The configured media root is %(media_root)s
. Ensure that the "
@@ -11450,410 +12063,415 @@ msgid ""
"path."
msgstr ""
-#: templates/exceptions/programming_error.html:6
+#: netbox/templates/exceptions/programming_error.html:6
msgid ""
"A database programming error was detected while processing this request. "
"Common causes include the following:"
msgstr ""
-#: templates/exceptions/programming_error.html:10
+#: netbox/templates/exceptions/programming_error.html:10
msgid "Database migrations missing"
msgstr ""
-#: templates/exceptions/programming_error.html:11
+#: netbox/templates/exceptions/programming_error.html:11
msgid ""
"When upgrading to a new NetBox release, the upgrade script must be run to "
"apply any new database migrations. You can run migrations manually by "
"executing python3 manage.py migrate
from the command line."
msgstr ""
-#: templates/exceptions/programming_error.html:18
+#: netbox/templates/exceptions/programming_error.html:18
msgid "Unsupported PostgreSQL version"
msgstr ""
-#: templates/exceptions/programming_error.html:19
+#: netbox/templates/exceptions/programming_error.html:19
msgid ""
"Ensure that PostgreSQL version 12 or later is in use. You can check this by "
"connecting to the database using NetBox's credentials and issuing a query "
"for SELECT VERSION()
."
msgstr ""
-#: templates/extras/configcontext.html:45
-#: templates/extras/configtemplate.html:37
-#: templates/extras/exporttemplate.html:51
+#: netbox/templates/extras/configcontext.html:45
+#: netbox/templates/extras/configtemplate.html:37
+#: netbox/templates/extras/exporttemplate.html:51
msgid "The data file associated with this object has been deleted"
msgstr ""
-#: templates/extras/configcontext.html:54
-#: templates/extras/configtemplate.html:46
-#: templates/extras/exporttemplate.html:60
+#: netbox/templates/extras/configcontext.html:54
+#: netbox/templates/extras/configtemplate.html:46
+#: netbox/templates/extras/exporttemplate.html:60
msgid "Data Synced"
msgstr ""
-#: templates/extras/configcontext_list.html:7
-#: templates/extras/configtemplate_list.html:7
-#: templates/extras/exporttemplate_list.html:7
+#: netbox/templates/extras/configcontext_list.html:7
+#: netbox/templates/extras/configtemplate_list.html:7
+#: netbox/templates/extras/exporttemplate_list.html:7
msgid "Sync Data"
msgstr ""
-#: templates/extras/configtemplate.html:56
+#: netbox/templates/extras/configtemplate.html:56
msgid "Environment Parameters"
msgstr ""
-#: templates/extras/configtemplate.html:67
-#: templates/extras/exporttemplate.html:79
+#: netbox/templates/extras/configtemplate.html:67
+#: netbox/templates/extras/exporttemplate.html:79
msgid "Template"
msgstr ""
-#: templates/extras/customfield.html:30 templates/extras/customlink.html:21
+#: netbox/templates/extras/customfield.html:30
+#: netbox/templates/extras/customlink.html:21
msgid "Group Name"
msgstr ""
-#: templates/extras/customfield.html:42
+#: netbox/templates/extras/customfield.html:42
msgid "Cloneable"
msgstr ""
-#: templates/extras/customfield.html:52
+#: netbox/templates/extras/customfield.html:52
msgid "Default Value"
msgstr ""
-#: templates/extras/customfield.html:61
+#: netbox/templates/extras/customfield.html:61
msgid "Search Weight"
msgstr ""
-#: templates/extras/customfield.html:71
+#: netbox/templates/extras/customfield.html:71
msgid "Filter Logic"
msgstr ""
-#: templates/extras/customfield.html:75
+#: netbox/templates/extras/customfield.html:75
msgid "Display Weight"
msgstr ""
-#: templates/extras/customfield.html:79
+#: netbox/templates/extras/customfield.html:79
msgid "UI Visible"
msgstr ""
-#: templates/extras/customfield.html:83
+#: netbox/templates/extras/customfield.html:83
msgid "UI Editable"
msgstr ""
-#: templates/extras/customfield.html:103
+#: netbox/templates/extras/customfield.html:103
msgid "Validation Rules"
msgstr ""
-#: templates/extras/customfield.html:106
+#: netbox/templates/extras/customfield.html:106
msgid "Minimum Value"
msgstr ""
-#: templates/extras/customfield.html:110
+#: netbox/templates/extras/customfield.html:110
msgid "Maximum Value"
msgstr ""
-#: templates/extras/customfield.html:114
+#: netbox/templates/extras/customfield.html:114
msgid "Regular Expression"
msgstr ""
-#: templates/extras/customlink.html:29
+#: netbox/templates/extras/customlink.html:29
msgid "Button Class"
msgstr ""
-#: templates/extras/customlink.html:39 templates/extras/exporttemplate.html:66
-#: templates/extras/savedfilter.html:39
+#: netbox/templates/extras/customlink.html:39
+#: netbox/templates/extras/exporttemplate.html:66
+#: netbox/templates/extras/savedfilter.html:39
msgid "Assigned Models"
msgstr ""
-#: templates/extras/customlink.html:53
+#: netbox/templates/extras/customlink.html:53
msgid "Link Text"
msgstr ""
-#: templates/extras/customlink.html:61
+#: netbox/templates/extras/customlink.html:61
msgid "Link URL"
msgstr ""
-#: templates/extras/dashboard/reset.html:4 templates/home.html:66
+#: netbox/templates/extras/dashboard/reset.html:4 netbox/templates/home.html:66
msgid "Reset Dashboard"
msgstr ""
-#: templates/extras/dashboard/reset.html:8
+#: netbox/templates/extras/dashboard/reset.html:8
msgid ""
"This will remove all configured widgets and restore the "
"default dashboard configuration."
msgstr ""
-#: templates/extras/dashboard/reset.html:13
+#: netbox/templates/extras/dashboard/reset.html:13
msgid ""
"This change affects only your dashboard, and will not impact other "
"users."
msgstr ""
-#: templates/extras/dashboard/widget_add.html:7
+#: netbox/templates/extras/dashboard/widget_add.html:7
msgid "Add a Widget"
msgstr ""
-#: templates/extras/dashboard/widgets/bookmarks.html:14
+#: netbox/templates/extras/dashboard/widgets/bookmarks.html:14
msgid "No bookmarks have been added yet."
msgstr ""
-#: templates/extras/dashboard/widgets/objectcounts.html:10
+#: netbox/templates/extras/dashboard/widgets/objectcounts.html:10
msgid "No permission"
msgstr ""
-#: templates/extras/dashboard/widgets/objectlist.html:6
+#: netbox/templates/extras/dashboard/widgets/objectlist.html:6
msgid "No permission to view this content"
msgstr ""
-#: templates/extras/dashboard/widgets/objectlist.html:10
+#: netbox/templates/extras/dashboard/widgets/objectlist.html:10
msgid "Unable to load content. Invalid view name"
msgstr ""
-#: templates/extras/dashboard/widgets/rssfeed.html:12
+#: netbox/templates/extras/dashboard/widgets/rssfeed.html:12
msgid "No content found"
msgstr ""
-#: templates/extras/dashboard/widgets/rssfeed.html:18
+#: netbox/templates/extras/dashboard/widgets/rssfeed.html:18
msgid "There was a problem fetching the RSS feed"
msgstr ""
-#: templates/extras/dashboard/widgets/rssfeed.html:21
+#: netbox/templates/extras/dashboard/widgets/rssfeed.html:21
msgid "HTTP"
msgstr ""
-#: templates/extras/eventrule.html:52
+#: netbox/templates/extras/eventrule.html:52
msgid "Job start"
msgstr ""
-#: templates/extras/eventrule.html:56
+#: netbox/templates/extras/eventrule.html:56
msgid "Job end"
msgstr ""
-#: templates/extras/exporttemplate.html:23
+#: netbox/templates/extras/exporttemplate.html:23
msgid "MIME Type"
msgstr ""
-#: templates/extras/exporttemplate.html:27
+#: netbox/templates/extras/exporttemplate.html:27
msgid "File Extension"
msgstr ""
-#: templates/extras/htmx/script_result.html:10
+#: netbox/templates/extras/htmx/script_result.html:10
msgid "Scheduled for"
msgstr ""
-#: templates/extras/htmx/script_result.html:15
+#: netbox/templates/extras/htmx/script_result.html:15
msgid "Duration"
msgstr ""
-#: templates/extras/htmx/script_result.html:23
+#: netbox/templates/extras/htmx/script_result.html:23
msgid "Test Summary"
msgstr ""
-#: templates/extras/htmx/script_result.html:43
+#: netbox/templates/extras/htmx/script_result.html:43
msgid "Log"
msgstr ""
-#: templates/extras/htmx/script_result.html:52
+#: netbox/templates/extras/htmx/script_result.html:52
msgid "Output"
msgstr ""
-#: templates/extras/inc/result_pending.html:4
+#: netbox/templates/extras/inc/result_pending.html:4
msgid "Loading"
msgstr ""
-#: templates/extras/inc/result_pending.html:6
+#: netbox/templates/extras/inc/result_pending.html:6
msgid "Results pending"
msgstr ""
-#: templates/extras/journalentry.html:15
+#: netbox/templates/extras/journalentry.html:15
msgid "Journal Entry"
msgstr ""
-#: templates/extras/object_changelog.html:15
-#: templates/extras/objectchange_list.html:9
+#: netbox/templates/extras/object_changelog.html:15
+#: netbox/templates/extras/objectchange_list.html:9
msgid "Change log retention"
msgstr ""
-#: templates/extras/object_changelog.html:15
-#: templates/extras/objectchange_list.html:9
+#: netbox/templates/extras/object_changelog.html:15
+#: netbox/templates/extras/objectchange_list.html:9
msgid "days"
msgstr ""
-#: templates/extras/object_changelog.html:15
-#: templates/extras/objectchange_list.html:9
+#: netbox/templates/extras/object_changelog.html:15
+#: netbox/templates/extras/objectchange_list.html:9
msgid "Indefinite"
msgstr ""
-#: templates/extras/object_configcontext.html:19
+#: netbox/templates/extras/object_configcontext.html:19
msgid "The local config context overwrites all source contexts"
msgstr ""
-#: templates/extras/object_configcontext.html:25
+#: netbox/templates/extras/object_configcontext.html:25
msgid "Source Contexts"
msgstr ""
-#: templates/extras/object_journal.html:17
+#: netbox/templates/extras/object_journal.html:17
msgid "New Journal Entry"
msgstr ""
-#: templates/extras/objectchange.html:28
-#: templates/users/objectpermission.html:42
+#: netbox/templates/extras/objectchange.html:28
+#: netbox/templates/users/objectpermission.html:42
msgid "Change"
msgstr ""
-#: templates/extras/objectchange.html:78
+#: netbox/templates/extras/objectchange.html:78
msgid "Difference"
msgstr ""
-#: templates/extras/objectchange.html:81
+#: netbox/templates/extras/objectchange.html:81
msgid "Previous"
msgstr ""
-#: templates/extras/objectchange.html:84
+#: netbox/templates/extras/objectchange.html:84
msgid "Next"
msgstr ""
-#: templates/extras/objectchange.html:92
+#: netbox/templates/extras/objectchange.html:92
msgid "Object Created"
msgstr ""
-#: templates/extras/objectchange.html:94
+#: netbox/templates/extras/objectchange.html:94
msgid "Object Deleted"
msgstr ""
-#: templates/extras/objectchange.html:96
+#: netbox/templates/extras/objectchange.html:96
msgid "No Changes"
msgstr ""
-#: templates/extras/objectchange.html:110
+#: netbox/templates/extras/objectchange.html:110
msgid "Pre-Change Data"
msgstr ""
-#: templates/extras/objectchange.html:121
+#: netbox/templates/extras/objectchange.html:121
msgid "Warning: Comparing non-atomic change to previous change record"
msgstr ""
-#: templates/extras/objectchange.html:130
+#: netbox/templates/extras/objectchange.html:130
msgid "Post-Change Data"
msgstr ""
-#: templates/extras/objectchange.html:153
+#: netbox/templates/extras/objectchange.html:153
#, python-format
msgid "See All %(count)s Changes"
msgstr ""
-#: templates/extras/report/base.html:30
+#: netbox/templates/extras/report/base.html:30
msgid "Report"
msgstr ""
-#: templates/extras/script.html:14
+#: netbox/templates/extras/script.html:14
msgid "You do not have permission to run scripts"
msgstr ""
-#: templates/extras/script.html:41 templates/extras/script.html:45
-#: templates/extras/script_list.html:88
+#: netbox/templates/extras/script.html:41
+#: netbox/templates/extras/script.html:45
+#: netbox/templates/extras/script_list.html:88
msgid "Run Script"
msgstr ""
-#: templates/extras/script.html:51 templates/extras/script/source.html:10
+#: netbox/templates/extras/script.html:51
+#: netbox/templates/extras/script/source.html:10
msgid "Error loading script"
msgstr ""
-#: templates/extras/script/jobs.html:16
+#: netbox/templates/extras/script/jobs.html:16
msgid "Script no longer exists in the source file."
msgstr ""
-#: templates/extras/script_list.html:48
+#: netbox/templates/extras/script_list.html:48
msgid "Last Run"
msgstr ""
-#: templates/extras/script_list.html:63
+#: netbox/templates/extras/script_list.html:63
msgid "Script is no longer present in the source file"
msgstr ""
-#: templates/extras/script_list.html:76
+#: netbox/templates/extras/script_list.html:76
msgid "Never"
msgstr ""
-#: templates/extras/script_list.html:86
+#: netbox/templates/extras/script_list.html:86
msgid "Run Again"
msgstr ""
-#: templates/extras/script_list.html:140
+#: netbox/templates/extras/script_list.html:140
msgid "No Scripts Found"
msgstr ""
-#: templates/extras/script_list.html:143
+#: netbox/templates/extras/script_list.html:143
#, python-format
msgid ""
"Get started by creating a script from "
"an uploaded file or data source."
msgstr ""
-#: templates/extras/script_result.html:35 templates/generic/object_list.html:50
-#: templates/search.html:13
+#: netbox/templates/extras/script_result.html:35
+#: netbox/templates/generic/object_list.html:50 netbox/templates/search.html:13
msgid "Results"
msgstr ""
-#: templates/extras/tag.html:32
+#: netbox/templates/extras/tag.html:32
msgid "Tagged Items"
msgstr ""
-#: templates/extras/tag.html:43
+#: netbox/templates/extras/tag.html:43
msgid "Allowed Object Types"
msgstr ""
-#: templates/extras/tag.html:51
+#: netbox/templates/extras/tag.html:51
msgid "Any"
msgstr ""
-#: templates/extras/tag.html:57
+#: netbox/templates/extras/tag.html:57
msgid "Tagged Item Types"
msgstr ""
-#: templates/extras/tag.html:81
+#: netbox/templates/extras/tag.html:81
msgid "Tagged Objects"
msgstr ""
-#: templates/extras/webhook.html:26
+#: netbox/templates/extras/webhook.html:26
msgid "HTTP Method"
msgstr ""
-#: templates/extras/webhook.html:34
+#: netbox/templates/extras/webhook.html:34
msgid "HTTP Content Type"
msgstr ""
-#: templates/extras/webhook.html:47
+#: netbox/templates/extras/webhook.html:47
msgid "SSL Verification"
msgstr ""
-#: templates/extras/webhook.html:61
+#: netbox/templates/extras/webhook.html:61
msgid "Additional Headers"
msgstr ""
-#: templates/extras/webhook.html:73
+#: netbox/templates/extras/webhook.html:73
msgid "Body Template"
msgstr ""
-#: templates/generic/bulk_add_component.html:29
+#: netbox/templates/generic/bulk_add_component.html:29
msgid "Bulk Creation"
msgstr ""
-#: templates/generic/bulk_add_component.html:34
-#: templates/generic/bulk_delete.html:32 templates/generic/bulk_edit.html:33
+#: netbox/templates/generic/bulk_add_component.html:34
+#: netbox/templates/generic/bulk_delete.html:32
+#: netbox/templates/generic/bulk_edit.html:33
msgid "Selected Objects"
msgstr ""
-#: templates/generic/bulk_add_component.html:58
+#: netbox/templates/generic/bulk_add_component.html:58
msgid "to Add"
msgstr ""
-#: templates/generic/bulk_delete.html:27
+#: netbox/templates/generic/bulk_delete.html:27
msgid "Bulk Delete"
msgstr ""
-#: templates/generic/bulk_delete.html:49
+#: netbox/templates/generic/bulk_delete.html:49
msgid "Confirm Bulk Deletion"
msgstr ""
-#: templates/generic/bulk_delete.html:50
+#: netbox/templates/generic/bulk_delete.html:50
#, python-format
msgid ""
"The following operation will delete %(count)s "
@@ -11861,75 +12479,78 @@ msgid ""
"this action."
msgstr ""
-#: templates/generic/bulk_edit.html:21 templates/generic/object_edit.html:22
+#: netbox/templates/generic/bulk_edit.html:21
+#: netbox/templates/generic/object_edit.html:22
msgid "Editing"
msgstr ""
-#: templates/generic/bulk_edit.html:28
+#: netbox/templates/generic/bulk_edit.html:28
msgid "Bulk Edit"
msgstr ""
-#: templates/generic/bulk_edit.html:107 templates/generic/bulk_rename.html:66
+#: netbox/templates/generic/bulk_edit.html:107
+#: netbox/templates/generic/bulk_rename.html:66
msgid "Apply"
msgstr ""
-#: templates/generic/bulk_import.html:19
+#: netbox/templates/generic/bulk_import.html:19
msgid "Bulk Import"
msgstr ""
-#: templates/generic/bulk_import.html:25
+#: netbox/templates/generic/bulk_import.html:25
msgid "Direct Import"
msgstr ""
-#: templates/generic/bulk_import.html:30
+#: netbox/templates/generic/bulk_import.html:30
msgid "Upload File"
msgstr ""
-#: templates/generic/bulk_import.html:58 templates/generic/bulk_import.html:80
-#: templates/generic/bulk_import.html:102
+#: netbox/templates/generic/bulk_import.html:58
+#: netbox/templates/generic/bulk_import.html:80
+#: netbox/templates/generic/bulk_import.html:102
msgid "Submit"
msgstr ""
-#: templates/generic/bulk_import.html:113
+#: netbox/templates/generic/bulk_import.html:113
msgid "Field Options"
msgstr ""
-#: templates/generic/bulk_import.html:119
+#: netbox/templates/generic/bulk_import.html:119
msgid "Accessor"
msgstr ""
-#: templates/generic/bulk_import.html:161
+#: netbox/templates/generic/bulk_import.html:161
msgid "Import Value"
msgstr ""
-#: templates/generic/bulk_import.html:181
+#: netbox/templates/generic/bulk_import.html:181
msgid "Format: YYYY-MM-DD"
msgstr ""
-#: templates/generic/bulk_import.html:183
+#: netbox/templates/generic/bulk_import.html:183
msgid "Specify true or false"
msgstr ""
-#: templates/generic/bulk_import.html:195
+#: netbox/templates/generic/bulk_import.html:195
msgid "Required fields must be specified for all objects."
msgstr ""
-#: templates/generic/bulk_import.html:201
+#: netbox/templates/generic/bulk_import.html:201
#, python-format
msgid ""
"Related objects may be referenced by any unique attribute. For example, "
"%(example)s
would identify a VRF by its route distinguisher."
msgstr ""
-#: templates/generic/bulk_remove.html:28
+#: netbox/templates/generic/bulk_remove.html:28
msgid "Bulk Remove"
msgstr ""
-#: templates/generic/bulk_remove.html:42
+#: netbox/templates/generic/bulk_remove.html:42
msgid "Confirm Bulk Removal"
msgstr ""
-#: templates/generic/bulk_remove.html:43
+#: netbox/templates/generic/bulk_remove.html:43
#, python-format
msgid ""
"The following operation will remove %(count)s %(obj_type_plural)s from "
@@ -11937,416 +12558,418 @@ msgid ""
"removed and confirm below."
msgstr ""
-#: templates/generic/bulk_remove.html:64
+#: netbox/templates/generic/bulk_remove.html:64
#, python-format
msgid "Remove these %(count)s %(obj_type_plural)s"
msgstr ""
-#: templates/generic/bulk_rename.html:20
+#: netbox/templates/generic/bulk_rename.html:20
msgid "Renaming"
msgstr ""
-#: templates/generic/bulk_rename.html:27
+#: netbox/templates/generic/bulk_rename.html:27
msgid "Bulk Rename"
msgstr ""
-#: templates/generic/bulk_rename.html:39
+#: netbox/templates/generic/bulk_rename.html:39
msgid "Current Name"
msgstr ""
-#: templates/generic/bulk_rename.html:40
+#: netbox/templates/generic/bulk_rename.html:40
msgid "New Name"
msgstr ""
-#: templates/generic/bulk_rename.html:64
-#: utilities/templates/widgets/markdown_input.html:11
+#: netbox/templates/generic/bulk_rename.html:64
+#: netbox/utilities/templates/widgets/markdown_input.html:11
msgid "Preview"
msgstr ""
-#: templates/generic/confirmation_form.html:16
+#: netbox/templates/generic/confirmation_form.html:16
msgid "Are you sure"
msgstr ""
-#: templates/generic/confirmation_form.html:20
+#: netbox/templates/generic/confirmation_form.html:20
msgid "Confirm"
msgstr ""
-#: templates/generic/object_children.html:47
-#: utilities/templates/buttons/bulk_edit.html:4
+#: netbox/templates/generic/object_children.html:47
+#: netbox/utilities/templates/buttons/bulk_edit.html:4
msgid "Edit Selected"
msgstr ""
-#: templates/generic/object_children.html:61
-#: utilities/templates/buttons/bulk_delete.html:4
+#: netbox/templates/generic/object_children.html:61
+#: netbox/utilities/templates/buttons/bulk_delete.html:4
msgid "Delete Selected"
msgstr ""
-#: templates/generic/object_edit.html:24
+#: netbox/templates/generic/object_edit.html:24
#, python-format
msgid "Add a new %(object_type)s"
msgstr ""
-#: templates/generic/object_edit.html:35
+#: netbox/templates/generic/object_edit.html:35
msgid "View model documentation"
msgstr ""
-#: templates/generic/object_edit.html:36
+#: netbox/templates/generic/object_edit.html:36
msgid "Help"
msgstr ""
-#: templates/generic/object_edit.html:83
+#: netbox/templates/generic/object_edit.html:83
msgid "Create & Add Another"
msgstr ""
-#: templates/generic/object_list.html:57
+#: netbox/templates/generic/object_list.html:57
msgid "Filters"
msgstr ""
-#: templates/generic/object_list.html:96
+#: netbox/templates/generic/object_list.html:96
#, python-format
msgid ""
"Select all %(count)s "
"%(object_type_plural)s matching query"
msgstr ""
-#: templates/home.html:15
+#: netbox/templates/home.html:15
msgid "New Release Available"
msgstr ""
-#: templates/home.html:16
+#: netbox/templates/home.html:16
msgid "is available"
msgstr ""
-#: templates/home.html:18
+#: netbox/templates/home.html:18
msgctxt "Document title"
msgid "Upgrade Instructions"
msgstr ""
-#: templates/home.html:40
+#: netbox/templates/home.html:40
msgid "Unlock Dashboard"
msgstr ""
-#: templates/home.html:49
+#: netbox/templates/home.html:49
msgid "Lock Dashboard"
msgstr ""
-#: templates/home.html:60
+#: netbox/templates/home.html:60
msgid "Add Widget"
msgstr ""
-#: templates/home.html:63
+#: netbox/templates/home.html:63
msgid "Save Layout"
msgstr ""
-#: templates/htmx/delete_form.html:7
+#: netbox/templates/htmx/delete_form.html:7
msgid "Confirm Deletion"
msgstr ""
-#: templates/htmx/delete_form.html:11
+#: netbox/templates/htmx/delete_form.html:11
#, python-format
msgid ""
"Are you sure you want to delete "
"%(object_type)s %(object)s?"
msgstr ""
-#: templates/htmx/delete_form.html:17
+#: netbox/templates/htmx/delete_form.html:17
msgid "The following objects will be deleted as a result of this action."
msgstr ""
-#: templates/htmx/object_selector.html:5
+#: netbox/templates/htmx/object_selector.html:5
msgid "Select"
msgstr ""
-#: templates/inc/filter_list.html:42
-#: utilities/templates/helpers/table_config_form.html:39
+#: netbox/templates/inc/filter_list.html:42
+#: netbox/utilities/templates/helpers/table_config_form.html:39
msgid "Reset"
msgstr ""
-#: templates/inc/missing_prerequisites.html:8
+#: netbox/templates/inc/missing_prerequisites.html:8
#, python-format
msgid ""
"Before you can add a %(model)s you must first create a "
"%(prerequisite_model)s."
msgstr ""
-#: templates/inc/paginator.html:15
+#: netbox/templates/inc/paginator.html:15
msgid "Page selection"
msgstr ""
-#: templates/inc/paginator.html:75
+#: netbox/templates/inc/paginator.html:75
#, python-format
msgid "Showing %(start)s-%(end)s of %(total)s"
msgstr ""
-#: templates/inc/paginator.html:82
+#: netbox/templates/inc/paginator.html:82
msgid "Pagination options"
msgstr ""
-#: templates/inc/paginator.html:86
+#: netbox/templates/inc/paginator.html:86
msgid "Per Page"
msgstr ""
-#: templates/inc/panels/image_attachments.html:10
+#: netbox/templates/inc/panels/image_attachments.html:10
msgid "Attach an image"
msgstr ""
-#: templates/inc/panels/related_objects.html:5
+#: netbox/templates/inc/panels/related_objects.html:5
msgid "Related Objects"
msgstr ""
-#: templates/inc/panels/tags.html:11
+#: netbox/templates/inc/panels/tags.html:11
msgid "No tags assigned"
msgstr ""
-#: templates/inc/sync_warning.html:10
+#: netbox/templates/inc/sync_warning.html:10
msgid "Data is out of sync with upstream file"
msgstr ""
-#: templates/inc/user_menu.html:23
+#: netbox/templates/inc/user_menu.html:23
msgid "Django Admin"
msgstr ""
-#: templates/inc/user_menu.html:40
+#: netbox/templates/inc/user_menu.html:40
msgid "Log Out"
msgstr ""
-#: templates/inc/user_menu.html:47 templates/login.html:36
+#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36
msgid "Log In"
msgstr ""
-#: templates/ipam/aggregate.html:14 templates/ipam/ipaddress.html:14
-#: templates/ipam/iprange.html:13 templates/ipam/prefix.html:15
+#: netbox/templates/ipam/aggregate.html:14
+#: netbox/templates/ipam/ipaddress.html:14
+#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15
msgid "Family"
msgstr ""
-#: templates/ipam/aggregate.html:39
+#: netbox/templates/ipam/aggregate.html:39
msgid "Date Added"
msgstr ""
-#: templates/ipam/aggregate/prefixes.html:8
-#: templates/ipam/prefix/prefixes.html:8 templates/ipam/role.html:10
+#: netbox/templates/ipam/aggregate/prefixes.html:8
+#: netbox/templates/ipam/prefix/prefixes.html:8
+#: netbox/templates/ipam/role.html:10
msgid "Add Prefix"
msgstr ""
-#: templates/ipam/asn.html:23
+#: netbox/templates/ipam/asn.html:23
msgid "AS Number"
msgstr ""
-#: templates/ipam/fhrpgroup.html:52
+#: netbox/templates/ipam/fhrpgroup.html:52
msgid "Authentication Type"
msgstr ""
-#: templates/ipam/fhrpgroup.html:56
+#: netbox/templates/ipam/fhrpgroup.html:56
msgid "Authentication Key"
msgstr ""
-#: templates/ipam/fhrpgroup.html:69
+#: netbox/templates/ipam/fhrpgroup.html:69
msgid "Virtual IP Addresses"
msgstr ""
-#: templates/ipam/inc/ipaddress_edit_header.html:13
+#: netbox/templates/ipam/inc/ipaddress_edit_header.html:13
msgid "Assign IP"
msgstr ""
-#: templates/ipam/inc/ipaddress_edit_header.html:19
+#: netbox/templates/ipam/inc/ipaddress_edit_header.html:19
msgid "Bulk Create"
msgstr ""
-#: templates/ipam/inc/panels/fhrp_groups.html:10
+#: netbox/templates/ipam/inc/panels/fhrp_groups.html:10
msgid "Create Group"
msgstr ""
-#: templates/ipam/inc/panels/fhrp_groups.html:15
+#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15
msgid "Assign Group"
msgstr ""
-#: templates/ipam/inc/panels/fhrp_groups.html:25
+#: netbox/templates/ipam/inc/panels/fhrp_groups.html:25
msgid "Virtual IPs"
msgstr ""
-#: templates/ipam/inc/toggle_available.html:7
+#: netbox/templates/ipam/inc/toggle_available.html:7
msgid "Show Assigned"
msgstr ""
-#: templates/ipam/inc/toggle_available.html:10
+#: netbox/templates/ipam/inc/toggle_available.html:10
msgid "Show Available"
msgstr ""
-#: templates/ipam/inc/toggle_available.html:13
+#: netbox/templates/ipam/inc/toggle_available.html:13
msgid "Show All"
msgstr ""
-#: templates/ipam/ipaddress.html:23 templates/ipam/iprange.html:45
-#: templates/ipam/prefix.html:24
+#: netbox/templates/ipam/ipaddress.html:23
+#: netbox/templates/ipam/iprange.html:45 netbox/templates/ipam/prefix.html:24
msgid "Global"
msgstr ""
-#: templates/ipam/ipaddress.html:85
+#: netbox/templates/ipam/ipaddress.html:85
msgid "NAT (outside)"
msgstr ""
-#: templates/ipam/ipaddress_assign.html:8
+#: netbox/templates/ipam/ipaddress_assign.html:8
msgid "Assign an IP Address"
msgstr ""
-#: templates/ipam/ipaddress_assign.html:22
+#: netbox/templates/ipam/ipaddress_assign.html:22
msgid "Select IP Address"
msgstr ""
-#: templates/ipam/ipaddress_assign.html:35
+#: netbox/templates/ipam/ipaddress_assign.html:35
msgid "Search Results"
msgstr ""
-#: templates/ipam/ipaddress_bulk_add.html:6
+#: netbox/templates/ipam/ipaddress_bulk_add.html:6
msgid "Bulk Add IP Addresses"
msgstr ""
-#: templates/ipam/iprange.html:17
+#: netbox/templates/ipam/iprange.html:17
msgid "Starting Address"
msgstr ""
-#: templates/ipam/iprange.html:21
+#: netbox/templates/ipam/iprange.html:21
msgid "Ending Address"
msgstr ""
-#: templates/ipam/iprange.html:33 templates/ipam/prefix.html:110
+#: netbox/templates/ipam/iprange.html:33 netbox/templates/ipam/prefix.html:110
msgid "Marked fully utilized"
msgstr ""
-#: templates/ipam/prefix.html:99
+#: netbox/templates/ipam/prefix.html:99
msgid "Addressing Details"
msgstr ""
-#: templates/ipam/prefix.html:118
+#: netbox/templates/ipam/prefix.html:118
msgid "Child IPs"
msgstr ""
-#: templates/ipam/prefix.html:126
+#: netbox/templates/ipam/prefix.html:126
msgid "Available IPs"
msgstr ""
-#: templates/ipam/prefix.html:138
+#: netbox/templates/ipam/prefix.html:138
msgid "First available IP"
msgstr ""
-#: templates/ipam/prefix.html:179
+#: netbox/templates/ipam/prefix.html:179
msgid "Prefix Details"
msgstr ""
-#: templates/ipam/prefix.html:185
+#: netbox/templates/ipam/prefix.html:185
msgid "Network Address"
msgstr ""
-#: templates/ipam/prefix.html:189
+#: netbox/templates/ipam/prefix.html:189
msgid "Network Mask"
msgstr ""
-#: templates/ipam/prefix.html:193
+#: netbox/templates/ipam/prefix.html:193
msgid "Wildcard Mask"
msgstr ""
-#: templates/ipam/prefix.html:197
+#: netbox/templates/ipam/prefix.html:197
msgid "Broadcast Address"
msgstr ""
-#: templates/ipam/prefix/ip_ranges.html:7
+#: netbox/templates/ipam/prefix/ip_ranges.html:7
msgid "Add IP Range"
msgstr ""
-#: templates/ipam/prefix_list.html:7
+#: netbox/templates/ipam/prefix_list.html:7
msgid "Hide Depth Indicators"
msgstr ""
-#: templates/ipam/prefix_list.html:11
+#: netbox/templates/ipam/prefix_list.html:11
msgid "Max Depth"
msgstr ""
-#: templates/ipam/prefix_list.html:28
+#: netbox/templates/ipam/prefix_list.html:28
msgid "Max Length"
msgstr ""
-#: templates/ipam/rir.html:10
+#: netbox/templates/ipam/rir.html:10
msgid "Add Aggregate"
msgstr ""
-#: templates/ipam/routetarget.html:38
+#: netbox/templates/ipam/routetarget.html:38
msgid "Importing VRFs"
msgstr ""
-#: templates/ipam/routetarget.html:44
+#: netbox/templates/ipam/routetarget.html:44
msgid "Exporting VRFs"
msgstr ""
-#: templates/ipam/routetarget.html:52
+#: netbox/templates/ipam/routetarget.html:52
msgid "Importing L2VPNs"
msgstr ""
-#: templates/ipam/routetarget.html:58
+#: netbox/templates/ipam/routetarget.html:58
msgid "Exporting L2VPNs"
msgstr ""
-#: templates/ipam/vlan.html:88
+#: netbox/templates/ipam/vlan.html:88
msgid "Add a Prefix"
msgstr ""
-#: templates/ipam/vlangroup.html:18
+#: netbox/templates/ipam/vlangroup.html:18
msgid "Add VLAN"
msgstr ""
-#: templates/ipam/vlangroup.html:42
+#: netbox/templates/ipam/vlangroup.html:42
msgid "Permitted VIDs"
msgstr ""
-#: templates/ipam/vrf.html:16
+#: netbox/templates/ipam/vrf.html:16
msgid "Route Distinguisher"
msgstr ""
-#: templates/ipam/vrf.html:29
+#: netbox/templates/ipam/vrf.html:29
msgid "Unique IP Space"
msgstr ""
-#: templates/login.html:14
+#: netbox/templates/login.html:14
msgid "NetBox logo"
msgstr ""
-#: templates/login.html:27
-#: utilities/templates/form_helpers/render_errors.html:7
+#: netbox/templates/login.html:27
+#: netbox/utilities/templates/form_helpers/render_errors.html:7
msgid "Errors"
msgstr ""
-#: templates/login.html:67
+#: netbox/templates/login.html:67
msgid "Sign In"
msgstr ""
-#: templates/login.html:75
+#: netbox/templates/login.html:75
msgctxt "Denotes an alternative option"
msgid "Or"
msgstr ""
-#: templates/media_failure.html:7
+#: netbox/templates/media_failure.html:7
msgid "Static Media Failure - NetBox"
msgstr ""
-#: templates/media_failure.html:21
+#: netbox/templates/media_failure.html:21
msgid "Static Media Failure"
msgstr ""
-#: templates/media_failure.html:23
+#: netbox/templates/media_failure.html:23
msgid "The following static media file failed to load"
msgstr ""
-#: templates/media_failure.html:26
+#: netbox/templates/media_failure.html:26
msgid "Check the following"
msgstr ""
-#: templates/media_failure.html:29
+#: netbox/templates/media_failure.html:29
msgid ""
"manage.py collectstatic
was run during the most recent upgrade. "
"This installs the most recent iteration of each static file into the static "
"root path."
msgstr ""
-#: templates/media_failure.html:35
+#: netbox/templates/media_failure.html:35
#, python-format
msgid ""
"The HTTP service (e.g. nginx or Apache) is configured to serve files from "
@@ -12354,1822 +12977,1856 @@ msgid ""
"installation documentation for further guidance."
msgstr ""
-#: templates/media_failure.html:47
+#: netbox/templates/media_failure.html:47
#, python-format
msgid ""
"The file %(filename)s
exists in the static root directory and "
"is readable by the HTTP server."
msgstr ""
-#: templates/media_failure.html:55
+#: netbox/templates/media_failure.html:55
#, python-format
msgid ""
"Click here to attempt loading NetBox again."
msgstr ""
-#: templates/tenancy/contact.html:18 tenancy/filtersets.py:148
-#: tenancy/forms/bulk_edit.py:137 tenancy/forms/filtersets.py:102
-#: tenancy/forms/forms.py:56 tenancy/forms/model_forms.py:106
-#: tenancy/forms/model_forms.py:130 tenancy/tables/contacts.py:98
+#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:148
+#: netbox/tenancy/forms/bulk_edit.py:137 netbox/tenancy/forms/filtersets.py:102
+#: netbox/tenancy/forms/forms.py:56 netbox/tenancy/forms/model_forms.py:106
+#: netbox/tenancy/forms/model_forms.py:130 netbox/tenancy/tables/contacts.py:98
msgid "Contact"
msgstr ""
-#: templates/tenancy/contact.html:29 tenancy/forms/bulk_edit.py:99
+#: netbox/templates/tenancy/contact.html:29
+#: netbox/tenancy/forms/bulk_edit.py:99
msgid "Title"
msgstr ""
-#: templates/tenancy/contact.html:33 tenancy/forms/bulk_edit.py:104
-#: tenancy/tables/contacts.py:64
+#: netbox/templates/tenancy/contact.html:33
+#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/tables/contacts.py:64
msgid "Phone"
msgstr ""
-#: templates/tenancy/contact.html:84 tenancy/tables/contacts.py:73
+#: netbox/templates/tenancy/contact.html:84
+#: netbox/tenancy/tables/contacts.py:73
msgid "Assignments"
msgstr ""
-#: templates/tenancy/contactgroup.html:18 tenancy/forms/forms.py:66
-#: tenancy/forms/model_forms.py:75
+#: netbox/templates/tenancy/contactgroup.html:18
+#: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75
msgid "Contact Group"
msgstr ""
-#: templates/tenancy/contactgroup.html:50
+#: netbox/templates/tenancy/contactgroup.html:50
msgid "Add Contact Group"
msgstr ""
-#: templates/tenancy/contactrole.html:15 tenancy/filtersets.py:153
-#: tenancy/forms/forms.py:61 tenancy/forms/model_forms.py:87
+#: netbox/templates/tenancy/contactrole.html:15
+#: netbox/tenancy/filtersets.py:153 netbox/tenancy/forms/forms.py:61
+#: netbox/tenancy/forms/model_forms.py:87
msgid "Contact Role"
msgstr ""
-#: templates/tenancy/object_contacts.html:9
+#: netbox/templates/tenancy/object_contacts.html:9
msgid "Add a contact"
msgstr ""
-#: templates/tenancy/tenantgroup.html:17
+#: netbox/templates/tenancy/tenantgroup.html:17
msgid "Add Tenant"
msgstr ""
-#: templates/tenancy/tenantgroup.html:26 tenancy/forms/model_forms.py:32
-#: tenancy/tables/columns.py:51 tenancy/tables/columns.py:61
+#: netbox/templates/tenancy/tenantgroup.html:26
+#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:51
+#: netbox/tenancy/tables/columns.py:61
msgid "Tenant Group"
msgstr ""
-#: templates/tenancy/tenantgroup.html:59
+#: netbox/templates/tenancy/tenantgroup.html:59
msgid "Add Tenant Group"
msgstr ""
-#: templates/users/group.html:39 templates/users/user.html:63
+#: netbox/templates/users/group.html:39 netbox/templates/users/user.html:63
msgid "Assigned Permissions"
msgstr ""
-#: templates/users/objectpermission.html:6
-#: templates/users/objectpermission.html:14 users/forms/filtersets.py:67
+#: netbox/templates/users/objectpermission.html:6
+#: netbox/templates/users/objectpermission.html:14
+#: netbox/users/forms/filtersets.py:67
msgid "Permission"
msgstr ""
-#: templates/users/objectpermission.html:34
+#: netbox/templates/users/objectpermission.html:34
msgid "View"
msgstr ""
-#: templates/users/objectpermission.html:52 users/forms/model_forms.py:312
+#: netbox/templates/users/objectpermission.html:52
+#: netbox/users/forms/model_forms.py:312
msgid "Constraints"
msgstr ""
-#: templates/users/objectpermission.html:72
+#: netbox/templates/users/objectpermission.html:72
msgid "Assigned Users"
msgstr ""
-#: templates/virtualization/cluster.html:52
+#: netbox/templates/virtualization/cluster.html:52
msgid "Allocated Resources"
msgstr ""
-#: templates/virtualization/cluster.html:55
-#: templates/virtualization/virtualmachine.html:121
+#: netbox/templates/virtualization/cluster.html:55
+#: netbox/templates/virtualization/virtualmachine.html:121
msgid "Virtual CPUs"
msgstr ""
-#: templates/virtualization/cluster.html:59
-#: templates/virtualization/virtualmachine.html:125
+#: netbox/templates/virtualization/cluster.html:59
+#: netbox/templates/virtualization/virtualmachine.html:125
msgid "Memory"
msgstr ""
-#: templates/virtualization/cluster.html:69
-#: templates/virtualization/virtualmachine.html:136
+#: netbox/templates/virtualization/cluster.html:69
+#: netbox/templates/virtualization/virtualmachine.html:136
msgid "Disk Space"
msgstr ""
-#: templates/virtualization/cluster.html:72
-#: templates/virtualization/virtualdisk.html:32
-#: templates/virtualization/virtualmachine.html:140
+#: netbox/templates/virtualization/cluster.html:72
+#: netbox/templates/virtualization/virtualdisk.html:32
+#: netbox/templates/virtualization/virtualmachine.html:140
msgctxt "Abbreviation for gigabyte"
msgid "GB"
msgstr ""
-#: templates/virtualization/cluster/base.html:18
+#: netbox/templates/virtualization/cluster/base.html:18
msgid "Add Virtual Machine"
msgstr ""
-#: templates/virtualization/cluster/base.html:24
+#: netbox/templates/virtualization/cluster/base.html:24
msgid "Assign Device"
msgstr ""
-#: templates/virtualization/cluster/devices.html:10
+#: netbox/templates/virtualization/cluster/devices.html:10
msgid "Remove Selected"
msgstr ""
-#: templates/virtualization/cluster_add_devices.html:9
+#: netbox/templates/virtualization/cluster_add_devices.html:9
#, python-format
msgid "Add Device to Cluster %(cluster)s"
msgstr ""
-#: templates/virtualization/cluster_add_devices.html:23
+#: netbox/templates/virtualization/cluster_add_devices.html:23
msgid "Device Selection"
msgstr ""
-#: templates/virtualization/cluster_add_devices.html:31
+#: netbox/templates/virtualization/cluster_add_devices.html:31
msgid "Add Devices"
msgstr ""
-#: templates/virtualization/clustergroup.html:10
-#: templates/virtualization/clustertype.html:10
+#: netbox/templates/virtualization/clustergroup.html:10
+#: netbox/templates/virtualization/clustertype.html:10
msgid "Add Cluster"
msgstr ""
-#: templates/virtualization/clustergroup.html:19
-#: virtualization/forms/model_forms.py:50
+#: netbox/templates/virtualization/clustergroup.html:19
+#: netbox/virtualization/forms/model_forms.py:50
msgid "Cluster Group"
msgstr ""
-#: templates/virtualization/clustertype.html:19
-#: templates/virtualization/virtualmachine.html:106
-#: virtualization/forms/model_forms.py:36
+#: netbox/templates/virtualization/clustertype.html:19
+#: netbox/templates/virtualization/virtualmachine.html:106
+#: netbox/virtualization/forms/model_forms.py:36
msgid "Cluster Type"
msgstr ""
-#: templates/virtualization/virtualdisk.html:18
+#: netbox/templates/virtualization/virtualdisk.html:18
msgid "Virtual Disk"
msgstr ""
-#: templates/virtualization/virtualmachine.html:118
-#: virtualization/forms/bulk_edit.py:190
-#: virtualization/forms/model_forms.py:224
+#: netbox/templates/virtualization/virtualmachine.html:118
+#: netbox/virtualization/forms/bulk_edit.py:190
+#: netbox/virtualization/forms/model_forms.py:224
msgid "Resources"
msgstr ""
-#: templates/virtualization/virtualmachine.html:174
+#: netbox/templates/virtualization/virtualmachine.html:174
msgid "Add Virtual Disk"
msgstr ""
-#: templates/vpn/ikepolicy.html:10 templates/vpn/ipsecprofile.html:33
-#: vpn/tables/crypto.py:166
+#: netbox/templates/vpn/ikepolicy.html:10
+#: netbox/templates/vpn/ipsecprofile.html:33 netbox/vpn/tables/crypto.py:166
msgid "IKE Policy"
msgstr ""
-#: templates/vpn/ikepolicy.html:21
+#: netbox/templates/vpn/ikepolicy.html:21
msgid "IKE Version"
msgstr ""
-#: templates/vpn/ikepolicy.html:29
+#: netbox/templates/vpn/ikepolicy.html:29
msgid "Pre-Shared Key"
msgstr ""
-#: templates/vpn/ikepolicy.html:33
-#: templates/wireless/inc/authentication_attrs.html:20
+#: netbox/templates/vpn/ikepolicy.html:33
+#: netbox/templates/wireless/inc/authentication_attrs.html:20
msgid "Show Secret"
msgstr ""
-#: templates/vpn/ikepolicy.html:57 templates/vpn/ipsecpolicy.html:45
-#: templates/vpn/ipsecprofile.html:52 templates/vpn/ipsecprofile.html:77
-#: vpn/forms/model_forms.py:316 vpn/forms/model_forms.py:352
-#: vpn/tables/crypto.py:68 vpn/tables/crypto.py:134
+#: netbox/templates/vpn/ikepolicy.html:57
+#: netbox/templates/vpn/ipsecpolicy.html:45
+#: netbox/templates/vpn/ipsecprofile.html:52
+#: netbox/templates/vpn/ipsecprofile.html:77
+#: netbox/vpn/forms/model_forms.py:316 netbox/vpn/forms/model_forms.py:352
+#: netbox/vpn/tables/crypto.py:68 netbox/vpn/tables/crypto.py:134
msgid "Proposals"
msgstr ""
-#: templates/vpn/ikeproposal.html:10
+#: netbox/templates/vpn/ikeproposal.html:10
msgid "IKE Proposal"
msgstr ""
-#: templates/vpn/ikeproposal.html:21 vpn/forms/bulk_edit.py:97
-#: vpn/forms/bulk_import.py:145 vpn/forms/filtersets.py:101
+#: netbox/templates/vpn/ikeproposal.html:21 netbox/vpn/forms/bulk_edit.py:97
+#: netbox/vpn/forms/bulk_import.py:145 netbox/vpn/forms/filtersets.py:101
msgid "Authentication method"
msgstr ""
-#: templates/vpn/ikeproposal.html:25 templates/vpn/ipsecproposal.html:21
-#: vpn/forms/bulk_edit.py:102 vpn/forms/bulk_edit.py:172
-#: vpn/forms/bulk_import.py:149 vpn/forms/bulk_import.py:195
-#: vpn/forms/filtersets.py:106 vpn/forms/filtersets.py:154
+#: netbox/templates/vpn/ikeproposal.html:25
+#: netbox/templates/vpn/ipsecproposal.html:21 netbox/vpn/forms/bulk_edit.py:102
+#: netbox/vpn/forms/bulk_edit.py:172 netbox/vpn/forms/bulk_import.py:149
+#: netbox/vpn/forms/bulk_import.py:195 netbox/vpn/forms/filtersets.py:106
+#: netbox/vpn/forms/filtersets.py:154
msgid "Encryption algorithm"
msgstr ""
-#: templates/vpn/ikeproposal.html:29 templates/vpn/ipsecproposal.html:25
-#: vpn/forms/bulk_edit.py:107 vpn/forms/bulk_edit.py:177
-#: vpn/forms/bulk_import.py:153 vpn/forms/bulk_import.py:200
-#: vpn/forms/filtersets.py:111 vpn/forms/filtersets.py:159
+#: netbox/templates/vpn/ikeproposal.html:29
+#: netbox/templates/vpn/ipsecproposal.html:25 netbox/vpn/forms/bulk_edit.py:107
+#: netbox/vpn/forms/bulk_edit.py:177 netbox/vpn/forms/bulk_import.py:153
+#: netbox/vpn/forms/bulk_import.py:200 netbox/vpn/forms/filtersets.py:111
+#: netbox/vpn/forms/filtersets.py:159
msgid "Authentication algorithm"
msgstr ""
-#: templates/vpn/ikeproposal.html:33
+#: netbox/templates/vpn/ikeproposal.html:33
msgid "DH group"
msgstr ""
-#: templates/vpn/ikeproposal.html:37 templates/vpn/ipsecproposal.html:29
-#: vpn/forms/bulk_edit.py:182 vpn/models/crypto.py:146
+#: netbox/templates/vpn/ikeproposal.html:37
+#: netbox/templates/vpn/ipsecproposal.html:29 netbox/vpn/forms/bulk_edit.py:182
+#: netbox/vpn/models/crypto.py:146
msgid "SA lifetime (seconds)"
msgstr ""
-#: templates/vpn/ipsecpolicy.html:10 templates/vpn/ipsecprofile.html:66
-#: vpn/tables/crypto.py:170
+#: netbox/templates/vpn/ipsecpolicy.html:10
+#: netbox/templates/vpn/ipsecprofile.html:66 netbox/vpn/tables/crypto.py:170
msgid "IPSec Policy"
msgstr ""
-#: templates/vpn/ipsecpolicy.html:21 vpn/forms/bulk_edit.py:210
-#: vpn/models/crypto.py:193
+#: netbox/templates/vpn/ipsecpolicy.html:21 netbox/vpn/forms/bulk_edit.py:210
+#: netbox/vpn/models/crypto.py:193
msgid "PFS group"
msgstr ""
-#: templates/vpn/ipsecprofile.html:10 vpn/forms/model_forms.py:54
+#: netbox/templates/vpn/ipsecprofile.html:10 netbox/vpn/forms/model_forms.py:54
msgid "IPSec Profile"
msgstr ""
-#: templates/vpn/ipsecprofile.html:89 vpn/tables/crypto.py:137
+#: netbox/templates/vpn/ipsecprofile.html:89 netbox/vpn/tables/crypto.py:137
msgid "PFS Group"
msgstr ""
-#: templates/vpn/ipsecproposal.html:10
+#: netbox/templates/vpn/ipsecproposal.html:10
msgid "IPSec Proposal"
msgstr ""
-#: templates/vpn/ipsecproposal.html:33 vpn/forms/bulk_edit.py:186
-#: vpn/models/crypto.py:152
+#: netbox/templates/vpn/ipsecproposal.html:33 netbox/vpn/forms/bulk_edit.py:186
+#: netbox/vpn/models/crypto.py:152
msgid "SA lifetime (KB)"
msgstr ""
-#: templates/vpn/l2vpn.html:11 templates/vpn/l2vpntermination.html:9
+#: netbox/templates/vpn/l2vpn.html:11
+#: netbox/templates/vpn/l2vpntermination.html:9
msgid "L2VPN Attributes"
msgstr ""
-#: templates/vpn/l2vpn.html:60 templates/vpn/tunnel.html:76
+#: netbox/templates/vpn/l2vpn.html:60 netbox/templates/vpn/tunnel.html:76
msgid "Add a Termination"
msgstr ""
-#: templates/vpn/tunnel.html:9
+#: netbox/templates/vpn/tunnel.html:9
msgid "Add Termination"
msgstr ""
-#: templates/vpn/tunnel.html:37 vpn/forms/bulk_edit.py:49
-#: vpn/forms/bulk_import.py:48 vpn/forms/filtersets.py:57
+#: netbox/templates/vpn/tunnel.html:37 netbox/vpn/forms/bulk_edit.py:49
+#: netbox/vpn/forms/bulk_import.py:48 netbox/vpn/forms/filtersets.py:57
msgid "Encapsulation"
msgstr ""
-#: templates/vpn/tunnel.html:41 vpn/forms/bulk_edit.py:55
-#: vpn/forms/bulk_import.py:53 vpn/forms/filtersets.py:64
-#: vpn/models/crypto.py:250 vpn/tables/tunnels.py:51
+#: netbox/templates/vpn/tunnel.html:41 netbox/vpn/forms/bulk_edit.py:55
+#: netbox/vpn/forms/bulk_import.py:53 netbox/vpn/forms/filtersets.py:64
+#: netbox/vpn/models/crypto.py:250 netbox/vpn/tables/tunnels.py:51
msgid "IPSec profile"
msgstr ""
-#: templates/vpn/tunnel.html:45 vpn/forms/bulk_edit.py:69
-#: vpn/forms/filtersets.py:68
+#: netbox/templates/vpn/tunnel.html:45 netbox/vpn/forms/bulk_edit.py:69
+#: netbox/vpn/forms/filtersets.py:68
msgid "Tunnel ID"
msgstr ""
-#: templates/vpn/tunnelgroup.html:14
+#: netbox/templates/vpn/tunnelgroup.html:14
msgid "Add Tunnel"
msgstr ""
-#: templates/vpn/tunnelgroup.html:23 vpn/forms/model_forms.py:36
-#: vpn/forms/model_forms.py:49
+#: netbox/templates/vpn/tunnelgroup.html:23 netbox/vpn/forms/model_forms.py:36
+#: netbox/vpn/forms/model_forms.py:49
msgid "Tunnel Group"
msgstr ""
-#: templates/vpn/tunneltermination.html:10
+#: netbox/templates/vpn/tunneltermination.html:10
msgid "Tunnel Termination"
msgstr ""
-#: templates/vpn/tunneltermination.html:35 vpn/forms/bulk_import.py:107
-#: vpn/forms/model_forms.py:102 vpn/forms/model_forms.py:138
-#: vpn/forms/model_forms.py:247 vpn/tables/tunnels.py:101
+#: netbox/templates/vpn/tunneltermination.html:35
+#: netbox/vpn/forms/bulk_import.py:107 netbox/vpn/forms/model_forms.py:102
+#: netbox/vpn/forms/model_forms.py:138 netbox/vpn/forms/model_forms.py:247
+#: netbox/vpn/tables/tunnels.py:101
msgid "Outside IP"
msgstr ""
-#: templates/vpn/tunneltermination.html:51
+#: netbox/templates/vpn/tunneltermination.html:51
msgid "Peer Terminations"
msgstr ""
-#: templates/wireless/inc/authentication_attrs.html:12
+#: netbox/templates/wireless/inc/authentication_attrs.html:12
msgid "Cipher"
msgstr ""
-#: templates/wireless/inc/authentication_attrs.html:16
+#: netbox/templates/wireless/inc/authentication_attrs.html:16
msgid "PSK"
msgstr ""
-#: templates/wireless/inc/wirelesslink_interface.html:35
-#: templates/wireless/inc/wirelesslink_interface.html:45
+#: netbox/templates/wireless/inc/wirelesslink_interface.html:35
+#: netbox/templates/wireless/inc/wirelesslink_interface.html:45
msgctxt "Abbreviation for megahertz"
msgid "MHz"
msgstr ""
-#: templates/wireless/wirelesslan.html:57
+#: netbox/templates/wireless/wirelesslan.html:57
msgid "Attached Interfaces"
msgstr ""
-#: templates/wireless/wirelesslangroup.html:17
+#: netbox/templates/wireless/wirelesslangroup.html:17
msgid "Add Wireless LAN"
msgstr ""
-#: templates/wireless/wirelesslangroup.html:26 wireless/forms/model_forms.py:28
+#: netbox/templates/wireless/wirelesslangroup.html:26
+#: netbox/wireless/forms/model_forms.py:28
msgid "Wireless LAN Group"
msgstr ""
-#: templates/wireless/wirelesslangroup.html:59
+#: netbox/templates/wireless/wirelesslangroup.html:59
msgid "Add Wireless LAN Group"
msgstr ""
-#: templates/wireless/wirelesslink.html:14
+#: netbox/templates/wireless/wirelesslink.html:14
msgid "Link Properties"
msgstr ""
-#: tenancy/choices.py:19
+#: netbox/tenancy/choices.py:19
msgid "Tertiary"
msgstr ""
-#: tenancy/choices.py:20
+#: netbox/tenancy/choices.py:20
msgid "Inactive"
msgstr ""
-#: tenancy/filtersets.py:29
+#: netbox/tenancy/filtersets.py:29
msgid "Parent contact group (ID)"
msgstr ""
-#: tenancy/filtersets.py:35
+#: netbox/tenancy/filtersets.py:35
msgid "Parent contact group (slug)"
msgstr ""
-#: tenancy/filtersets.py:41 tenancy/filtersets.py:68 tenancy/filtersets.py:111
+#: netbox/tenancy/filtersets.py:41 netbox/tenancy/filtersets.py:68
+#: netbox/tenancy/filtersets.py:111
msgid "Contact group (ID)"
msgstr ""
-#: tenancy/filtersets.py:48 tenancy/filtersets.py:75 tenancy/filtersets.py:118
+#: netbox/tenancy/filtersets.py:48 netbox/tenancy/filtersets.py:75
+#: netbox/tenancy/filtersets.py:118
msgid "Contact group (slug)"
msgstr ""
-#: tenancy/filtersets.py:105
+#: netbox/tenancy/filtersets.py:105
msgid "Contact (ID)"
msgstr ""
-#: tenancy/filtersets.py:122
+#: netbox/tenancy/filtersets.py:122
msgid "Contact role (ID)"
msgstr ""
-#: tenancy/filtersets.py:128
+#: netbox/tenancy/filtersets.py:128
msgid "Contact role (slug)"
msgstr ""
-#: tenancy/filtersets.py:159
+#: netbox/tenancy/filtersets.py:159
msgid "Contact group"
msgstr ""
-#: tenancy/filtersets.py:170
+#: netbox/tenancy/filtersets.py:170
msgid "Parent tenant group (ID)"
msgstr ""
-#: tenancy/filtersets.py:176
+#: netbox/tenancy/filtersets.py:176
msgid "Parent tenant group (slug)"
msgstr ""
-#: tenancy/filtersets.py:182 tenancy/filtersets.py:202
+#: netbox/tenancy/filtersets.py:182 netbox/tenancy/filtersets.py:202
msgid "Tenant group (ID)"
msgstr ""
-#: tenancy/filtersets.py:235
+#: netbox/tenancy/filtersets.py:235
msgid "Tenant Group (ID)"
msgstr ""
-#: tenancy/filtersets.py:242
+#: netbox/tenancy/filtersets.py:242
msgid "Tenant Group (slug)"
msgstr ""
-#: tenancy/forms/bulk_edit.py:66
+#: netbox/tenancy/forms/bulk_edit.py:66
msgid "Desciption"
msgstr ""
-#: tenancy/forms/bulk_import.py:101
+#: netbox/tenancy/forms/bulk_import.py:101
msgid "Assigned contact"
msgstr ""
-#: tenancy/models/contacts.py:32
+#: netbox/tenancy/models/contacts.py:32
msgid "contact group"
msgstr ""
-#: tenancy/models/contacts.py:33
+#: netbox/tenancy/models/contacts.py:33
msgid "contact groups"
msgstr ""
-#: tenancy/models/contacts.py:48
+#: netbox/tenancy/models/contacts.py:48
msgid "contact role"
msgstr ""
-#: tenancy/models/contacts.py:49
+#: netbox/tenancy/models/contacts.py:49
msgid "contact roles"
msgstr ""
-#: tenancy/models/contacts.py:68
+#: netbox/tenancy/models/contacts.py:68
msgid "title"
msgstr ""
-#: tenancy/models/contacts.py:73
+#: netbox/tenancy/models/contacts.py:73
msgid "phone"
msgstr ""
-#: tenancy/models/contacts.py:78
+#: netbox/tenancy/models/contacts.py:78
msgid "email"
msgstr ""
-#: tenancy/models/contacts.py:87
+#: netbox/tenancy/models/contacts.py:87
msgid "link"
msgstr ""
-#: tenancy/models/contacts.py:103
+#: netbox/tenancy/models/contacts.py:103
msgid "contact"
msgstr ""
-#: tenancy/models/contacts.py:104
+#: netbox/tenancy/models/contacts.py:104
msgid "contacts"
msgstr ""
-#: tenancy/models/contacts.py:153
+#: netbox/tenancy/models/contacts.py:153
msgid "contact assignment"
msgstr ""
-#: tenancy/models/contacts.py:154
+#: netbox/tenancy/models/contacts.py:154
msgid "contact assignments"
msgstr ""
-#: tenancy/models/contacts.py:170
+#: netbox/tenancy/models/contacts.py:170
#, python-brace-format
msgid "Contacts cannot be assigned to this object type ({type})."
msgstr ""
-#: tenancy/models/tenants.py:32
+#: netbox/tenancy/models/tenants.py:32
msgid "tenant group"
msgstr ""
-#: tenancy/models/tenants.py:33
+#: netbox/tenancy/models/tenants.py:33
msgid "tenant groups"
msgstr ""
-#: tenancy/models/tenants.py:70
+#: netbox/tenancy/models/tenants.py:70
msgid "Tenant name must be unique per group."
msgstr ""
-#: tenancy/models/tenants.py:80
+#: netbox/tenancy/models/tenants.py:80
msgid "Tenant slug must be unique per group."
msgstr ""
-#: tenancy/models/tenants.py:88
+#: netbox/tenancy/models/tenants.py:88
msgid "tenant"
msgstr ""
-#: tenancy/models/tenants.py:89
+#: netbox/tenancy/models/tenants.py:89
msgid "tenants"
msgstr ""
-#: tenancy/tables/contacts.py:112
+#: netbox/tenancy/tables/contacts.py:112
msgid "Contact Title"
msgstr ""
-#: tenancy/tables/contacts.py:116
+#: netbox/tenancy/tables/contacts.py:116
msgid "Contact Phone"
msgstr ""
-#: tenancy/tables/contacts.py:120
+#: netbox/tenancy/tables/contacts.py:120
msgid "Contact Email"
msgstr ""
-#: tenancy/tables/contacts.py:124
+#: netbox/tenancy/tables/contacts.py:124
msgid "Contact Address"
msgstr ""
-#: tenancy/tables/contacts.py:128
+#: netbox/tenancy/tables/contacts.py:128
msgid "Contact Link"
msgstr ""
-#: tenancy/tables/contacts.py:132
+#: netbox/tenancy/tables/contacts.py:132
msgid "Contact Description"
msgstr ""
-#: users/filtersets.py:33 users/filtersets.py:68
+#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68
msgid "Permission (ID)"
msgstr ""
-#: users/filtersets.py:63 users/filtersets.py:181
+#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181
msgid "Group (name)"
msgstr ""
-#: users/forms/bulk_edit.py:26
+#: netbox/users/forms/bulk_edit.py:26
msgid "First name"
msgstr ""
-#: users/forms/bulk_edit.py:31
+#: netbox/users/forms/bulk_edit.py:31
msgid "Last name"
msgstr ""
-#: users/forms/bulk_edit.py:43
+#: netbox/users/forms/bulk_edit.py:43
msgid "Staff status"
msgstr ""
-#: users/forms/bulk_edit.py:48
+#: netbox/users/forms/bulk_edit.py:48
msgid "Superuser status"
msgstr ""
-#: users/forms/bulk_import.py:41
+#: netbox/users/forms/bulk_import.py:41
msgid "If no key is provided, one will be generated automatically."
msgstr ""
-#: users/forms/filtersets.py:52 users/tables.py:42
+#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42
msgid "Is Staff"
msgstr ""
-#: users/forms/filtersets.py:59 users/tables.py:45
+#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45
msgid "Is Superuser"
msgstr ""
-#: users/forms/filtersets.py:92 users/tables.py:86
+#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86
msgid "Can View"
msgstr ""
-#: users/forms/filtersets.py:99 users/tables.py:89
+#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89
msgid "Can Add"
msgstr ""
-#: users/forms/filtersets.py:106 users/tables.py:92
+#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92
msgid "Can Change"
msgstr ""
-#: users/forms/filtersets.py:113 users/tables.py:95
+#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95
msgid "Can Delete"
msgstr ""
-#: users/forms/model_forms.py:63
+#: netbox/users/forms/model_forms.py:63
msgid "User Interface"
msgstr ""
-#: users/forms/model_forms.py:115
+#: netbox/users/forms/model_forms.py:115
msgid ""
"Keys must be at least 40 characters in length. Be sure to record "
"your key prior to submitting this form, as it may no longer be "
"accessible once the token has been created."
msgstr ""
-#: users/forms/model_forms.py:127
+#: netbox/users/forms/model_forms.py:127
msgid ""
"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for "
"no restrictions. Example: 10.1.1.0/24,192.168.10.16/32,2001:"
"db8:1::/64
"
msgstr ""
-#: users/forms/model_forms.py:176
+#: netbox/users/forms/model_forms.py:176
msgid "Confirm password"
msgstr ""
-#: users/forms/model_forms.py:179
+#: netbox/users/forms/model_forms.py:179
msgid "Enter the same password as before, for verification."
msgstr ""
-#: users/forms/model_forms.py:228
+#: netbox/users/forms/model_forms.py:228
msgid "Passwords do not match! Please check your input and try again."
msgstr ""
-#: users/forms/model_forms.py:291
+#: netbox/users/forms/model_forms.py:291
msgid "Additional actions"
msgstr ""
-#: users/forms/model_forms.py:294
+#: netbox/users/forms/model_forms.py:294
msgid "Actions granted in addition to those listed above"
msgstr ""
-#: users/forms/model_forms.py:310
+#: netbox/users/forms/model_forms.py:310
msgid "Objects"
msgstr ""
-#: users/forms/model_forms.py:322
+#: netbox/users/forms/model_forms.py:322
msgid ""
"JSON expression of a queryset filter that will return only permitted "
"objects. Leave null to match all objects of this type. A list of multiple "
"objects will result in a logical OR operation."
msgstr ""
-#: users/forms/model_forms.py:361
+#: netbox/users/forms/model_forms.py:361
msgid "At least one action must be selected."
msgstr ""
-#: users/forms/model_forms.py:379
+#: netbox/users/forms/model_forms.py:379
#, python-brace-format
msgid "Invalid filter for {model}: {error}"
msgstr ""
-#: users/models/permissions.py:39
+#: netbox/users/models/permissions.py:39
msgid "The list of actions granted by this permission"
msgstr ""
-#: users/models/permissions.py:44
+#: netbox/users/models/permissions.py:44
msgid "constraints"
msgstr ""
-#: users/models/permissions.py:45
+#: netbox/users/models/permissions.py:45
msgid "Queryset filter matching the applicable objects of the selected type(s)"
msgstr ""
-#: users/models/permissions.py:52
+#: netbox/users/models/permissions.py:52
msgid "permission"
msgstr ""
-#: users/models/permissions.py:53 users/models/users.py:47
+#: netbox/users/models/permissions.py:53 netbox/users/models/users.py:47
msgid "permissions"
msgstr ""
-#: users/models/preferences.py:30 users/models/preferences.py:31
+#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31
msgid "user preferences"
msgstr ""
-#: users/models/preferences.py:98
+#: netbox/users/models/preferences.py:98
#, python-brace-format
msgid "Key '{path}' is a leaf node; cannot assign new keys"
msgstr ""
-#: users/models/preferences.py:110
+#: netbox/users/models/preferences.py:110
#, python-brace-format
msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value"
msgstr ""
-#: users/models/tokens.py:37
+#: netbox/users/models/tokens.py:37
msgid "expires"
msgstr ""
-#: users/models/tokens.py:42
+#: netbox/users/models/tokens.py:42
msgid "last used"
msgstr ""
-#: users/models/tokens.py:47
+#: netbox/users/models/tokens.py:47
msgid "key"
msgstr ""
-#: users/models/tokens.py:53
+#: netbox/users/models/tokens.py:53
msgid "write enabled"
msgstr ""
-#: users/models/tokens.py:55
+#: netbox/users/models/tokens.py:55
msgid "Permit create/update/delete operations using this key"
msgstr ""
-#: users/models/tokens.py:66
+#: netbox/users/models/tokens.py:66
msgid "allowed IPs"
msgstr ""
-#: users/models/tokens.py:68
+#: netbox/users/models/tokens.py:68
msgid ""
"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for "
"no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\""
msgstr ""
-#: users/models/tokens.py:76
+#: netbox/users/models/tokens.py:76
msgid "token"
msgstr ""
-#: users/models/tokens.py:77
+#: netbox/users/models/tokens.py:77
msgid "tokens"
msgstr ""
-#: users/models/users.py:57 vpn/models/crypto.py:42
+#: netbox/users/models/users.py:57 netbox/vpn/models/crypto.py:42
msgid "group"
msgstr ""
-#: users/models/users.py:58 users/models/users.py:77
+#: netbox/users/models/users.py:58 netbox/users/models/users.py:77
msgid "groups"
msgstr ""
-#: users/models/users.py:92
+#: netbox/users/models/users.py:92
msgid "user"
msgstr ""
-#: users/models/users.py:93
+#: netbox/users/models/users.py:93
msgid "users"
msgstr ""
-#: users/models/users.py:104
+#: netbox/users/models/users.py:104
msgid "A user with this username already exists."
msgstr ""
-#: users/tables.py:98
+#: netbox/users/tables.py:98
msgid "Custom Actions"
msgstr ""
-#: utilities/api.py:153
+#: netbox/utilities/api.py:153
#, python-brace-format
msgid "Related object not found using the provided attributes: {params}"
msgstr ""
-#: utilities/api.py:156
+#: netbox/utilities/api.py:156
#, python-brace-format
msgid "Multiple objects match the provided attributes: {params}"
msgstr ""
-#: utilities/api.py:168
+#: netbox/utilities/api.py:168
#, python-brace-format
msgid ""
"Related objects must be referenced by numeric ID or by dictionary of "
"attributes. Received an unrecognized value: {value}"
msgstr ""
-#: utilities/api.py:177
+#: netbox/utilities/api.py:177
#, python-brace-format
msgid "Related object not found using the provided numeric ID: {id}"
msgstr ""
-#: utilities/choices.py:19
+#: netbox/utilities/choices.py:19
#, python-brace-format
msgid "{name} has a key defined but CHOICES is not a list"
msgstr ""
-#: utilities/conversion.py:19
+#: netbox/utilities/conversion.py:19
msgid "Weight must be a positive number"
msgstr ""
-#: utilities/conversion.py:21
+#: netbox/utilities/conversion.py:21
#, python-brace-format
msgid "Invalid value '{weight}' for weight (must be a number)"
msgstr ""
-#: utilities/conversion.py:32 utilities/conversion.py:62
+#: netbox/utilities/conversion.py:32 netbox/utilities/conversion.py:62
#, python-brace-format
msgid "Unknown unit {unit}. Must be one of the following: {valid_units}"
msgstr ""
-#: utilities/conversion.py:45
+#: netbox/utilities/conversion.py:45
msgid "Length must be a positive number"
msgstr ""
-#: utilities/conversion.py:47
+#: netbox/utilities/conversion.py:47
#, python-brace-format
msgid "Invalid value '{length}' for length (must be a number)"
msgstr ""
-#: utilities/error_handlers.py:31
+#: netbox/utilities/error_handlers.py:31
#, python-brace-format
msgid ""
"Unable to delete {objects}. {count} dependent objects were "
"found: "
msgstr ""
-#: utilities/error_handlers.py:33
+#: netbox/utilities/error_handlers.py:33
msgid "More than 50"
msgstr ""
-#: utilities/fields.py:157
+#: netbox/utilities/fields.py:157
#, python-format
msgid ""
"%s(%r) is invalid. to_model parameter to CounterCacheField must be a string "
"in the format 'app.model'"
msgstr ""
-#: utilities/fields.py:167
+#: netbox/utilities/fields.py:167
#, python-format
msgid ""
"%s(%r) is invalid. to_field parameter to CounterCacheField must be a string "
"in the format 'field'"
msgstr ""
-#: utilities/forms/bulk_import.py:23
+#: netbox/utilities/forms/bulk_import.py:23
msgid "Enter object data in CSV, JSON or YAML format."
msgstr ""
-#: utilities/forms/bulk_import.py:36
+#: netbox/utilities/forms/bulk_import.py:36
msgid "CSV delimiter"
msgstr ""
-#: utilities/forms/bulk_import.py:37
+#: netbox/utilities/forms/bulk_import.py:37
msgid "The character which delimits CSV fields. Applies only to CSV format."
msgstr ""
-#: utilities/forms/bulk_import.py:51
+#: netbox/utilities/forms/bulk_import.py:51
msgid "Form data must be empty when uploading/selecting a file."
msgstr ""
-#: utilities/forms/bulk_import.py:80
+#: netbox/utilities/forms/bulk_import.py:80
#, python-brace-format
msgid "Unknown data format: {format}"
msgstr ""
-#: utilities/forms/bulk_import.py:100
+#: netbox/utilities/forms/bulk_import.py:100
msgid "Unable to detect data format. Please specify."
msgstr ""
-#: utilities/forms/bulk_import.py:123
+#: netbox/utilities/forms/bulk_import.py:123
msgid "Invalid CSV delimiter"
msgstr ""
-#: utilities/forms/bulk_import.py:167
+#: netbox/utilities/forms/bulk_import.py:167
msgid ""
"Invalid YAML data. Data must be in the form of multiple documents, or a "
"single document comprising a list of dictionaries."
msgstr ""
-#: utilities/forms/fields/array.py:17
+#: netbox/utilities/forms/fields/array.py:17
#, python-brace-format
msgid ""
"Invalid list ({value}). Must be numeric and ranges must be in ascending "
"order."
msgstr ""
-#: utilities/forms/fields/csv.py:44
+#: netbox/utilities/forms/fields/csv.py:44
#, python-brace-format
msgid "Invalid value for a multiple choice field: {value}"
msgstr ""
-#: utilities/forms/fields/csv.py:57 utilities/forms/fields/csv.py:74
+#: netbox/utilities/forms/fields/csv.py:57
+#: netbox/utilities/forms/fields/csv.py:74
#, python-format
msgid "Object not found: %(value)s"
msgstr ""
-#: utilities/forms/fields/csv.py:65
+#: netbox/utilities/forms/fields/csv.py:65
#, python-brace-format
msgid ""
"\"{value}\" is not a unique value for this field; multiple objects were found"
msgstr ""
-#: utilities/forms/fields/csv.py:97
+#: netbox/utilities/forms/fields/csv.py:97
msgid "Object type must be specified as \".\""
msgstr ""
-#: utilities/forms/fields/csv.py:101
+#: netbox/utilities/forms/fields/csv.py:101
msgid "Invalid object type"
msgstr ""
-#: utilities/forms/fields/expandable.py:25
+#: netbox/utilities/forms/fields/expandable.py:25
msgid ""
"Alphanumeric ranges are supported for bulk creation. Mixed cases and types "
"within a single range are not supported (example: [ge,xe]-0/0/[0-9]"
"code>)."
msgstr ""
-#: utilities/forms/fields/expandable.py:46
+#: netbox/utilities/forms/fields/expandable.py:46
msgid ""
"Specify a numeric range to create multiple IPs.
Example: 192.0.2."
"[1,5,100-254]/24
"
msgstr ""
-#: utilities/forms/fields/fields.py:31
+#: netbox/utilities/forms/fields/fields.py:31
#, python-brace-format
msgid ""
" Markdown syntax is supported"
msgstr ""
-#: utilities/forms/fields/fields.py:48
+#: netbox/utilities/forms/fields/fields.py:48
msgid "URL-friendly unique shorthand"
msgstr ""
-#: utilities/forms/fields/fields.py:101
+#: netbox/utilities/forms/fields/fields.py:101
msgid "Enter context data in JSON format."
msgstr ""
-#: utilities/forms/fields/fields.py:124
+#: netbox/utilities/forms/fields/fields.py:124
msgid "MAC address must be in EUI-48 format"
msgstr ""
-#: utilities/forms/forms.py:52
+#: netbox/utilities/forms/forms.py:52
msgid "Use regular expressions"
msgstr ""
-#: utilities/forms/forms.py:75
+#: netbox/utilities/forms/forms.py:75
msgid ""
"Numeric ID of an existing object to update (if not creating a new object)"
msgstr ""
-#: utilities/forms/forms.py:92
+#: netbox/utilities/forms/forms.py:92
#, python-brace-format
msgid "Unrecognized header: {name}"
msgstr ""
-#: utilities/forms/forms.py:118
+#: netbox/utilities/forms/forms.py:118
msgid "Available Columns"
msgstr ""
-#: utilities/forms/forms.py:126
+#: netbox/utilities/forms/forms.py:126
msgid "Selected Columns"
msgstr ""
-#: utilities/forms/mixins.py:44
+#: netbox/utilities/forms/mixins.py:44
msgid ""
"This object has been modified since the form was rendered. Please consult "
"the object's change log for details."
msgstr ""
-#: utilities/forms/utils.py:42 utilities/forms/utils.py:68
-#: utilities/forms/utils.py:85 utilities/forms/utils.py:87
+#: netbox/utilities/forms/utils.py:42 netbox/utilities/forms/utils.py:68
+#: netbox/utilities/forms/utils.py:85 netbox/utilities/forms/utils.py:87
#, python-brace-format
msgid "Range \"{value}\" is invalid."
msgstr ""
-#: utilities/forms/utils.py:74
+#: netbox/utilities/forms/utils.py:74
#, python-brace-format
msgid ""
"Invalid range: Ending value ({end}) must be greater than beginning value "
"({begin})."
msgstr ""
-#: utilities/forms/utils.py:232
+#: netbox/utilities/forms/utils.py:232
#, python-brace-format
msgid "Duplicate or conflicting column header for \"{field}\""
msgstr ""
-#: utilities/forms/utils.py:238
+#: netbox/utilities/forms/utils.py:238
#, python-brace-format
msgid "Duplicate or conflicting column header for \"{header}\""
msgstr ""
-#: utilities/forms/utils.py:247
+#: netbox/utilities/forms/utils.py:247
#, python-brace-format
msgid "Row {row}: Expected {count_expected} columns but found {count_found}"
msgstr ""
-#: utilities/forms/utils.py:270
+#: netbox/utilities/forms/utils.py:270
#, python-brace-format
msgid "Unexpected column header \"{field}\" found."
msgstr ""
-#: utilities/forms/utils.py:272
+#: netbox/utilities/forms/utils.py:272
#, python-brace-format
msgid "Column \"{field}\" is not a related object; cannot use dots"
msgstr ""
-#: utilities/forms/utils.py:276
+#: netbox/utilities/forms/utils.py:276
#, python-brace-format
msgid "Invalid related object attribute for column \"{field}\": {to_field}"
msgstr ""
-#: utilities/forms/utils.py:284
+#: netbox/utilities/forms/utils.py:284
#, python-brace-format
msgid "Required column header \"{header}\" not found."
msgstr ""
-#: utilities/forms/widgets/apiselect.py:124
+#: netbox/utilities/forms/widgets/apiselect.py:124
#, python-brace-format
msgid "Missing required value for dynamic query param: '{dynamic_params}'"
msgstr ""
-#: utilities/forms/widgets/apiselect.py:141
+#: netbox/utilities/forms/widgets/apiselect.py:141
#, python-brace-format
msgid "Missing required value for static query param: '{static_params}'"
msgstr ""
-#: utilities/permissions.py:39
+#: netbox/utilities/permissions.py:39
#, python-brace-format
msgid ""
"Invalid permission name: {name}. Must be in the format ."
"_"
msgstr ""
-#: utilities/permissions.py:57
+#: netbox/utilities/permissions.py:57
#, python-brace-format
msgid "Unknown app_label/model_name for {name}"
msgstr ""
-#: utilities/request.py:76
+#: netbox/utilities/request.py:76
#, python-brace-format
msgid "Invalid IP address set for {header}: {ip}"
msgstr ""
-#: utilities/tables.py:47
+#: netbox/utilities/tables.py:47
#, python-brace-format
msgid "A column named {name} is already defined for table {table_name}"
msgstr ""
-#: utilities/templates/builtins/customfield_value.html:30
+#: netbox/utilities/templates/builtins/customfield_value.html:30
msgid "Not defined"
msgstr ""
-#: utilities/templates/buttons/bookmark.html:9
+#: netbox/utilities/templates/buttons/bookmark.html:9
msgid "Unbookmark"
msgstr ""
-#: utilities/templates/buttons/bookmark.html:13
+#: netbox/utilities/templates/buttons/bookmark.html:13
msgid "Bookmark"
msgstr ""
-#: utilities/templates/buttons/clone.html:4
+#: netbox/utilities/templates/buttons/clone.html:4
msgid "Clone"
msgstr ""
-#: utilities/templates/buttons/export.html:7
+#: netbox/utilities/templates/buttons/export.html:7
msgid "Current View"
msgstr ""
-#: utilities/templates/buttons/export.html:8
+#: netbox/utilities/templates/buttons/export.html:8
msgid "All Data"
msgstr ""
-#: utilities/templates/buttons/export.html:28
+#: netbox/utilities/templates/buttons/export.html:28
msgid "Add export template"
msgstr ""
-#: utilities/templates/buttons/import.html:4
+#: netbox/utilities/templates/buttons/import.html:4
msgid "Import"
msgstr ""
-#: utilities/templates/form_helpers/render_field.html:39
+#: netbox/utilities/templates/form_helpers/render_field.html:39
msgid "Copy to clipboard"
msgstr ""
-#: utilities/templates/form_helpers/render_field.html:55
+#: netbox/utilities/templates/form_helpers/render_field.html:55
msgid "This field is required"
msgstr ""
-#: utilities/templates/form_helpers/render_field.html:68
+#: netbox/utilities/templates/form_helpers/render_field.html:68
msgid "Set Null"
msgstr ""
-#: utilities/templates/helpers/applied_filters.html:11
+#: netbox/utilities/templates/helpers/applied_filters.html:11
msgid "Clear all"
msgstr ""
-#: utilities/templates/helpers/table_config_form.html:8
+#: netbox/utilities/templates/helpers/table_config_form.html:8
msgid "Table Configuration"
msgstr ""
-#: utilities/templates/helpers/table_config_form.html:31
+#: netbox/utilities/templates/helpers/table_config_form.html:31
msgid "Move Up"
msgstr ""
-#: utilities/templates/helpers/table_config_form.html:34
+#: netbox/utilities/templates/helpers/table_config_form.html:34
msgid "Move Down"
msgstr ""
-#: utilities/templates/widgets/apiselect.html:7
+#: netbox/utilities/templates/widgets/apiselect.html:7
msgid "Open selector"
msgstr ""
-#: utilities/templates/widgets/clearable_file_input.html:12
+#: netbox/utilities/templates/widgets/clearable_file_input.html:12
msgid "None assigned"
msgstr ""
-#: utilities/templates/widgets/markdown_input.html:6
+#: netbox/utilities/templates/widgets/markdown_input.html:6
msgid "Write"
msgstr ""
-#: utilities/testing/views.py:633
+#: netbox/utilities/testing/views.py:633
msgid "The test must define csv_update_data."
msgstr ""
-#: utilities/validators.py:65
+#: netbox/utilities/validators.py:65
#, python-brace-format
msgid "{value} is not a valid regular expression."
msgstr ""
-#: utilities/views.py:40
+#: netbox/utilities/views.py:40
#, python-brace-format
msgid "{self.__class__.__name__} must implement get_required_permission()"
msgstr ""
-#: utilities/views.py:76
+#: netbox/utilities/views.py:76
#, python-brace-format
msgid "{class_name} must implement get_required_permission()"
msgstr ""
-#: utilities/views.py:100
+#: netbox/utilities/views.py:100
#, python-brace-format
msgid ""
"{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only "
"be used on views which define a base queryset"
msgstr ""
-#: virtualization/filtersets.py:79
+#: netbox/virtualization/filtersets.py:79
msgid "Parent group (ID)"
msgstr ""
-#: virtualization/filtersets.py:85
+#: netbox/virtualization/filtersets.py:85
msgid "Parent group (slug)"
msgstr ""
-#: virtualization/filtersets.py:89 virtualization/filtersets.py:141
+#: netbox/virtualization/filtersets.py:89
+#: netbox/virtualization/filtersets.py:141
msgid "Cluster type (ID)"
msgstr ""
-#: virtualization/filtersets.py:130
+#: netbox/virtualization/filtersets.py:130
msgid "Cluster group (ID)"
msgstr ""
-#: virtualization/filtersets.py:151 virtualization/filtersets.py:267
+#: netbox/virtualization/filtersets.py:151
+#: netbox/virtualization/filtersets.py:267
msgid "Cluster (ID)"
msgstr ""
-#: virtualization/forms/bulk_edit.py:166
-#: virtualization/models/virtualmachines.py:115
+#: netbox/virtualization/forms/bulk_edit.py:166
+#: netbox/virtualization/models/virtualmachines.py:115
msgid "vCPUs"
msgstr ""
-#: virtualization/forms/bulk_edit.py:170
+#: netbox/virtualization/forms/bulk_edit.py:170
msgid "Memory (MB)"
msgstr ""
-#: virtualization/forms/bulk_edit.py:174
+#: netbox/virtualization/forms/bulk_edit.py:174
msgid "Disk (GB)"
msgstr ""
-#: virtualization/forms/bulk_edit.py:334 virtualization/forms/filtersets.py:247
+#: netbox/virtualization/forms/bulk_edit.py:334
+#: netbox/virtualization/forms/filtersets.py:247
msgid "Size (GB)"
msgstr ""
-#: virtualization/forms/bulk_import.py:44
+#: netbox/virtualization/forms/bulk_import.py:44
msgid "Type of cluster"
msgstr ""
-#: virtualization/forms/bulk_import.py:51
+#: netbox/virtualization/forms/bulk_import.py:51
msgid "Assigned cluster group"
msgstr ""
-#: virtualization/forms/bulk_import.py:96
+#: netbox/virtualization/forms/bulk_import.py:96
msgid "Assigned cluster"
msgstr ""
-#: virtualization/forms/bulk_import.py:103
+#: netbox/virtualization/forms/bulk_import.py:103
msgid "Assigned device within cluster"
msgstr ""
-#: virtualization/forms/model_forms.py:153
+#: netbox/virtualization/forms/model_forms.py:153
#, python-brace-format
msgid ""
"{device} belongs to a different site ({device_site}) than the cluster "
"({cluster_site})"
msgstr ""
-#: virtualization/forms/model_forms.py:192
+#: netbox/virtualization/forms/model_forms.py:192
msgid "Optionally pin this VM to a specific host device within the cluster"
msgstr ""
-#: virtualization/forms/model_forms.py:221
+#: netbox/virtualization/forms/model_forms.py:221
msgid "Site/Cluster"
msgstr ""
-#: virtualization/forms/model_forms.py:244
+#: netbox/virtualization/forms/model_forms.py:244
msgid "Disk size is managed via the attachment of virtual disks."
msgstr ""
-#: virtualization/forms/model_forms.py:372
+#: netbox/virtualization/forms/model_forms.py:372
msgid "Disk"
msgstr ""
-#: virtualization/models/clusters.py:25
+#: netbox/virtualization/models/clusters.py:25
msgid "cluster type"
msgstr ""
-#: virtualization/models/clusters.py:26
+#: netbox/virtualization/models/clusters.py:26
msgid "cluster types"
msgstr ""
-#: virtualization/models/clusters.py:45
+#: netbox/virtualization/models/clusters.py:45
msgid "cluster group"
msgstr ""
-#: virtualization/models/clusters.py:46
+#: netbox/virtualization/models/clusters.py:46
msgid "cluster groups"
msgstr ""
-#: virtualization/models/clusters.py:121
+#: netbox/virtualization/models/clusters.py:121
msgid "cluster"
msgstr ""
-#: virtualization/models/clusters.py:122
+#: netbox/virtualization/models/clusters.py:122
msgid "clusters"
msgstr ""
-#: virtualization/models/clusters.py:141
+#: netbox/virtualization/models/clusters.py:141
#, python-brace-format
msgid ""
"{count} devices are assigned as hosts for this cluster but are not in site "
"{site}"
msgstr ""
-#: virtualization/models/virtualmachines.py:123
+#: netbox/virtualization/models/virtualmachines.py:123
msgid "memory (MB)"
msgstr ""
-#: virtualization/models/virtualmachines.py:128
+#: netbox/virtualization/models/virtualmachines.py:128
msgid "disk (GB)"
msgstr ""
-#: virtualization/models/virtualmachines.py:161
+#: netbox/virtualization/models/virtualmachines.py:161
msgid "Virtual machine name must be unique per cluster."
msgstr ""
-#: virtualization/models/virtualmachines.py:164
+#: netbox/virtualization/models/virtualmachines.py:164
msgid "virtual machine"
msgstr ""
-#: virtualization/models/virtualmachines.py:165
+#: netbox/virtualization/models/virtualmachines.py:165
msgid "virtual machines"
msgstr ""
-#: virtualization/models/virtualmachines.py:179
+#: netbox/virtualization/models/virtualmachines.py:179
msgid "A virtual machine must be assigned to a site and/or cluster."
msgstr ""
-#: virtualization/models/virtualmachines.py:186
+#: netbox/virtualization/models/virtualmachines.py:186
#, python-brace-format
msgid "The selected cluster ({cluster}) is not assigned to this site ({site})."
msgstr ""
-#: virtualization/models/virtualmachines.py:193
+#: netbox/virtualization/models/virtualmachines.py:193
msgid "Must specify a cluster when assigning a host device."
msgstr ""
-#: virtualization/models/virtualmachines.py:198
+#: netbox/virtualization/models/virtualmachines.py:198
#, python-brace-format
msgid ""
"The selected device ({device}) is not assigned to this cluster ({cluster})."
msgstr ""
-#: virtualization/models/virtualmachines.py:210
+#: netbox/virtualization/models/virtualmachines.py:210
#, python-brace-format
msgid ""
"The specified disk size ({size}) must match the aggregate size of assigned "
"virtual disks ({total_size})."
msgstr ""
-#: virtualization/models/virtualmachines.py:224
+#: netbox/virtualization/models/virtualmachines.py:224
#, python-brace-format
msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)"
msgstr ""
-#: virtualization/models/virtualmachines.py:233
+#: netbox/virtualization/models/virtualmachines.py:233
#, python-brace-format
msgid "The specified IP address ({ip}) is not assigned to this VM."
msgstr ""
-#: virtualization/models/virtualmachines.py:391
+#: netbox/virtualization/models/virtualmachines.py:391
#, python-brace-format
msgid ""
"The selected parent interface ({parent}) belongs to a different virtual "
"machine ({virtual_machine})."
msgstr ""
-#: virtualization/models/virtualmachines.py:406
+#: netbox/virtualization/models/virtualmachines.py:406
#, python-brace-format
msgid ""
"The selected bridge interface ({bridge}) belongs to a different virtual "
"machine ({virtual_machine})."
msgstr ""
-#: virtualization/models/virtualmachines.py:417
+#: netbox/virtualization/models/virtualmachines.py:417
#, python-brace-format
msgid ""
"The untagged VLAN ({untagged_vlan}) must belong to the same site as the "
"interface's parent virtual machine, or it must be global."
msgstr ""
-#: virtualization/models/virtualmachines.py:429
+#: netbox/virtualization/models/virtualmachines.py:429
msgid "size (GB)"
msgstr ""
-#: virtualization/models/virtualmachines.py:433
+#: netbox/virtualization/models/virtualmachines.py:433
msgid "virtual disk"
msgstr ""
-#: virtualization/models/virtualmachines.py:434
+#: netbox/virtualization/models/virtualmachines.py:434
msgid "virtual disks"
msgstr ""
-#: vpn/choices.py:31
+#: netbox/vpn/choices.py:31
msgid "IPsec - Transport"
msgstr ""
-#: vpn/choices.py:32
+#: netbox/vpn/choices.py:32
msgid "IPsec - Tunnel"
msgstr ""
-#: vpn/choices.py:33
+#: netbox/vpn/choices.py:33
msgid "IP-in-IP"
msgstr ""
-#: vpn/choices.py:34
+#: netbox/vpn/choices.py:34
msgid "GRE"
msgstr ""
-#: vpn/choices.py:56
+#: netbox/vpn/choices.py:56
msgid "Hub"
msgstr ""
-#: vpn/choices.py:57
+#: netbox/vpn/choices.py:57
msgid "Spoke"
msgstr ""
-#: vpn/choices.py:80
+#: netbox/vpn/choices.py:80
msgid "Aggressive"
msgstr ""
-#: vpn/choices.py:81
+#: netbox/vpn/choices.py:81
msgid "Main"
msgstr ""
-#: vpn/choices.py:92
+#: netbox/vpn/choices.py:92
msgid "Pre-shared keys"
msgstr ""
-#: vpn/choices.py:93
+#: netbox/vpn/choices.py:93
msgid "Certificates"
msgstr ""
-#: vpn/choices.py:94
+#: netbox/vpn/choices.py:94
msgid "RSA signatures"
msgstr ""
-#: vpn/choices.py:95
+#: netbox/vpn/choices.py:95
msgid "DSA signatures"
msgstr ""
-#: vpn/choices.py:178 vpn/choices.py:179 vpn/choices.py:180 vpn/choices.py:181
-#: vpn/choices.py:182 vpn/choices.py:183 vpn/choices.py:184 vpn/choices.py:185
-#: vpn/choices.py:186 vpn/choices.py:187 vpn/choices.py:188 vpn/choices.py:189
-#: vpn/choices.py:190 vpn/choices.py:191 vpn/choices.py:192 vpn/choices.py:193
-#: vpn/choices.py:194 vpn/choices.py:195 vpn/choices.py:196 vpn/choices.py:197
-#: vpn/choices.py:198 vpn/choices.py:199 vpn/choices.py:200 vpn/choices.py:201
+#: netbox/vpn/choices.py:178 netbox/vpn/choices.py:179
+#: netbox/vpn/choices.py:180 netbox/vpn/choices.py:181
+#: netbox/vpn/choices.py:182 netbox/vpn/choices.py:183
+#: netbox/vpn/choices.py:184 netbox/vpn/choices.py:185
+#: netbox/vpn/choices.py:186 netbox/vpn/choices.py:187
+#: netbox/vpn/choices.py:188 netbox/vpn/choices.py:189
+#: netbox/vpn/choices.py:190 netbox/vpn/choices.py:191
+#: netbox/vpn/choices.py:192 netbox/vpn/choices.py:193
+#: netbox/vpn/choices.py:194 netbox/vpn/choices.py:195
+#: netbox/vpn/choices.py:196 netbox/vpn/choices.py:197
+#: netbox/vpn/choices.py:198 netbox/vpn/choices.py:199
+#: netbox/vpn/choices.py:200 netbox/vpn/choices.py:201
#, python-brace-format
msgid "Group {n}"
msgstr ""
-#: vpn/choices.py:241
+#: netbox/vpn/choices.py:241
msgid "Ethernet Private LAN"
msgstr ""
-#: vpn/choices.py:242
+#: netbox/vpn/choices.py:242
msgid "Ethernet Virtual Private LAN"
msgstr ""
-#: vpn/choices.py:245
+#: netbox/vpn/choices.py:245
msgid "Ethernet Private Tree"
msgstr ""
-#: vpn/choices.py:246
+#: netbox/vpn/choices.py:246
msgid "Ethernet Virtual Private Tree"
msgstr ""
-#: vpn/filtersets.py:41
+#: netbox/vpn/filtersets.py:41
msgid "Tunnel group (ID)"
msgstr ""
-#: vpn/filtersets.py:47
+#: netbox/vpn/filtersets.py:47
msgid "Tunnel group (slug)"
msgstr ""
-#: vpn/filtersets.py:54
+#: netbox/vpn/filtersets.py:54
msgid "IPSec profile (ID)"
msgstr ""
-#: vpn/filtersets.py:60
+#: netbox/vpn/filtersets.py:60
msgid "IPSec profile (name)"
msgstr ""
-#: vpn/filtersets.py:81
+#: netbox/vpn/filtersets.py:81
msgid "Tunnel (ID)"
msgstr ""
-#: vpn/filtersets.py:87
+#: netbox/vpn/filtersets.py:87
msgid "Tunnel (name)"
msgstr ""
-#: vpn/filtersets.py:118
+#: netbox/vpn/filtersets.py:118
msgid "Outside IP (ID)"
msgstr ""
-#: vpn/filtersets.py:130 vpn/filtersets.py:153 vpn/filtersets.py:282
+#: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153
+#: netbox/vpn/filtersets.py:282
msgid "IKE policy (ID)"
msgstr ""
-#: vpn/filtersets.py:136 vpn/filtersets.py:159 vpn/filtersets.py:288
+#: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159
+#: netbox/vpn/filtersets.py:288
msgid "IKE policy (name)"
msgstr ""
-#: vpn/filtersets.py:215 vpn/filtersets.py:292
+#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292
msgid "IPSec policy (ID)"
msgstr ""
-#: vpn/filtersets.py:221 vpn/filtersets.py:298
+#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298
msgid "IPSec policy (name)"
msgstr ""
-#: vpn/filtersets.py:367
+#: netbox/vpn/filtersets.py:367
msgid "L2VPN (slug)"
msgstr ""
-#: vpn/filtersets.py:431
+#: netbox/vpn/filtersets.py:431
msgid "VM Interface (ID)"
msgstr ""
-#: vpn/filtersets.py:437
+#: netbox/vpn/filtersets.py:437
msgid "VLAN (name)"
msgstr ""
-#: vpn/forms/bulk_edit.py:45 vpn/forms/bulk_import.py:42
-#: vpn/forms/filtersets.py:54
+#: netbox/vpn/forms/bulk_edit.py:45 netbox/vpn/forms/bulk_import.py:42
+#: netbox/vpn/forms/filtersets.py:54
msgid "Tunnel group"
msgstr ""
-#: vpn/forms/bulk_edit.py:117 vpn/models/crypto.py:47
+#: netbox/vpn/forms/bulk_edit.py:117 netbox/vpn/models/crypto.py:47
msgid "SA lifetime"
msgstr ""
-#: vpn/forms/bulk_edit.py:151 wireless/forms/bulk_edit.py:79
-#: wireless/forms/bulk_edit.py:126 wireless/forms/filtersets.py:64
-#: wireless/forms/filtersets.py:98
+#: netbox/vpn/forms/bulk_edit.py:151 netbox/wireless/forms/bulk_edit.py:79
+#: netbox/wireless/forms/bulk_edit.py:126
+#: netbox/wireless/forms/filtersets.py:64
+#: netbox/wireless/forms/filtersets.py:98
msgid "Pre-shared key"
msgstr ""
-#: vpn/forms/bulk_edit.py:237 vpn/forms/bulk_import.py:239
-#: vpn/forms/filtersets.py:199 vpn/forms/model_forms.py:370
-#: vpn/models/crypto.py:104
+#: netbox/vpn/forms/bulk_edit.py:237 netbox/vpn/forms/bulk_import.py:239
+#: netbox/vpn/forms/filtersets.py:199 netbox/vpn/forms/model_forms.py:370
+#: netbox/vpn/models/crypto.py:104
msgid "IKE policy"
msgstr ""
-#: vpn/forms/bulk_edit.py:242 vpn/forms/bulk_import.py:244
-#: vpn/forms/filtersets.py:204 vpn/forms/model_forms.py:374
-#: vpn/models/crypto.py:209
+#: netbox/vpn/forms/bulk_edit.py:242 netbox/vpn/forms/bulk_import.py:244
+#: netbox/vpn/forms/filtersets.py:204 netbox/vpn/forms/model_forms.py:374
+#: netbox/vpn/models/crypto.py:209
msgid "IPSec policy"
msgstr ""
-#: vpn/forms/bulk_import.py:50
+#: netbox/vpn/forms/bulk_import.py:50
msgid "Tunnel encapsulation"
msgstr ""
-#: vpn/forms/bulk_import.py:83
+#: netbox/vpn/forms/bulk_import.py:83
msgid "Operational role"
msgstr ""
-#: vpn/forms/bulk_import.py:90
+#: netbox/vpn/forms/bulk_import.py:90
msgid "Parent device of assigned interface"
msgstr ""
-#: vpn/forms/bulk_import.py:97
+#: netbox/vpn/forms/bulk_import.py:97
msgid "Parent VM of assigned interface"
msgstr ""
-#: vpn/forms/bulk_import.py:104
+#: netbox/vpn/forms/bulk_import.py:104
msgid "Device or virtual machine interface"
msgstr ""
-#: vpn/forms/bulk_import.py:183
+#: netbox/vpn/forms/bulk_import.py:183
msgid "IKE proposal(s)"
msgstr ""
-#: vpn/forms/bulk_import.py:215 vpn/models/crypto.py:197
+#: netbox/vpn/forms/bulk_import.py:215 netbox/vpn/models/crypto.py:197
msgid "Diffie-Hellman group for Perfect Forward Secrecy"
msgstr ""
-#: vpn/forms/bulk_import.py:222
+#: netbox/vpn/forms/bulk_import.py:222
msgid "IPSec proposal(s)"
msgstr ""
-#: vpn/forms/bulk_import.py:236
+#: netbox/vpn/forms/bulk_import.py:236
msgid "IPSec protocol"
msgstr ""
-#: vpn/forms/bulk_import.py:266
+#: netbox/vpn/forms/bulk_import.py:266
msgid "L2VPN type"
msgstr ""
-#: vpn/forms/bulk_import.py:287
+#: netbox/vpn/forms/bulk_import.py:287
msgid "Parent device (for interface)"
msgstr ""
-#: vpn/forms/bulk_import.py:294
+#: netbox/vpn/forms/bulk_import.py:294
msgid "Parent virtual machine (for interface)"
msgstr ""
-#: vpn/forms/bulk_import.py:301
+#: netbox/vpn/forms/bulk_import.py:301
msgid "Assigned interface (device or VM)"
msgstr ""
-#: vpn/forms/bulk_import.py:334
+#: netbox/vpn/forms/bulk_import.py:334
msgid "Cannot import device and VM interface terminations simultaneously."
msgstr ""
-#: vpn/forms/bulk_import.py:336
+#: netbox/vpn/forms/bulk_import.py:336
msgid "Each termination must specify either an interface or a VLAN."
msgstr ""
-#: vpn/forms/bulk_import.py:338
+#: netbox/vpn/forms/bulk_import.py:338
msgid "Cannot assign both an interface and a VLAN."
msgstr ""
-#: vpn/forms/filtersets.py:130
+#: netbox/vpn/forms/filtersets.py:130
msgid "IKE version"
msgstr ""
-#: vpn/forms/filtersets.py:142 vpn/forms/filtersets.py:175
-#: vpn/forms/model_forms.py:298 vpn/forms/model_forms.py:334
+#: netbox/vpn/forms/filtersets.py:142 netbox/vpn/forms/filtersets.py:175
+#: netbox/vpn/forms/model_forms.py:298 netbox/vpn/forms/model_forms.py:334
msgid "Proposal"
msgstr ""
-#: vpn/forms/filtersets.py:251
+#: netbox/vpn/forms/filtersets.py:251
msgid "Assigned Object Type"
msgstr ""
-#: vpn/forms/model_forms.py:95 vpn/forms/model_forms.py:130
-#: vpn/forms/model_forms.py:240 vpn/tables/tunnels.py:91
+#: netbox/vpn/forms/model_forms.py:95 netbox/vpn/forms/model_forms.py:130
+#: netbox/vpn/forms/model_forms.py:240 netbox/vpn/tables/tunnels.py:91
msgid "Tunnel interface"
msgstr ""
-#: vpn/forms/model_forms.py:150
+#: netbox/vpn/forms/model_forms.py:150
msgid "First Termination"
msgstr ""
-#: vpn/forms/model_forms.py:153
+#: netbox/vpn/forms/model_forms.py:153
msgid "Second Termination"
msgstr ""
-#: vpn/forms/model_forms.py:197
+#: netbox/vpn/forms/model_forms.py:197
msgid "This parameter is required when defining a termination."
msgstr ""
-#: vpn/forms/model_forms.py:320 vpn/forms/model_forms.py:356
+#: netbox/vpn/forms/model_forms.py:320 netbox/vpn/forms/model_forms.py:356
msgid "Policy"
msgstr ""
-#: vpn/forms/model_forms.py:487
+#: netbox/vpn/forms/model_forms.py:487
msgid "A termination must specify an interface or VLAN."
msgstr ""
-#: vpn/forms/model_forms.py:489
+#: netbox/vpn/forms/model_forms.py:489
msgid ""
"A termination can only have one terminating object (an interface or VLAN)."
msgstr ""
-#: vpn/models/crypto.py:33
+#: netbox/vpn/models/crypto.py:33
msgid "encryption algorithm"
msgstr ""
-#: vpn/models/crypto.py:37
+#: netbox/vpn/models/crypto.py:37
msgid "authentication algorithm"
msgstr ""
-#: vpn/models/crypto.py:44
+#: netbox/vpn/models/crypto.py:44
msgid "Diffie-Hellman group ID"
msgstr ""
-#: vpn/models/crypto.py:50
+#: netbox/vpn/models/crypto.py:50
msgid "Security association lifetime (in seconds)"
msgstr ""
-#: vpn/models/crypto.py:59
+#: netbox/vpn/models/crypto.py:59
msgid "IKE proposal"
msgstr ""
-#: vpn/models/crypto.py:60
+#: netbox/vpn/models/crypto.py:60
msgid "IKE proposals"
msgstr ""
-#: vpn/models/crypto.py:76
+#: netbox/vpn/models/crypto.py:76
msgid "version"
msgstr ""
-#: vpn/models/crypto.py:88 vpn/models/crypto.py:190
+#: netbox/vpn/models/crypto.py:88 netbox/vpn/models/crypto.py:190
msgid "proposals"
msgstr ""
-#: vpn/models/crypto.py:91 wireless/models.py:38
+#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38
msgid "pre-shared key"
msgstr ""
-#: vpn/models/crypto.py:105
+#: netbox/vpn/models/crypto.py:105
msgid "IKE policies"
msgstr ""
-#: vpn/models/crypto.py:118
+#: netbox/vpn/models/crypto.py:118
msgid "Mode is required for selected IKE version"
msgstr ""
-#: vpn/models/crypto.py:122
+#: netbox/vpn/models/crypto.py:122
msgid "Mode cannot be used for selected IKE version"
msgstr ""
-#: vpn/models/crypto.py:136
+#: netbox/vpn/models/crypto.py:136
msgid "encryption"
msgstr ""
-#: vpn/models/crypto.py:141
+#: netbox/vpn/models/crypto.py:141
msgid "authentication"
msgstr ""
-#: vpn/models/crypto.py:149
+#: netbox/vpn/models/crypto.py:149
msgid "Security association lifetime (seconds)"
msgstr ""
-#: vpn/models/crypto.py:155
+#: netbox/vpn/models/crypto.py:155
msgid "Security association lifetime (in kilobytes)"
msgstr ""
-#: vpn/models/crypto.py:164
+#: netbox/vpn/models/crypto.py:164
msgid "IPSec proposal"
msgstr ""
-#: vpn/models/crypto.py:165
+#: netbox/vpn/models/crypto.py:165
msgid "IPSec proposals"
msgstr ""
-#: vpn/models/crypto.py:178
+#: netbox/vpn/models/crypto.py:178
msgid "Encryption and/or authentication algorithm must be defined"
msgstr ""
-#: vpn/models/crypto.py:210
+#: netbox/vpn/models/crypto.py:210
msgid "IPSec policies"
msgstr ""
-#: vpn/models/crypto.py:251
+#: netbox/vpn/models/crypto.py:251
msgid "IPSec profiles"
msgstr ""
-#: vpn/models/l2vpn.py:116
+#: netbox/vpn/models/l2vpn.py:116
msgid "L2VPN termination"
msgstr ""
-#: vpn/models/l2vpn.py:117
+#: netbox/vpn/models/l2vpn.py:117
msgid "L2VPN terminations"
msgstr ""
-#: vpn/models/l2vpn.py:135
+#: netbox/vpn/models/l2vpn.py:135
#, python-brace-format
msgid "L2VPN Termination already assigned ({assigned_object})"
msgstr ""
-#: vpn/models/l2vpn.py:147
+#: netbox/vpn/models/l2vpn.py:147
#, python-brace-format
msgid ""
"{l2vpn_type} L2VPNs cannot have more than two terminations; found "
"{terminations_count} already defined."
msgstr ""
-#: vpn/models/tunnels.py:26
+#: netbox/vpn/models/tunnels.py:26
msgid "tunnel group"
msgstr ""
-#: vpn/models/tunnels.py:27
+#: netbox/vpn/models/tunnels.py:27
msgid "tunnel groups"
msgstr ""
-#: vpn/models/tunnels.py:53
+#: netbox/vpn/models/tunnels.py:53
msgid "encapsulation"
msgstr ""
-#: vpn/models/tunnels.py:72
+#: netbox/vpn/models/tunnels.py:72
msgid "tunnel ID"
msgstr ""
-#: vpn/models/tunnels.py:94
+#: netbox/vpn/models/tunnels.py:94
msgid "tunnel"
msgstr ""
-#: vpn/models/tunnels.py:95
+#: netbox/vpn/models/tunnels.py:95
msgid "tunnels"
msgstr ""
-#: vpn/models/tunnels.py:153
+#: netbox/vpn/models/tunnels.py:153
msgid "An object may be terminated to only one tunnel at a time."
msgstr ""
-#: vpn/models/tunnels.py:156
+#: netbox/vpn/models/tunnels.py:156
msgid "tunnel termination"
msgstr ""
-#: vpn/models/tunnels.py:157
+#: netbox/vpn/models/tunnels.py:157
msgid "tunnel terminations"
msgstr ""
-#: vpn/models/tunnels.py:174
+#: netbox/vpn/models/tunnels.py:174
#, python-brace-format
msgid "{name} is already attached to a tunnel ({tunnel})."
msgstr ""
-#: vpn/tables/crypto.py:22
+#: netbox/vpn/tables/crypto.py:22
msgid "Authentication Method"
msgstr ""
-#: vpn/tables/crypto.py:25 vpn/tables/crypto.py:97
+#: netbox/vpn/tables/crypto.py:25 netbox/vpn/tables/crypto.py:97
msgid "Encryption Algorithm"
msgstr ""
-#: vpn/tables/crypto.py:28 vpn/tables/crypto.py:100
+#: netbox/vpn/tables/crypto.py:28 netbox/vpn/tables/crypto.py:100
msgid "Authentication Algorithm"
msgstr ""
-#: vpn/tables/crypto.py:34
+#: netbox/vpn/tables/crypto.py:34
msgid "SA Lifetime"
msgstr ""
-#: vpn/tables/crypto.py:71
+#: netbox/vpn/tables/crypto.py:71
msgid "Pre-shared Key"
msgstr ""
-#: vpn/tables/crypto.py:103
+#: netbox/vpn/tables/crypto.py:103
msgid "SA Lifetime (Seconds)"
msgstr ""
-#: vpn/tables/crypto.py:106
+#: netbox/vpn/tables/crypto.py:106
msgid "SA Lifetime (KB)"
msgstr ""
-#: vpn/tables/l2vpn.py:69
+#: netbox/vpn/tables/l2vpn.py:69
msgid "Object Parent"
msgstr ""
-#: vpn/tables/l2vpn.py:74
+#: netbox/vpn/tables/l2vpn.py:74
msgid "Object Site"
msgstr ""
-#: wireless/choices.py:11
+#: netbox/wireless/choices.py:11
msgid "Access point"
msgstr ""
-#: wireless/choices.py:12
+#: netbox/wireless/choices.py:12
msgid "Station"
msgstr ""
-#: wireless/choices.py:467
+#: netbox/wireless/choices.py:467
msgid "Open"
msgstr ""
-#: wireless/choices.py:469
+#: netbox/wireless/choices.py:469
msgid "WPA Personal (PSK)"
msgstr ""
-#: wireless/choices.py:470
+#: netbox/wireless/choices.py:470
msgid "WPA Enterprise"
msgstr ""
-#: wireless/forms/bulk_edit.py:73 wireless/forms/bulk_edit.py:120
-#: wireless/forms/bulk_import.py:68 wireless/forms/bulk_import.py:71
-#: wireless/forms/bulk_import.py:110 wireless/forms/bulk_import.py:113
-#: wireless/forms/filtersets.py:59 wireless/forms/filtersets.py:93
+#: netbox/wireless/forms/bulk_edit.py:73 netbox/wireless/forms/bulk_edit.py:120
+#: netbox/wireless/forms/bulk_import.py:68
+#: netbox/wireless/forms/bulk_import.py:71
+#: netbox/wireless/forms/bulk_import.py:110
+#: netbox/wireless/forms/bulk_import.py:113
+#: netbox/wireless/forms/filtersets.py:59
+#: netbox/wireless/forms/filtersets.py:93
msgid "Authentication cipher"
msgstr ""
-#: wireless/forms/bulk_import.py:52
+#: netbox/wireless/forms/bulk_import.py:52
msgid "Bridged VLAN"
msgstr ""
-#: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:27
+#: netbox/wireless/forms/bulk_import.py:89
+#: netbox/wireless/tables/wirelesslink.py:27
msgid "Interface A"
msgstr ""
-#: wireless/forms/bulk_import.py:93 wireless/tables/wirelesslink.py:36
+#: netbox/wireless/forms/bulk_import.py:93
+#: netbox/wireless/tables/wirelesslink.py:36
msgid "Interface B"
msgstr ""
-#: wireless/forms/model_forms.py:161
+#: netbox/wireless/forms/model_forms.py:161
msgid "Side B"
msgstr ""
-#: wireless/models.py:30
+#: netbox/wireless/models.py:30
msgid "authentication cipher"
msgstr ""
-#: wireless/models.py:68
+#: netbox/wireless/models.py:68
msgid "wireless LAN group"
msgstr ""
-#: wireless/models.py:69
+#: netbox/wireless/models.py:69
msgid "wireless LAN groups"
msgstr ""
-#: wireless/models.py:115
+#: netbox/wireless/models.py:115
msgid "wireless LAN"
msgstr ""
-#: wireless/models.py:143
+#: netbox/wireless/models.py:143
msgid "interface A"
msgstr ""
-#: wireless/models.py:150
+#: netbox/wireless/models.py:150
msgid "interface B"
msgstr ""
-#: wireless/models.py:198
+#: netbox/wireless/models.py:198
msgid "wireless link"
msgstr ""
-#: wireless/models.py:199
+#: netbox/wireless/models.py:199
msgid "wireless links"
msgstr ""
-#: wireless/models.py:216 wireless/models.py:222
+#: netbox/wireless/models.py:216 netbox/wireless/models.py:222
#, python-brace-format
msgid "{type} is not a wireless interface."
msgstr ""
-#: wireless/utils.py:16
+#: netbox/wireless/utils.py:16
#, python-brace-format
msgid "Invalid channel value: {channel}"
msgstr ""
-#: wireless/utils.py:26
+#: netbox/wireless/utils.py:26
#, python-brace-format
msgid "Invalid channel attribute: {name}"
msgstr ""
diff --git a/netbox/utilities/serialization.py b/netbox/utilities/serialization.py
index f7a2002d1..af1169e97 100644
--- a/netbox/utilities/serialization.py
+++ b/netbox/utilities/serialization.py
@@ -2,7 +2,6 @@ import json
from django.contrib.contenttypes.models import ContentType
from django.core import serializers
-from mptt.models import MPTTModel
from extras.utils import is_taggable
@@ -16,8 +15,7 @@ def serialize_object(obj, resolve_tags=True, extra=None, exclude=None):
"""
Return a generic JSON representation of an object using Django's built-in serializer. (This is used for things like
change logging, not the REST API.) Optionally include a dictionary to supplement the object data. A list of keys
- can be provided to exclude them from the returned dictionary. Private fields (prefaced with an underscore) are
- implicitly excluded.
+ can be provided to exclude them from the returned dictionary.
Args:
obj: The object to serialize
@@ -30,11 +28,6 @@ def serialize_object(obj, resolve_tags=True, extra=None, exclude=None):
data = json.loads(json_str)[0]['fields']
exclude = exclude or []
- # Exclude any MPTTModel fields
- if issubclass(obj.__class__, MPTTModel):
- for field in ['level', 'lft', 'rght', 'tree_id']:
- data.pop(field)
-
# Include custom_field_data as "custom_fields"
if hasattr(obj, 'custom_field_data'):
data['custom_fields'] = data.pop('custom_field_data')
@@ -45,9 +38,9 @@ def serialize_object(obj, resolve_tags=True, extra=None, exclude=None):
tags = getattr(obj, '_tags', None) or obj.tags.all()
data['tags'] = sorted([tag.name for tag in tags])
- # Skip excluded and private (prefixes with an underscore) attributes
+ # Skip any excluded attributes
for key in list(data.keys()):
- if key in exclude or (isinstance(key, str) and key.startswith('_')):
+ if key in exclude:
data.pop(key)
# Append any extra data
diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py
index ba5360a62..9d194d268 100644
--- a/netbox/virtualization/tables/virtualmachines.py
+++ b/netbox/virtualization/tables/virtualmachines.py
@@ -173,6 +173,8 @@ class VirtualMachineVMInterfaceTable(VMInterfaceTable):
default_columns = ('pk', 'name', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'ip_addresses')
row_attrs = {
'data-name': lambda record: record.name,
+ 'data-virtual': lambda record: "true",
+ 'data-enabled': lambda record: "true" if record.enabled else "false",
}