netbox-validity 3.4.3__tar.gz → 3.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {netbox_validity-3.4.3/netbox_validity.egg-info → netbox_validity-3.5.0}/PKG-INFO +4 -4
- {netbox_validity-3.4.3 → netbox_validity-3.5.0/netbox_validity.egg-info}/PKG-INFO +4 -4
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/netbox_validity.egg-info/requires.txt +3 -3
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/pyproject.toml +1 -1
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/requirements/dev.txt +3 -3
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/__init__.py +3 -3
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/api/helpers.py +1 -2
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/choices.py +3 -2
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/netbox_changes/__init__.py +2 -2
- netbox_validity-3.5.0/validity/netbox_changes/current.py +8 -0
- netbox_validity-3.4.3/validity/netbox_changes/current.py → netbox_validity-3.5.0/validity/netbox_changes/old.py +1 -1
- netbox_validity-3.5.0/validity/netbox_changes/oldest.py +7 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/keeper.py +1 -2
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/runtests/combine.py +7 -1
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/utils/orm.py +9 -4
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/script.py +2 -2
- netbox_validity-3.4.3/validity/netbox_changes/old.py +0 -23
- netbox_validity-3.4.3/validity/netbox_changes/oldest.py +0 -30
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/LICENSE +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/MANIFEST.in +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/README.md +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/netbox_validity.egg-info/SOURCES.txt +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/netbox_validity.egg-info/dependency_links.txt +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/netbox_validity.egg-info/top_level.txt +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/requirements/base.txt +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/requirements/docs.txt +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/setup.cfg +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/admin.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/api/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/api/serializers.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/api/urls.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/api/views.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/dynamic_pairs.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/eval/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/eval/default_nameset.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/eval/eval.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/eval/eval_defaults.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/exceptions.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/backend.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/common.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/routeros.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/serializable.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/textfsm.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/ttp.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/xml.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/yaml.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/state.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/custom_validators.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/data_backends.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/data_backup/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/data_backup/backend.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/data_backup/backupers.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/data_backup/entities.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/data_backup/parameters.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/dependencies.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/fields/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/fields/encrypted.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/filtersets.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/forms/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/forms/bulk_import.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/forms/fields.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/forms/filterset.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/forms/general.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/forms/mixins.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/forms/widgets.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/graphql/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/graphql/filters.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/graphql/schema.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/graphql/types.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/integrations/data_models.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/integrations/errors.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/integrations/git.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/integrations/s3.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/j2_env.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/managers.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/migrations/0010_squashed_initial.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/migrations/0011_delete_scripts.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/migrations/0012_backuppoint_devicerole.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/migrations/0013_compliancetest_enabled.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/migrations/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/model_validators.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/backup.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/base.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/data.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/device.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/nameset.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/polling.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/report.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/selector.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/serializer.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/test.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/models/test_result.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/navigation.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/pollers/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/pollers/base.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/pollers/cli.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/pollers/default_credentials.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/pollers/exceptions.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/pollers/factory.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/pollers/http.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/pollers/netconf.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/pollers/result.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/backup.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/data_models.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/exceptions.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/launch.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/parent_jobs.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/runtests/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/runtests/apply.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/scripts/runtests/split.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/search.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/settings.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/signals.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/static/validity/connection-type-select.js +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/static/validity/prism-dark.css +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/static/validity/prism-light.css +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/static/validity/prism.js +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/subforms.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/tables.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/template_content.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/aux_tab_table.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/backuppoint.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/command.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/compliance_results.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/compliancereport.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/complianceselector.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/compliancetest.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/compliancetestresult.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/device_state.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/configcontext_format.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/datasource_link.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/parameters.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/path_with_link.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/prism.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/related_objects.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/report_stats_row.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/search_form.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/yaml_card.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/nameset.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/poller.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/poller_edit.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/report_devices.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/scripts/result.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/scripts/result_htmx.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/scripts/run.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/serializer.html +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templatetags/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templatetags/dto.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templatetags/validity.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/urls.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/utils/bulk.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/utils/json.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/utils/logger.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/utils/misc.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/utils/version.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/__init__.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/backup.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/base.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/bulk_import.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/command.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/data_source.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/device.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/nameset.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/poller.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/report.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/selector.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/serializer.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/test.py +0 -0
- {netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/views/test_result.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: netbox-validity
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.0
|
|
4
4
|
Summary: NetBox plugin for network devices validation
|
|
5
5
|
Author-email: Anton Miasnikov <anton2008m@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -59,9 +59,9 @@ Requires-Dist: debugpy==1.8.19; extra == "dev"
|
|
|
59
59
|
Requires-Dist: factory_boy==3.3.3; extra == "dev"
|
|
60
60
|
Requires-Dist: ipython; extra == "dev"
|
|
61
61
|
Requires-Dist: pre-commit==4.5.1; extra == "dev"
|
|
62
|
-
Requires-Dist: pytest==9.0.
|
|
63
|
-
Requires-Dist: pytest-cov==7.
|
|
64
|
-
Requires-Dist: pytest-django==4.
|
|
62
|
+
Requires-Dist: pytest==9.0.3; extra == "dev"
|
|
63
|
+
Requires-Dist: pytest-cov==7.1.0; extra == "dev"
|
|
64
|
+
Requires-Dist: pytest-django==4.12.0; extra == "dev"
|
|
65
65
|
Requires-Dist: pytest-subtests==0.15.0; extra == "dev"
|
|
66
66
|
Requires-Dist: ruff==0.14.11; extra == "dev"
|
|
67
67
|
Requires-Dist: tomli==2.4.0; extra == "dev"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: netbox-validity
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.0
|
|
4
4
|
Summary: NetBox plugin for network devices validation
|
|
5
5
|
Author-email: Anton Miasnikov <anton2008m@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -59,9 +59,9 @@ Requires-Dist: debugpy==1.8.19; extra == "dev"
|
|
|
59
59
|
Requires-Dist: factory_boy==3.3.3; extra == "dev"
|
|
60
60
|
Requires-Dist: ipython; extra == "dev"
|
|
61
61
|
Requires-Dist: pre-commit==4.5.1; extra == "dev"
|
|
62
|
-
Requires-Dist: pytest==9.0.
|
|
63
|
-
Requires-Dist: pytest-cov==7.
|
|
64
|
-
Requires-Dist: pytest-django==4.
|
|
62
|
+
Requires-Dist: pytest==9.0.3; extra == "dev"
|
|
63
|
+
Requires-Dist: pytest-cov==7.1.0; extra == "dev"
|
|
64
|
+
Requires-Dist: pytest-django==4.12.0; extra == "dev"
|
|
65
65
|
Requires-Dist: pytest-subtests==0.15.0; extra == "dev"
|
|
66
66
|
Requires-Dist: ruff==0.14.11; extra == "dev"
|
|
67
67
|
Requires-Dist: tomli==2.4.0; extra == "dev"
|
|
@@ -17,9 +17,9 @@ debugpy==1.8.19
|
|
|
17
17
|
factory_boy==3.3.3
|
|
18
18
|
ipython
|
|
19
19
|
pre-commit==4.5.1
|
|
20
|
-
pytest==9.0.
|
|
21
|
-
pytest-cov==7.
|
|
22
|
-
pytest-django==4.
|
|
20
|
+
pytest==9.0.3
|
|
21
|
+
pytest-cov==7.1.0
|
|
22
|
+
pytest-django==4.12.0
|
|
23
23
|
pytest-subtests==0.15.0
|
|
24
24
|
ruff==0.14.11
|
|
25
25
|
tomli==2.4.0
|
|
@@ -16,11 +16,11 @@ class NetBoxValidityConfig(PluginConfig):
|
|
|
16
16
|
description = "Write and run auto tests for network devices"
|
|
17
17
|
author = "Anton Miasnikov"
|
|
18
18
|
author_email = "anton2008m@gmail.com"
|
|
19
|
-
version = "3.
|
|
19
|
+
version = "3.5.0"
|
|
20
20
|
base_url = "validity"
|
|
21
21
|
django_apps = ["django_bootstrap5"]
|
|
22
|
-
min_version = "4.
|
|
23
|
-
max_version = "4.
|
|
22
|
+
min_version = "4.4.0"
|
|
23
|
+
max_version = "4.6.99"
|
|
24
24
|
graphql_schema = "graphql.schema"
|
|
25
25
|
|
|
26
26
|
# custom field
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
from django.core.exceptions import ValidationError
|
|
2
|
-
from django.db.models import ManyToManyField
|
|
3
2
|
from rest_framework.permissions import BasePermission
|
|
4
3
|
from rest_framework.relations import PrimaryKeyRelatedField
|
|
5
4
|
from rest_framework.serializers import HyperlinkedIdentityField, JSONField, ModelSerializer
|
|
@@ -82,7 +81,7 @@ class SubformValidationMixin:
|
|
|
82
81
|
def _validate(self, attrs):
|
|
83
82
|
instance = self.instance or self.Meta.model()
|
|
84
83
|
for field, field_value in attrs.items():
|
|
85
|
-
if not
|
|
84
|
+
if not instance._meta.get_field(field).many_to_many:
|
|
86
85
|
setattr(instance, field, field_value)
|
|
87
86
|
if not instance.subform_type:
|
|
88
87
|
return
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
from typing import Optional, TypeVar
|
|
2
2
|
|
|
3
3
|
from django.db.models import IntegerChoices, TextChoices
|
|
4
|
-
from django.db.models.enums import ChoicesMeta
|
|
5
4
|
from django.utils.translation import gettext_lazy as _
|
|
6
5
|
|
|
6
|
+
from validity.netbox_changes import ChoicesType
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
class ColoredChoiceMeta(ChoicesType):
|
|
9
10
|
"""
|
|
10
11
|
Allows to write choice fields with a color like that:
|
|
11
12
|
option1 = 'red'
|
|
@@ -16,9 +16,9 @@ def get_base_table_kwargs(self):
|
|
|
16
16
|
|
|
17
17
|
StrFilterLookup = locate("strawberry_django.StrFilterLookup") if config.netbox_version >= "4.5.5" else FilterLookup[str]
|
|
18
18
|
|
|
19
|
-
if config.netbox_version >= "4.
|
|
19
|
+
if config.netbox_version >= "4.6.0":
|
|
20
20
|
from .current import *
|
|
21
|
-
elif config.netbox_version >= "4.
|
|
21
|
+
elif config.netbox_version >= "4.5.0":
|
|
22
22
|
from .old import *
|
|
23
23
|
else:
|
|
24
24
|
from .oldest import *
|
|
@@ -5,7 +5,6 @@ from core.choices import JobStatusChoices
|
|
|
5
5
|
from core.models import Job
|
|
6
6
|
|
|
7
7
|
from validity import di
|
|
8
|
-
from validity.netbox_changes import set_logs
|
|
9
8
|
from validity.utils.logger import Logger
|
|
10
9
|
from .exceptions import AbortScript
|
|
11
10
|
|
|
@@ -48,7 +47,7 @@ class JobKeeper:
|
|
|
48
47
|
self, status: str = JobStatusChoices.STATUS_COMPLETED, error: str | None = None, output=None
|
|
49
48
|
) -> None:
|
|
50
49
|
self.job.data = self.job.data or {}
|
|
51
|
-
|
|
50
|
+
self.job.log_entries = [log.serialized for log in self.logger.messages]
|
|
52
51
|
output = output or self.job.data.get("output")
|
|
53
52
|
self.job.data["output"] = output
|
|
54
53
|
self.job.terminate(status, error)
|
|
@@ -10,10 +10,10 @@ from core.models import Job
|
|
|
10
10
|
from dimi import Singleton
|
|
11
11
|
from django.db.models import QuerySet
|
|
12
12
|
from django.urls import reverse
|
|
13
|
+
from extras.events import enqueue_event, flush_events
|
|
13
14
|
|
|
14
15
|
from validity import di
|
|
15
16
|
from validity.models import ComplianceReport, ComplianceTestResult
|
|
16
|
-
from validity.netbox_changes import enqueue
|
|
17
17
|
from validity.utils.logger import Logger, Message
|
|
18
18
|
from ..data_models import FullRunTestsParams, RequestInfo, TestResultRatio
|
|
19
19
|
from ..exceptions import AbortScript
|
|
@@ -22,6 +22,12 @@ from ..launch import Launcher
|
|
|
22
22
|
from ..parent_jobs import JobExtractor
|
|
23
23
|
|
|
24
24
|
|
|
25
|
+
def enqueue(report: "ComplianceReport", request: "RequestInfo"):
|
|
26
|
+
queue = {}
|
|
27
|
+
enqueue_event(queue, report, request, "object_created")
|
|
28
|
+
flush_events(queue.values())
|
|
29
|
+
|
|
30
|
+
|
|
25
31
|
@di.dependency(scope=Singleton)
|
|
26
32
|
@dataclass(repr=False, kw_only=True)
|
|
27
33
|
class CombineWorker:
|
|
@@ -206,10 +206,15 @@ class CustomFieldBuilder:
|
|
|
206
206
|
content_type_model: type
|
|
207
207
|
db_alias: str = ""
|
|
208
208
|
|
|
209
|
-
def create(self, *, bind_to, object_type=None, **cf_params):
|
|
209
|
+
def create(self, *, bind_to, name, object_type=None, **cf_params):
|
|
210
210
|
db = self.db_alias or self.cf_model.objects.db
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
211
|
+
cf_params["related_object_type"] = object_type
|
|
212
|
+
|
|
213
|
+
# get_or_create handles #182 - compatibility with netbox-branching weird behaviour
|
|
214
|
+
custom_field, created = self.cf_model.objects.using(db).get_or_create(name=name, defaults=cf_params)
|
|
215
|
+
if not created:
|
|
216
|
+
for field, value in cf_params.items():
|
|
217
|
+
setattr(custom_field, field, value)
|
|
218
|
+
custom_field.save(force_update=True, update_fields=cf_params.keys())
|
|
214
219
|
custom_field.object_types.set(self.content_type_model.objects.get_for_model(model).pk for model in bind_to)
|
|
215
220
|
return custom_field
|
|
@@ -12,7 +12,7 @@ from utilities.htmx import htmx_partial
|
|
|
12
12
|
|
|
13
13
|
from validity import di
|
|
14
14
|
from validity.forms import RunTestsForm
|
|
15
|
-
from validity.netbox_changes import get_base_table_kwargs
|
|
15
|
+
from validity.netbox_changes import get_base_table_kwargs
|
|
16
16
|
from validity.scripts import Launcher, RunTestsParams, ScriptParams
|
|
17
17
|
from validity.tables import ScriptResultTable
|
|
18
18
|
from .base import LauncherMixin
|
|
@@ -51,7 +51,7 @@ class ScriptResultView(PermissionRequiredMixin, TableMixin, ObjectView):
|
|
|
51
51
|
permission_required = "core.view_job"
|
|
52
52
|
|
|
53
53
|
def get_table(self, job, request, bulk_actions=False):
|
|
54
|
-
logs = [entry | {"index": i} for i, entry in enumerate(
|
|
54
|
+
logs = [entry | {"index": i} for i, entry in enumerate(job.log_entries, start=1)]
|
|
55
55
|
table = self.table_class(logs, **self.get_table_kwargs())
|
|
56
56
|
table.configure(request)
|
|
57
57
|
return table
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# NetBox 4.4
|
|
2
|
-
from typing import TYPE_CHECKING
|
|
3
|
-
|
|
4
|
-
from .oldest import *
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from validity.models import ComplianceReport
|
|
9
|
-
from validity.scripts.data_models import RequestInfo
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def get_logs(job):
|
|
13
|
-
return job.log_entries
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def set_logs(job, logs):
|
|
17
|
-
job.log_entries = logs
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def enqueue(report: "ComplianceReport", request: "RequestInfo"):
|
|
21
|
-
queue = {}
|
|
22
|
-
enqueue_event(queue, report, request, "object_created")
|
|
23
|
-
flush_events(queue.values())
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# NetBox 4.3
|
|
2
|
-
from pydoc import locate
|
|
3
|
-
from typing import TYPE_CHECKING
|
|
4
|
-
|
|
5
|
-
from extras.events import enqueue_event, flush_events
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if TYPE_CHECKING:
|
|
9
|
-
from validity.models import ComplianceReport
|
|
10
|
-
from validity.scripts.data_models import RequestInfo
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
BaseModelFilter = locate("netbox.graphql.filter_mixins.BaseFilterMixin")
|
|
14
|
-
NetBoxModelFilter = locate("netbox.graphql.filter_mixins.NetBoxModelFilterMixin")
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def get_logs(job):
|
|
18
|
-
return job.data["log"]
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def set_logs(job, logs):
|
|
22
|
-
if not isinstance(job.data, dict):
|
|
23
|
-
job.data = {}
|
|
24
|
-
job.data["log"] = logs
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def enqueue(report: "ComplianceReport", request: "RequestInfo"):
|
|
28
|
-
queue = {}
|
|
29
|
-
enqueue_event(queue, report, request.get_user(), request.id, "object_created")
|
|
30
|
-
flush_events(queue.values())
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/netbox_validity.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/__init__.py
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/backend.py
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/routeros.py
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/serializable.py
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/compliance/serialization/textfsm.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/migrations/0010_squashed_initial.py
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/migrations/0012_backuppoint_devicerole.py
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/migrations/0013_compliancetest_enabled.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/static/validity/connection-type-select.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/aux_tab_table.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/backuppoint.html
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/compliance_results.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/compliancereport.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/complianceselector.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/compliancetest.html
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/device_state.html
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/datasource_link.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/parameters.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/path_with_link.html
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/related_objects.html
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/search_form.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/inc/yaml_card.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/poller_edit.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/report_devices.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/scripts/result.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/scripts/result_htmx.html
RENAMED
|
File without changes
|
{netbox_validity-3.4.3 → netbox_validity-3.5.0}/validity/templates/validity/scripts/run.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|