aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Knoblich <kai@FreeBSD.org>2023-02-22 07:04:18 +0000
committerKai Knoblich <kai@FreeBSD.org>2023-02-22 07:04:18 +0000
commit97f588b3919babbc1e237df5f83a8418fa319ae3 (patch)
treeb0f9deb8914a77554e17fdf9c3079adbc6fefbe2
parentf7fdc07f4604aa4949dee546aa9b7e0322ac1350 (diff)
downloadports-97f588b3919babbc1e237df5f83a8418fa319ae3.tar.gz
ports-97f588b3919babbc1e237df5f83a8418fa319ae3.zip
net-mgmt/netbox: Update to 3.4.5
Changelog since 3.3.10: It contains many bugfixes/enhancements and the following new features: * New Global Search * Virtual Device Contexts * Saved Filters * JSON/YAML Bulk Imports * Update Existing Objects via Bulk Import * Scheduled Reports & Scripts * API for Staged Changes https://netbox.readthedocs.io/en/stable/release-notes/version-3.4/ MFH: No (feature release)
-rw-r--r--net-mgmt/netbox/Makefile56
-rw-r--r--net-mgmt/netbox/distinfo6
-rw-r--r--net-mgmt/netbox/files/netboxrc.sample.in1
-rw-r--r--net-mgmt/netbox/files/pkg-message.in45
-rw-r--r--net-mgmt/netbox/pkg-plist113
5 files changed, 169 insertions, 52 deletions
diff --git a/net-mgmt/netbox/Makefile b/net-mgmt/netbox/Makefile
index be06e80d97d4..4054a7730b2b 100644
--- a/net-mgmt/netbox/Makefile
+++ b/net-mgmt/netbox/Makefile
@@ -1,6 +1,6 @@
PORTNAME= netbox
DISTVERSIONPREFIX= v
-DISTVERSION= 3.3.10
+DISTVERSION= 3.4.5
CATEGORIES= net-mgmt python
MAINTAINER= kai@FreeBSD.org
@@ -18,47 +18,47 @@ LICENSE_FILE= ${WRKSRC}/LICENSE.txt
# Django packages that are known for regressions in conjunction with NetBox and
# should therefore only be updated with caution.
#
-# - devel/py-dj40-django-rq
-# - www/py-dj40-django-filter
-# - www/py-dj40-django-tables2
-# - www/py-dj40-djangorestframework (in conjunction with www/py-dj40-drf-yasg)
+# - devel/py-dj41-django-rq
+# - www/py-dj41-django-filter
+# - www/py-dj41-django-tables2
+# - www/py-dj41-djangorestframework (in conjunction with www/py-dj41-drf-yasg)
#
-RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django40>=4.0.8<4.1:www/py-django40@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-cors-headers>=3.13.0<4:www/py-dj40-django-cors-headers@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-debug-toolbar>=3.6.0<4:www/py-dj40-django-debug-toolbar@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-filter>=22.1<23:www/py-dj40-django-filter@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-graphiql-debug-toolbar>=0.2.0<1:www/py-dj40-django-graphiql-debug-toolbar@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-mptt>=0.14.0<0.15:www/py-dj40-django-mptt@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-prometheus>=2.2.0<2.3:www/py-dj40-django-prometheus@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-redis>=5.2.0<6:www/py-dj40-django-redis@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-rich>=1.4.0<2:www/py-dj40-django-rich@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-rq>=2.5.1<2.7:devel/py-dj40-django-rq@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-tables2>=2.4.1<2.5:www/py-dj40-django-tables2@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-taggit>=3.1.0<4:www/py-dj40-django-taggit@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-django-timezone-field>=5.0<6:www/py-dj40-django-timezone-field@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-djangorestframework>=3.14.0<3.15.0:www/py-dj40-djangorestframework@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-drf-yasg>=1.21.4<1.22:www/py-dj40-drf-yasg@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}dj40-graphene-django>=2.15.0<3:devel/py-dj40-graphene-django@${PY_FLAVOR} \
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django41>=4.1.7<4.2:www/py-django41@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-cors-headers>=3.13.0<4:www/py-dj41-django-cors-headers@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-debug-toolbar>=3.7.0<4:www/py-dj41-django-debug-toolbar@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-filter>=22.1<23:www/py-dj41-django-filter@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-graphiql-debug-toolbar>=0.2.0<1:www/py-dj41-django-graphiql-debug-toolbar@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-mptt>=0.14.0<0.15:www/py-dj41-django-mptt@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-prometheus>=2.2.0<2.3:www/py-dj41-django-prometheus@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-redis>=5.2.0<6:www/py-dj41-django-redis@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-rich>=1.4.0<2:www/py-dj41-django-rich@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-rq>=2.7.0<2.8:devel/py-dj41-django-rq@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-tables2>=2.5.2<2.6:www/py-dj41-django-tables2@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-taggit>=3.1.0<4:www/py-dj41-django-taggit@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-django-timezone-field>=5.0<6:www/py-dj41-django-timezone-field@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-djangorestframework>=3.14.0<3.15.0:www/py-dj41-djangorestframework@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-drf-yasg>=1.21.5<1.22:www/py-dj41-drf-yasg@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj41-graphene-django>=3.0.0<4:devel/py-dj41-graphene-django@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}django-pglocks>=1.0.4<1.1:www/py-django-pglocks@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}bleach>=5.0.1<6:www/py-bleach@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}Jinja2>=3.0.1<4:devel/py-Jinja2@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}Jinja2>=3.1.2<4:devel/py-Jinja2@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}markdown>=3.3.7<3.4:textproc/py-markdown@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}markdown-include>=0.7.0<1:textproc/py-markdown-include@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}mkdocs-material>=8.2.11<9:textproc/py-mkdocs-material@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}mkdocs-material>=8.5.11<10:textproc/py-mkdocs-material@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}mkdocstrings>=0.17.0<1:textproc/py-mkdocstrings@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}netaddr>=0.8.0<1:net/py-netaddr@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}pillow>=9.2.0:graphics/py-pillow@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}psycopg2>=2.9.3<3:databases/py-psycopg2@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pillow>=9.4.0:graphics/py-pillow@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}psycopg2>=2.9.5<3:databases/py-psycopg2@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}sentry-sdk>=1.5.12<2:devel/py-sentry-sdk@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}social-auth-app-django>=5.0.0<6:www/py-social-auth-app-django@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}social-auth-core>=4.3.0<5:security/py-social-auth-core@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}svgwrite>=1.4.3<2:graphics/py-svgwrite@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}tablib>=3.2.1<4:textproc/py-tablib@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}tablib>=3.3.0<4:textproc/py-tablib@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}tzdata>=2022.7:devel/py-tzdata@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}yaml>=5.4.1<7:devel/py-yaml@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}yaml>=6.0<7:devel/py-yaml@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}gunicorn>=20.1.0<21:www/py-gunicorn@${PY_FLAVOR}
-USES= cpe pgsql:10+ python:3.8+
+USES= cpe pgsql:11+ python:3.8+
CPE_VENDOR= netbox_project
USE_GITHUB= yes
GH_ACCOUNT= netbox-community
diff --git a/net-mgmt/netbox/distinfo b/net-mgmt/netbox/distinfo
index 08eb0cd181f8..bd8b15e26827 100644
--- a/net-mgmt/netbox/distinfo
+++ b/net-mgmt/netbox/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1670965894
-SHA256 (netbox-community-netbox-v3.3.10_GH0.tar.gz) = 18d59234db6ffbe08dc9b8eaea8cc8e022fc08f92e0714a01223ae8d7333b62b
-SIZE (netbox-community-netbox-v3.3.10_GH0.tar.gz) = 7316933
+TIMESTAMP = 1676994695
+SHA256 (netbox-community-netbox-v3.4.5_GH0.tar.gz) = 505e4551f6420a70265e927a2ad7b2fabbea5d917e396abaf410713d80fd2736
+SIZE (netbox-community-netbox-v3.4.5_GH0.tar.gz) = 7371574
diff --git a/net-mgmt/netbox/files/netboxrc.sample.in b/net-mgmt/netbox/files/netboxrc.sample.in
index 7510729b0701..f74676e1a4d4 100644
--- a/net-mgmt/netbox/files/netboxrc.sample.in
+++ b/net-mgmt/netbox/files/netboxrc.sample.in
@@ -99,6 +99,7 @@ netbox_upgrade()
%%LOCALBASE%%/bin/mkdocs build
%%PYTHON_CMD%% manage.py collectstatic --no-input
%%PYTHON_CMD%% manage.py remove_stale_contenttypes --no-input
+ %%PYTHON_CMD%% manage.py reindex --lazy
%%PYTHON_CMD%% manage.py clearsessions
%%PYTHON_CMD%% manage.py clearcache
echo "Please restart NetBox and the WSGI environment."
diff --git a/net-mgmt/netbox/files/pkg-message.in b/net-mgmt/netbox/files/pkg-message.in
index 490cbeb03501..dca61f4b8249 100644
--- a/net-mgmt/netbox/files/pkg-message.in
+++ b/net-mgmt/netbox/files/pkg-message.in
@@ -27,6 +27,7 @@ The following steps are required to finish the upgrade:
# mkdocs build
# python%%PYTHON_VER%% manage.py collectstatic --no-input
# python%%PYTHON_VER%% manage.py remove_stale_contenttypes --no-input
+# python%%PYTHON_VER%% manage.py reindex --lazy
# python%%PYTHON_VER%% manage.py clearsessions
# python%%PYTHON_VER%% manage.py clearcache
@@ -280,4 +281,48 @@ following items before running the database migrations:
documentation, etc.).
EOD
}
+{ type: upgrade
+ maximum_version: 3.4.5
+ message: <<EOD
+1. Please make sure that the PostgreSQL server for the NetBox instance is
+ running version 11 or higher. This is because PostgreSQL 10 is End-of-Life
+ since November 2022 and Django 4.1 requires PostgreSQL 11 as a minimum.
+
+2. The NetBox 3.4 release contains some breaking changes, so the following
+ items should be checked as well:
+
+ * Device and virtual machine names are no longer case-sensitive. Attempting
+ to create e.g. "device1" and "DEVICE1" within the same site will raise a
+ validation error.
+
+ * The "asn", "noc_contact", "admin_contact", and "portal_url" fields have
+ been removed from the provider model. Please replicate any data remaining
+ in these fields to the ASN and contact models introduced in NetBox v3.1
+ prior to upgrading.
+
+ * The "content_type" fields on the CustomLink and ExportTemplate models have
+ been renamed to "content_types" and now support the assignment of multiple
+ content types per object.
+
+ * Within the Python API, the "cf" property on an object with custom fields
+ now returns deserialized values. For example, a custom field referencing
+ an object will return the object instance rather than its numeric ID.
+
+ To access the raw serialized values, reference the object's
+ "custom_field_data" attribute instead.
+
+ * The "NetBoxModelCSVForm" class has been renamed to
+ "NetBoxModelImportForm". Backward compatability with the previous name
+ has been retained for this release, but will be dropped in NetBox v3.5.
+
+
+3. Please note that the general update instructions got another command that
+ needs to be issued after each update:
+
+# python%%PYTHON_VER%% manage.py reindex --lazy
+
+ The netbox sample rc script has also been adapted accordingly for this
+ purpose.
+EOD
+}
]
diff --git a/net-mgmt/netbox/pkg-plist b/net-mgmt/netbox/pkg-plist
index b6cdd06e9fc5..dd0271d1eed3 100644
--- a/net-mgmt/netbox/pkg-plist
+++ b/net-mgmt/netbox/pkg-plist
@@ -17,7 +17,7 @@
%%DATADIR%%/circuits/forms/bulk_edit.py
%%DATADIR%%/circuits/forms/bulk_import.py
%%DATADIR%%/circuits/forms/filtersets.py
-%%DATADIR%%/circuits/forms/models.py
+%%DATADIR%%/circuits/forms/model_forms.py
%%DATADIR%%/circuits/graphql/__init__.py
%%DATADIR%%/circuits/graphql/schema.py
%%DATADIR%%/circuits/graphql/types.py
@@ -32,10 +32,14 @@
%%DATADIR%%/circuits/migrations/0036_circuit_termination_date_tags_custom_fields.py
%%DATADIR%%/circuits/migrations/0037_new_cabling_models.py
%%DATADIR%%/circuits/migrations/0038_cabling_cleanup.py
+%%DATADIR%%/circuits/migrations/0039_unique_constraints.py
+%%DATADIR%%/circuits/migrations/0040_provider_remove_deprecated_fields.py
+%%DATADIR%%/circuits/migrations/0041_standardize_description_comments.py
%%DATADIR%%/circuits/migrations/__init__.py
%%DATADIR%%/circuits/models/__init__.py
%%DATADIR%%/circuits/models/circuits.py
%%DATADIR%%/circuits/models/providers.py
+%%DATADIR%%/circuits/search.py
%%DATADIR%%/circuits/signals.py
%%DATADIR%%/circuits/tables/__init__.py
%%DATADIR%%/circuits/tables/circuits.py
@@ -67,10 +71,11 @@
%%DATADIR%%/dcim/forms/connections.py
%%DATADIR%%/dcim/forms/filtersets.py
%%DATADIR%%/dcim/forms/formsets.py
-%%DATADIR%%/dcim/forms/models.py
+%%DATADIR%%/dcim/forms/model_forms.py
%%DATADIR%%/dcim/forms/object_create.py
%%DATADIR%%/dcim/forms/object_import.py
%%DATADIR%%/dcim/graphql/__init__.py
+%%DATADIR%%/dcim/graphql/gfk_mixins.py
%%DATADIR%%/dcim/graphql/mixins.py
%%DATADIR%%/dcim/graphql/schema.py
%%DATADIR%%/dcim/graphql/types.py
@@ -112,15 +117,23 @@
%%DATADIR%%/dcim/migrations/0159_populate_cable_paths.py
%%DATADIR%%/dcim/migrations/0160_populate_cable_ends.py
%%DATADIR%%/dcim/migrations/0161_cabling_cleanup.py
+%%DATADIR%%/dcim/migrations/0162_unique_constraints.py
+%%DATADIR%%/dcim/migrations/0163_weight_fields.py
+%%DATADIR%%/dcim/migrations/0164_rack_mounting_depth.py
+%%DATADIR%%/dcim/migrations/0165_standardize_description_comments.py
+%%DATADIR%%/dcim/migrations/0166_virtualdevicecontext.py
+%%DATADIR%%/dcim/migrations/0167_module_status.py
%%DATADIR%%/dcim/migrations/__init__.py
%%DATADIR%%/dcim/models/__init__.py
%%DATADIR%%/dcim/models/cables.py
%%DATADIR%%/dcim/models/device_component_templates.py
%%DATADIR%%/dcim/models/device_components.py
%%DATADIR%%/dcim/models/devices.py
+%%DATADIR%%/dcim/models/mixins.py
%%DATADIR%%/dcim/models/power.py
%%DATADIR%%/dcim/models/racks.py
%%DATADIR%%/dcim/models/sites.py
+%%DATADIR%%/dcim/search.py
%%DATADIR%%/dcim/signals.py
%%DATADIR%%/dcim/svg/__init__.py
%%DATADIR%%/dcim/svg/cables.py
@@ -182,6 +195,7 @@
%%DATADIR%%/docs/development/index.md
%%DATADIR%%/docs/development/models.md
%%DATADIR%%/docs/development/release-checklist.md
+%%DATADIR%%/docs/development/search.md
%%DATADIR%%/docs/development/signals.md
%%DATADIR%%/docs/development/style-guide.md
%%DATADIR%%/docs/development/user-preferences.md
@@ -200,6 +214,7 @@
%%DATADIR%%/docs/features/journaling.md
%%DATADIR%%/docs/features/l2vpn-overlay.md
%%DATADIR%%/docs/features/power-tracking.md
+%%DATADIR%%/docs/features/search.md
%%DATADIR%%/docs/features/tenancy.md
%%DATADIR%%/docs/features/virtualization.md
%%DATADIR%%/docs/features/vlan-management.md
@@ -293,12 +308,16 @@
%%DATADIR%%/docs/models/dcim/site.md
%%DATADIR%%/docs/models/dcim/sitegroup.md
%%DATADIR%%/docs/models/dcim/virtualchassis.md
+%%DATADIR%%/docs/models/dcim/virtualdevicecontext.md
+%%DATADIR%%/docs/models/extras/branch.md
%%DATADIR%%/docs/models/extras/configcontext.md
%%DATADIR%%/docs/models/extras/customfield.md
%%DATADIR%%/docs/models/extras/customlink.md
%%DATADIR%%/docs/models/extras/exporttemplate.md
%%DATADIR%%/docs/models/extras/imageattachment.md
%%DATADIR%%/docs/models/extras/journalentry.md
+%%DATADIR%%/docs/models/extras/savedfilter.md
+%%DATADIR%%/docs/models/extras/stagedchange.md
%%DATADIR%%/docs/models/extras/tag.md
%%DATADIR%%/docs/models/extras/webhook.md
%%DATADIR%%/docs/models/ipam/aggregate.md
@@ -342,6 +361,8 @@
%%DATADIR%%/docs/plugins/development/models.md
%%DATADIR%%/docs/plugins/development/navigation.md
%%DATADIR%%/docs/plugins/development/rest-api.md
+%%DATADIR%%/docs/plugins/development/search.md
+%%DATADIR%%/docs/plugins/development/staged-changes.md
%%DATADIR%%/docs/plugins/development/tables.md
%%DATADIR%%/docs/plugins/development/templates.md
%%DATADIR%%/docs/plugins/development/views.md
@@ -366,6 +387,7 @@
%%DATADIR%%/docs/release-notes/version-3.1.md
%%DATADIR%%/docs/release-notes/version-3.2.md
%%DATADIR%%/docs/release-notes/version-3.3.md
+%%DATADIR%%/docs/release-notes/version-3.4.md
%%DATADIR%%/extras/__init__.py
%%DATADIR%%/extras/admin.py
%%DATADIR%%/extras/api/__init__.py
@@ -379,15 +401,17 @@
%%DATADIR%%/extras/conditions.py
%%DATADIR%%/extras/constants.py
%%DATADIR%%/extras/context_managers.py
+%%DATADIR%%/extras/fields.py
%%DATADIR%%/extras/filters.py
%%DATADIR%%/extras/filtersets.py
%%DATADIR%%/extras/forms/__init__.py
%%DATADIR%%/extras/forms/bulk_edit.py
%%DATADIR%%/extras/forms/bulk_import.py
%%DATADIR%%/extras/forms/config.py
-%%DATADIR%%/extras/forms/customfields.py
%%DATADIR%%/extras/forms/filtersets.py
-%%DATADIR%%/extras/forms/models.py
+%%DATADIR%%/extras/forms/mixins.py
+%%DATADIR%%/extras/forms/model_forms.py
+%%DATADIR%%/extras/forms/reports.py
%%DATADIR%%/extras/forms/scripts.py
%%DATADIR%%/extras/graphql/__init__.py
%%DATADIR%%/extras/graphql/mixins.py
@@ -399,6 +423,7 @@
%%DATADIR%%/extras/management/commands/clearcache.py
%%DATADIR%%/extras/management/commands/housekeeping.py
%%DATADIR%%/extras/management/commands/nbshell.py
+%%DATADIR%%/extras/management/commands/reindex.py
%%DATADIR%%/extras/management/commands/renaturalize.py
%%DATADIR%%/extras/management/commands/rqworker.py
%%DATADIR%%/extras/management/commands/runreport.py
@@ -424,21 +449,32 @@
%%DATADIR%%/extras/migrations/0075_configcontext_locations.py
%%DATADIR%%/extras/migrations/0076_tag_slug_unicode.py
%%DATADIR%%/extras/migrations/0077_customlink_extend_text_and_url.py
+%%DATADIR%%/extras/migrations/0078_unique_constraints.py
+%%DATADIR%%/extras/migrations/0079_scheduled_jobs.py
+%%DATADIR%%/extras/migrations/0080_customlink_content_types.py
+%%DATADIR%%/extras/migrations/0081_exporttemplate_content_types.py
+%%DATADIR%%/extras/migrations/0082_savedfilter.py
+%%DATADIR%%/extras/migrations/0083_search.py
+%%DATADIR%%/extras/migrations/0084_staging.py
%%DATADIR%%/extras/migrations/__init__.py
%%DATADIR%%/extras/models/__init__.py
%%DATADIR%%/extras/models/change_logging.py
%%DATADIR%%/extras/models/configcontexts.py
%%DATADIR%%/extras/models/customfields.py
%%DATADIR%%/extras/models/models.py
+%%DATADIR%%/extras/models/search.py
+%%DATADIR%%/extras/models/staging.py
%%DATADIR%%/extras/models/tags.py
%%DATADIR%%/extras/plugins/__init__.py
+%%DATADIR%%/extras/plugins/navigation.py
+%%DATADIR%%/extras/plugins/registration.py
+%%DATADIR%%/extras/plugins/templates.py
%%DATADIR%%/extras/plugins/urls.py
-%%DATADIR%%/extras/plugins/utils.py
%%DATADIR%%/extras/plugins/views.py
%%DATADIR%%/extras/querysets.py
-%%DATADIR%%/extras/registry.py
%%DATADIR%%/extras/reports.py
%%DATADIR%%/extras/scripts.py
+%%DATADIR%%/extras/search.py
%%DATADIR%%/extras/signals.py
%%DATADIR%%/extras/tables/__init__.py
%%DATADIR%%/extras/tables/tables.py
@@ -460,6 +496,7 @@
%%DATADIR%%/extras/tests/dummy_plugin/models.py
%%DATADIR%%/extras/tests/dummy_plugin/navigation.py
%%DATADIR%%/extras/tests/dummy_plugin/preferences.py
+%%DATADIR%%/extras/tests/dummy_plugin/search.py
%%DATADIR%%/extras/tests/dummy_plugin/template_content.py
%%DATADIR%%/extras/tests/dummy_plugin/urls.py
%%DATADIR%%/extras/tests/dummy_plugin/views.py
@@ -472,7 +509,6 @@
%%DATADIR%%/extras/tests/test_forms.py
%%DATADIR%%/extras/tests/test_models.py
%%DATADIR%%/extras/tests/test_plugins.py
-%%DATADIR%%/extras/tests/test_registry.py
%%DATADIR%%/extras/tests/test_scripts.py
%%DATADIR%%/extras/tests/test_tags.py
%%DATADIR%%/extras/tests/test_views.py
@@ -501,8 +537,9 @@
%%DATADIR%%/ipam/forms/bulk_edit.py
%%DATADIR%%/ipam/forms/bulk_import.py
%%DATADIR%%/ipam/forms/filtersets.py
-%%DATADIR%%/ipam/forms/models.py
+%%DATADIR%%/ipam/forms/model_forms.py
%%DATADIR%%/ipam/graphql/__init__.py
+%%DATADIR%%/ipam/graphql/gfk_mixins.py
%%DATADIR%%/ipam/graphql/mixins.py
%%DATADIR%%/ipam/graphql/schema.py
%%DATADIR%%/ipam/graphql/types.py
@@ -527,6 +564,10 @@
%%DATADIR%%/ipam/migrations/0058_ipaddress_nat_inside_nonunique.py
%%DATADIR%%/ipam/migrations/0059_l2vpn.py
%%DATADIR%%/ipam/migrations/0060_alter_l2vpn_slug.py
+%%DATADIR%%/ipam/migrations/0061_fhrpgroup_name.py
+%%DATADIR%%/ipam/migrations/0062_unique_constraints.py
+%%DATADIR%%/ipam/migrations/0063_standardize_description_comments.py
+%%DATADIR%%/ipam/migrations/0064_clear_search_cache.py
%%DATADIR%%/ipam/migrations/__init__.py
%%DATADIR%%/ipam/models/__init__.py
%%DATADIR%%/ipam/models/fhrp.py
@@ -536,6 +577,7 @@
%%DATADIR%%/ipam/models/vlans.py
%%DATADIR%%/ipam/models/vrfs.py
%%DATADIR%%/ipam/querysets.py
+%%DATADIR%%/ipam/search.py
%%DATADIR%%/ipam/signals.py
%%DATADIR%%/ipam/tables/__init__.py
%%DATADIR%%/ipam/tables/fhrp.py
@@ -598,11 +640,15 @@
%%DATADIR%%/netbox/middleware.py
%%DATADIR%%/netbox/models/__init__.py
%%DATADIR%%/netbox/models/features.py
-%%DATADIR%%/netbox/navigation_menu.py
+%%DATADIR%%/netbox/navigation/__init__.py
+%%DATADIR%%/netbox/navigation/menu.py
%%DATADIR%%/netbox/preferences.py
-%%DATADIR%%/netbox/search.py
+%%DATADIR%%/netbox/registry.py
+%%DATADIR%%/netbox/search/__init__.py
+%%DATADIR%%/netbox/search/backends.py
%%DATADIR%%/netbox/settings.py
%%DATADIR%%/netbox/signals.py
+%%DATADIR%%/netbox/staging.py
%%DATADIR%%/netbox/tables/__init__.py
%%DATADIR%%/netbox/tables/columns.py
%%DATADIR%%/netbox/tables/tables.py
@@ -611,10 +657,15 @@
%%DATADIR%%/netbox/tests/test_authentication.py
%%DATADIR%%/netbox/tests/test_config.py
%%DATADIR%%/netbox/tests/test_graphql.py
+%%DATADIR%%/netbox/tests/test_import.py
+%%DATADIR%%/netbox/tests/test_registry.py
+%%DATADIR%%/netbox/tests/test_search.py
+%%DATADIR%%/netbox/tests/test_staging.py
%%DATADIR%%/netbox/tests/test_tables.py
%%DATADIR%%/netbox/tests/test_views.py
%%DATADIR%%/netbox/urls.py
%%DATADIR%%/netbox/views/__init__.py
+%%DATADIR%%/netbox/views/errors.py
%%DATADIR%%/netbox/views/generic/__init__.py
%%DATADIR%%/netbox/views/generic/base.py
%%DATADIR%%/netbox/views/generic/bulk_views.py
@@ -622,6 +673,7 @@
%%DATADIR%%/netbox/views/generic/mixins.py
%%DATADIR%%/netbox/views/generic/object_views.py
%%DATADIR%%/netbox/views/generic/utils.py
+%%DATADIR%%/netbox/views/misc.py
%%DATADIR%%/netbox/wsgi.py
%%DATADIR%%/project-static/.eslintignore
%%DATADIR%%/project-static/.eslintrc
@@ -780,14 +832,14 @@
%%DATADIR%%/templates/dcim/device/rearports.html
%%DATADIR%%/templates/dcim/device/status.html
%%DATADIR%%/templates/dcim/device_edit.html
-%%DATADIR%%/templates/dcim/device_import.html
-%%DATADIR%%/templates/dcim/device_import_child.html
%%DATADIR%%/templates/dcim/device_list.html
%%DATADIR%%/templates/dcim/devicebay.html
%%DATADIR%%/templates/dcim/devicebay_delete.html
%%DATADIR%%/templates/dcim/devicebay_depopulate.html
%%DATADIR%%/templates/dcim/devicebay_populate.html
%%DATADIR%%/templates/dcim/devicerole.html
+%%DATADIR%%/templates/dcim/devicerole/devices.html
+%%DATADIR%%/templates/dcim/devicerole/virtual_machines.html
%%DATADIR%%/templates/dcim/devicetype.html
%%DATADIR%%/templates/dcim/devicetype/base.html
%%DATADIR%%/templates/dcim/devicetype/component_templates.html
@@ -795,7 +847,6 @@
%%DATADIR%%/templates/dcim/inc/cable_termination.html
%%DATADIR%%/templates/dcim/inc/cable_toggle_buttons.html
%%DATADIR%%/templates/dcim/inc/connection_endpoints.html
-%%DATADIR%%/templates/dcim/inc/device_import_header.html
%%DATADIR%%/templates/dcim/inc/endpoint_connection.html
%%DATADIR%%/templates/dcim/inc/interface_vlans_table.html
%%DATADIR%%/templates/dcim/inc/nonracked_devices.html
@@ -807,6 +858,7 @@
%%DATADIR%%/templates/dcim/inventoryitem.html
%%DATADIR%%/templates/dcim/inventoryitem_bulk_delete.html
%%DATADIR%%/templates/dcim/inventoryitem_delete.html
+%%DATADIR%%/templates/dcim/inventoryitem_edit.html
%%DATADIR%%/templates/dcim/inventoryitemrole.html
%%DATADIR%%/templates/dcim/location.html
%%DATADIR%%/templates/dcim/manufacturer.html
@@ -825,6 +877,7 @@
%%DATADIR%%/templates/dcim/rack.html
%%DATADIR%%/templates/dcim/rack_edit.html
%%DATADIR%%/templates/dcim/rack_elevation_list.html
+%%DATADIR%%/templates/dcim/rack_list.html
%%DATADIR%%/templates/dcim/rackreservation.html
%%DATADIR%%/templates/dcim/rackrole.html
%%DATADIR%%/templates/dcim/rearport.html
@@ -843,6 +896,7 @@
%%DATADIR%%/templates/dcim/virtualchassis_add_member.html
%%DATADIR%%/templates/dcim/virtualchassis_edit.html
%%DATADIR%%/templates/dcim/virtualchassis_remove_member.html
+%%DATADIR%%/templates/dcim/virtualdevicecontext.html
%%DATADIR%%/templates/exceptions/import_error.html
%%DATADIR%%/templates/exceptions/permission_error.html
%%DATADIR%%/templates/exceptions/programming_error.html
@@ -867,6 +921,7 @@
%%DATADIR%%/templates/extras/report.html
%%DATADIR%%/templates/extras/report_list.html
%%DATADIR%%/templates/extras/report_result.html
+%%DATADIR%%/templates/extras/savedfilter.html
%%DATADIR%%/templates/extras/script.html
%%DATADIR%%/templates/extras/script_list.html
%%DATADIR%%/templates/extras/script_result.html
@@ -883,7 +938,6 @@
%%DATADIR%%/templates/generic/object.html
%%DATADIR%%/templates/generic/object_delete.html
%%DATADIR%%/templates/generic/object_edit.html
-%%DATADIR%%/templates/generic/object_import.html
%%DATADIR%%/templates/generic/object_list.html
%%DATADIR%%/templates/graphiql.html
%%DATADIR%%/templates/home.html
@@ -901,8 +955,10 @@
%%DATADIR%%/templates/inc/panels/contacts.html
%%DATADIR%%/templates/inc/panels/custom_fields.html
%%DATADIR%%/templates/inc/panels/image_attachments.html
+%%DATADIR%%/templates/inc/panels/services.html
%%DATADIR%%/templates/inc/panels/tags.html
%%DATADIR%%/templates/inc/profile_button.html
+%%DATADIR%%/templates/inc/searchbar.html
%%DATADIR%%/templates/inc/table.html
%%DATADIR%%/templates/inc/table_controls_htmx.html
%%DATADIR%%/templates/inc/table_htmx.html
@@ -915,7 +971,6 @@
%%DATADIR%%/templates/ipam/fhrpgroupassignment_edit.html
%%DATADIR%%/templates/ipam/inc/ipaddress_edit_header.html
%%DATADIR%%/templates/ipam/inc/panels/fhrp_groups.html
-%%DATADIR%%/templates/ipam/inc/service.html
%%DATADIR%%/templates/ipam/inc/toggle_available.html
%%DATADIR%%/templates/ipam/ipaddress.html
%%DATADIR%%/templates/ipam/ipaddress_assign.html
@@ -957,6 +1012,7 @@
%%DATADIR%%/templates/tenancy/contactrole.html
%%DATADIR%%/templates/tenancy/tenant.html
%%DATADIR%%/templates/tenancy/tenantgroup.html
+%%DATADIR%%/templates/users/api_token.html
%%DATADIR%%/templates/users/api_tokens.html
%%DATADIR%%/templates/users/base.html
%%DATADIR%%/templates/users/password.html
@@ -994,7 +1050,7 @@
%%DATADIR%%/tenancy/forms/bulk_import.py
%%DATADIR%%/tenancy/forms/filtersets.py
%%DATADIR%%/tenancy/forms/forms.py
-%%DATADIR%%/tenancy/forms/models.py
+%%DATADIR%%/tenancy/forms/model_forms.py
%%DATADIR%%/tenancy/graphql/__init__.py
%%DATADIR%%/tenancy/graphql/schema.py
%%DATADIR%%/tenancy/graphql/types.py
@@ -1005,10 +1061,13 @@
%%DATADIR%%/tenancy/migrations/0005_standardize_id_fields.py
%%DATADIR%%/tenancy/migrations/0006_created_datetimefield.py
%%DATADIR%%/tenancy/migrations/0007_contact_link.py
+%%DATADIR%%/tenancy/migrations/0008_unique_constraints.py
+%%DATADIR%%/tenancy/migrations/0009_standardize_description_comments.py
%%DATADIR%%/tenancy/migrations/__init__.py
%%DATADIR%%/tenancy/models/__init__.py
%%DATADIR%%/tenancy/models/contacts.py
%%DATADIR%%/tenancy/models/tenants.py
+%%DATADIR%%/tenancy/search.py
%%DATADIR%%/tenancy/tables/__init__.py
%%DATADIR%%/tenancy/tables/columns.py
%%DATADIR%%/tenancy/tables/contacts.py
@@ -1073,6 +1132,7 @@
%%DATADIR%%/utilities/forms/utils.py
%%DATADIR%%/utilities/forms/widgets.py
%%DATADIR%%/utilities/htmx.py
+%%DATADIR%%/utilities/json.py
%%DATADIR%%/utilities/management/__init__.py
%%DATADIR%%/utilities/management/commands/__init__.py
%%DATADIR%%/utilities/management/commands/makemigrations.py
@@ -1107,9 +1167,10 @@
%%DATADIR%%/utilities/templates/helpers/table_config_form.html
%%DATADIR%%/utilities/templates/helpers/utilization_graph.html
%%DATADIR%%/utilities/templates/navigation/menu.html
-%%DATADIR%%/utilities/templates/search/searchbar.html
+%%DATADIR%%/utilities/templates/tabs/model_view_tabs.html
%%DATADIR%%/utilities/templates/widgets/clearable_file_input.html
%%DATADIR%%/utilities/templates/widgets/colorselect_option.html
+%%DATADIR%%/utilities/templates/widgets/select_duration.html
%%DATADIR%%/utilities/templates/widgets/select_option.html
%%DATADIR%%/utilities/templates/widgets/select_option_with_pk.html
%%DATADIR%%/utilities/templates/widgets/select_speed.html
@@ -1123,7 +1184,7 @@
%%DATADIR%%/utilities/templatetags/helpers.py
%%DATADIR%%/utilities/templatetags/navigation.py
%%DATADIR%%/utilities/templatetags/perms.py
-%%DATADIR%%/utilities/templatetags/search.py
+%%DATADIR%%/utilities/templatetags/tabs.py
%%DATADIR%%/utilities/testing/__init__.py
%%DATADIR%%/utilities/testing/api.py
%%DATADIR%%/utilities/testing/base.py
@@ -1138,6 +1199,7 @@
%%DATADIR%%/utilities/tests/test_managers.py
%%DATADIR%%/utilities/tests/test_ordering.py
%%DATADIR%%/utilities/tests/test_utils.py
+%%DATADIR%%/utilities/urls.py
%%DATADIR%%/utilities/utils.py
%%DATADIR%%/utilities/validators.py
%%DATADIR%%/utilities/views.py
@@ -1155,7 +1217,7 @@
%%DATADIR%%/virtualization/forms/bulk_edit.py
%%DATADIR%%/virtualization/forms/bulk_import.py
%%DATADIR%%/virtualization/forms/filtersets.py
-%%DATADIR%%/virtualization/forms/models.py
+%%DATADIR%%/virtualization/forms/model_forms.py
%%DATADIR%%/virtualization/forms/object_create.py
%%DATADIR%%/virtualization/graphql/__init__.py
%%DATADIR%%/virtualization/graphql/schema.py
@@ -1171,8 +1233,13 @@
%%DATADIR%%/virtualization/migrations/0030_cluster_status.py
%%DATADIR%%/virtualization/migrations/0031_virtualmachine_site_device.py
%%DATADIR%%/virtualization/migrations/0032_virtualmachine_update_sites.py
+%%DATADIR%%/virtualization/migrations/0033_unique_constraints.py
+%%DATADIR%%/virtualization/migrations/0034_standardize_description_comments.py
%%DATADIR%%/virtualization/migrations/__init__.py
-%%DATADIR%%/virtualization/models.py
+%%DATADIR%%/virtualization/models/__init__.py
+%%DATADIR%%/virtualization/models/clusters.py
+%%DATADIR%%/virtualization/models/virtualmachines.py
+%%DATADIR%%/virtualization/search.py
%%DATADIR%%/virtualization/tables/__init__.py
%%DATADIR%%/virtualization/tables/clusters.py
%%DATADIR%%/virtualization/tables/virtualmachines.py
@@ -1197,7 +1264,7 @@
%%DATADIR%%/wireless/forms/bulk_edit.py
%%DATADIR%%/wireless/forms/bulk_import.py
%%DATADIR%%/wireless/forms/filtersets.py
-%%DATADIR%%/wireless/forms/models.py
+%%DATADIR%%/wireless/forms/model_forms.py
%%DATADIR%%/wireless/graphql/__init__.py
%%DATADIR%%/wireless/graphql/schema.py
%%DATADIR%%/wireless/graphql/types.py
@@ -1206,8 +1273,12 @@
%%DATADIR%%/wireless/migrations/0003_created_datetimefield.py
%%DATADIR%%/wireless/migrations/0004_wireless_tenancy.py
%%DATADIR%%/wireless/migrations/0005_wirelesslink_interface_types.py
+%%DATADIR%%/wireless/migrations/0006_unique_constraints.py
+%%DATADIR%%/wireless/migrations/0007_standardize_description_comments.py
+%%DATADIR%%/wireless/migrations/0008_wirelesslan_status.py
%%DATADIR%%/wireless/migrations/__init__.py
%%DATADIR%%/wireless/models.py
+%%DATADIR%%/wireless/search.py
%%DATADIR%%/wireless/signals.py
%%DATADIR%%/wireless/tables/__init__.py
%%DATADIR%%/wireless/tables/wirelesslan.py