nautobot 2.1.0__py3-none-any.whl → 2.1.1__py3-none-any.whl

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.
Files changed (815) hide show
  1. nautobot/__init__.py +1 -3
  2. nautobot/apps/__init__.py +1 -2
  3. nautobot/apps/admin.py +0 -1
  4. nautobot/apps/api.py +0 -1
  5. nautobot/apps/change_logging.py +0 -1
  6. nautobot/apps/choices.py +0 -1
  7. nautobot/apps/datasources.py +0 -1
  8. nautobot/apps/exceptions.py +0 -1
  9. nautobot/apps/factory.py +0 -1
  10. nautobot/apps/filters.py +6 -9
  11. nautobot/apps/forms.py +1 -2
  12. nautobot/apps/graphql.py +0 -1
  13. nautobot/apps/jobs.py +0 -1
  14. nautobot/apps/models.py +1 -2
  15. nautobot/apps/querysets.py +0 -1
  16. nautobot/apps/secrets.py +0 -1
  17. nautobot/apps/tables.py +0 -1
  18. nautobot/apps/testing.py +0 -1
  19. nautobot/apps/ui.py +1 -3
  20. nautobot/apps/urls.py +0 -1
  21. nautobot/apps/utils.py +0 -1
  22. nautobot/apps/views.py +0 -1
  23. nautobot/circuits/api/serializers.py +1 -1
  24. nautobot/circuits/api/urls.py +1 -1
  25. nautobot/circuits/api/views.py +2 -1
  26. nautobot/circuits/apps.py +1 -1
  27. nautobot/circuits/choices.py +0 -1
  28. nautobot/circuits/factory.py +1 -1
  29. nautobot/circuits/filters.py +2 -1
  30. nautobot/circuits/forms.py +2 -2
  31. nautobot/circuits/homepage.py +0 -1
  32. nautobot/circuits/migrations/0001_initial_part_1.py +3 -1
  33. nautobot/circuits/migrations/0002_initial_part_2.py +2 -1
  34. nautobot/circuits/migrations/0003_auto_slug.py +1 -0
  35. nautobot/circuits/migrations/0005_providernetwork.py +4 -2
  36. nautobot/circuits/migrations/0013_alter_circuittermination__path.py +1 -0
  37. nautobot/circuits/migrations/0014_related_name_changes.py +1 -0
  38. nautobot/circuits/migrations/0016_tagsfield.py +1 -0
  39. nautobot/circuits/migrations/0018_status_nonnullable.py +1 -0
  40. nautobot/circuits/models.py +2 -2
  41. nautobot/circuits/navigation.py +0 -1
  42. nautobot/circuits/signals.py +3 -2
  43. nautobot/circuits/tables.py +1 -0
  44. nautobot/circuits/tests/integration/test_relationships.py +1 -1
  45. nautobot/circuits/tests/test_api.py +1 -1
  46. nautobot/circuits/tests/test_urls.py +1 -1
  47. nautobot/circuits/tests/test_views.py +1 -0
  48. nautobot/circuits/urls.py +1 -1
  49. nautobot/circuits/views.py +0 -2
  50. nautobot/core/__init__.py +0 -1
  51. nautobot/core/admin.py +3 -5
  52. nautobot/core/api/__init__.py +0 -1
  53. nautobot/core/api/metadata.py +4 -6
  54. nautobot/core/api/pagination.py +2 -2
  55. nautobot/core/api/parsers.py +1 -3
  56. nautobot/core/api/renderers.py +0 -1
  57. nautobot/core/api/schema.py +2 -3
  58. nautobot/core/api/serializers.py +9 -7
  59. nautobot/core/api/urls.py +1 -5
  60. nautobot/core/api/utils.py +4 -6
  61. nautobot/core/api/versioning.py +1 -1
  62. nautobot/core/api/views.py +22 -91
  63. nautobot/core/apps/__init__.py +5 -7
  64. nautobot/core/authentication.py +1 -1
  65. nautobot/core/celery/__init__.py +1 -2
  66. nautobot/core/celery/control.py +0 -2
  67. nautobot/core/celery/encoders.py +0 -1
  68. nautobot/core/celery/schedulers.py +1 -2
  69. nautobot/core/celery/task.py +1 -1
  70. nautobot/core/checks.py +1 -2
  71. nautobot/core/choices.py +2 -2
  72. nautobot/core/cli/__init__.py +2 -3
  73. nautobot/core/context_processors.py +1 -5
  74. nautobot/core/factory.py +2 -2
  75. nautobot/core/filters.py +1 -1
  76. nautobot/core/forms/fields.py +2 -4
  77. nautobot/core/forms/forms.py +1 -1
  78. nautobot/core/forms/search.py +1 -1
  79. nautobot/core/forms/utils.py +1 -1
  80. nautobot/core/graphql/__init__.py +2 -3
  81. nautobot/core/graphql/generators.py +1 -1
  82. nautobot/core/graphql/schema.py +6 -7
  83. nautobot/core/graphql/schema_init.py +0 -1
  84. nautobot/core/graphql/utils.py +1 -2
  85. nautobot/core/management/commands/generate_test_data.py +4 -6
  86. nautobot/core/management/commands/makemigrations.py +1 -1
  87. nautobot/core/management/commands/migrate.py +1 -1
  88. nautobot/core/management/commands/post_upgrade.py +0 -15
  89. nautobot/core/management/commands/refresh_content_type_cache.py +1 -2
  90. nautobot/core/management/commands/send_installation_metrics.py +2 -3
  91. nautobot/core/management/commands/validate_models.py +1 -1
  92. nautobot/core/middleware.py +2 -2
  93. nautobot/core/models/__init__.py +12 -12
  94. nautobot/core/models/fields.py +1 -1
  95. nautobot/core/models/generics.py +2 -3
  96. nautobot/core/models/managers.py +0 -1
  97. nautobot/core/models/name_color_content_types.py +2 -2
  98. nautobot/core/models/tree_queries.py +2 -4
  99. nautobot/core/models/validators.py +1 -1
  100. nautobot/core/releases.py +1 -1
  101. nautobot/core/runner/importer.py +2 -25
  102. nautobot/core/runner/runner.py +2 -2
  103. nautobot/core/runner/settings.py +1 -1
  104. nautobot/core/settings.py +9 -22
  105. nautobot/core/settings_funcs.py +1 -2
  106. nautobot/core/signals.py +0 -1
  107. nautobot/core/tables.py +1 -1
  108. nautobot/core/templates/graphene/graphiql.html +7 -1
  109. nautobot/core/templates/inc/footer.html +0 -7
  110. nautobot/core/templates/nautobot_config.py.j2 +0 -4
  111. nautobot/core/templatetags/bootstrapped_goodies_tags.py +6 -3
  112. nautobot/core/templatetags/buttons.py +1 -1
  113. nautobot/core/templatetags/helpers.py +5 -16
  114. nautobot/core/testing/__init__.py +1 -2
  115. nautobot/core/testing/api.py +2 -4
  116. nautobot/core/testing/filters.py +1 -1
  117. nautobot/core/testing/integration.py +2 -2
  118. nautobot/core/testing/migrations.py +1 -0
  119. nautobot/core/testing/mixins.py +1 -2
  120. nautobot/core/testing/schema.py +1 -1
  121. nautobot/core/testing/utils.py +3 -3
  122. nautobot/core/testing/views.py +4 -7
  123. nautobot/core/tests/integration/test_plugin_home.py +2 -1
  124. nautobot/core/tests/integration/test_plugin_navbar.py +1 -1
  125. nautobot/core/tests/nautobot_config.py +3 -3
  126. nautobot/core/tests/runner.py +3 -4
  127. nautobot/core/tests/test_api.py +6 -51
  128. nautobot/core/tests/test_authentication.py +2 -3
  129. nautobot/core/tests/test_checks.py +1 -2
  130. nautobot/core/tests/test_config.py +1 -1
  131. nautobot/core/tests/test_csv.py +3 -3
  132. nautobot/core/tests/test_factory.py +1 -3
  133. nautobot/core/tests/test_filters.py +3 -7
  134. nautobot/core/tests/test_forms.py +3 -6
  135. nautobot/core/tests/test_graphql.py +13 -14
  136. nautobot/core/tests/test_jinja_filters.py +4 -4
  137. nautobot/core/tests/test_jobs.py +1 -1
  138. nautobot/core/tests/test_models.py +1 -2
  139. nautobot/core/tests/test_navigations.py +2 -1
  140. nautobot/core/tests/test_openapi.py +0 -1
  141. nautobot/core/tests/test_paginator.py +2 -2
  142. nautobot/core/tests/test_releases.py +2 -2
  143. nautobot/core/tests/test_tables.py +1 -1
  144. nautobot/core/tests/test_templatetags_helpers.py +3 -2
  145. nautobot/core/tests/test_templatetags_netutils.py +1 -2
  146. nautobot/core/tests/test_utils.py +4 -8
  147. nautobot/core/tests/test_views.py +5 -2
  148. nautobot/core/tests/test_views_utils.py +0 -1
  149. nautobot/core/urls.py +4 -4
  150. nautobot/core/utils/color.py +1 -1
  151. nautobot/core/utils/data.py +1 -2
  152. nautobot/core/utils/filtering.py +4 -5
  153. nautobot/core/utils/git.py +3 -2
  154. nautobot/core/utils/logging.py +2 -1
  155. nautobot/core/utils/migrations.py +1 -0
  156. nautobot/core/utils/permissions.py +2 -4
  157. nautobot/core/views/__init__.py +5 -5
  158. nautobot/core/views/generic.py +4 -4
  159. nautobot/core/views/mixins.py +11 -12
  160. nautobot/core/views/renderers.py +1 -1
  161. nautobot/core/views/utils.py +2 -1
  162. nautobot/dcim/api/urls.py +1 -1
  163. nautobot/dcim/api/views.py +6 -5
  164. nautobot/dcim/apps.py +1 -1
  165. nautobot/dcim/choices.py +0 -1
  166. nautobot/dcim/constants.py +0 -1
  167. nautobot/dcim/elevations.py +1 -2
  168. nautobot/dcim/factory.py +10 -13
  169. nautobot/dcim/fields.py +1 -0
  170. nautobot/dcim/filters/__init__.py +2 -3
  171. nautobot/dcim/filters/mixins.py +1 -1
  172. nautobot/dcim/forms.py +10 -12
  173. nautobot/dcim/graphql/types.py +16 -17
  174. nautobot/dcim/migrations/0001_initial_part_1.py +4 -2
  175. nautobot/dcim/migrations/0002_initial_part_2.py +2 -1
  176. nautobot/dcim/migrations/0003_initial_part_3.py +2 -1
  177. nautobot/dcim/migrations/0004_initial_part_4.py +2 -1
  178. nautobot/dcim/migrations/0006_auto_slug.py +1 -0
  179. nautobot/dcim/migrations/0009_add_natural_indexing.py +1 -0
  180. nautobot/dcim/migrations/0010_interface_status.py +1 -0
  181. nautobot/dcim/migrations/0011_interface_status_data_migration.py +1 -0
  182. nautobot/dcim/migrations/0013_location_location_type.py +4 -2
  183. nautobot/dcim/migrations/0014_location_status_data_migration.py +1 -0
  184. nautobot/dcim/migrations/0016_device_components__timestamp_data_migration.py +0 -1
  185. nautobot/dcim/migrations/0018_device_redundancy_group.py +4 -2
  186. nautobot/dcim/migrations/0019_device_redundancy_group_data_migration.py +1 -0
  187. nautobot/dcim/migrations/0022_interface_redundancy_group.py +3 -1
  188. nautobot/dcim/migrations/0023_interface_redundancy_group_data_migration.py +1 -0
  189. nautobot/dcim/migrations/0024_move_site_fields_to_location_model.py +2 -1
  190. nautobot/dcim/migrations/0027_alter_interface_mac_address.py +1 -0
  191. nautobot/dcim/migrations/0028_alter_device_and_rack_role_add_new_role.py +1 -0
  192. nautobot/dcim/migrations/0029_device_and_rack_roles_data_migrations.py +1 -0
  193. nautobot/dcim/migrations/0033_add_tree_managers_and_foreign_keys_pre_data_migration.py +1 -0
  194. nautobot/dcim/migrations/0034_migrate_region_and_site_data_to_locations.py +1 -2
  195. nautobot/dcim/migrations/0038_fixup_fks_and_related_names.py +1 -0
  196. nautobot/dcim/migrations/0039_related_name_changes.py +1 -0
  197. nautobot/dcim/migrations/0042_alter_location_managers.py +1 -0
  198. nautobot/dcim/migrations/0044_tagsfield.py +1 -0
  199. nautobot/dcim/migrations/0047_status_nonnullable.py +1 -0
  200. nautobot/dcim/migrations/0051_interface_redundancy_group_nullable_status.py +1 -0
  201. nautobot/dcim/models/cables.py +3 -3
  202. nautobot/dcim/models/device_component_templates.py +6 -6
  203. nautobot/dcim/models/devices.py +9 -4
  204. nautobot/dcim/models/locations.py +6 -1
  205. nautobot/dcim/models/power.py +1 -1
  206. nautobot/dcim/models/racks.py +5 -4
  207. nautobot/dcim/navigation.py +0 -1
  208. nautobot/dcim/signals.py +3 -2
  209. nautobot/dcim/tables/__init__.py +5 -4
  210. nautobot/dcim/tables/cables.py +1 -0
  211. nautobot/dcim/tables/devices.py +1 -0
  212. nautobot/dcim/tables/power.py +1 -0
  213. nautobot/dcim/tables/racks.py +2 -1
  214. nautobot/dcim/tests/test_api.py +5 -7
  215. nautobot/dcim/tests/test_cablepaths.py +0 -1
  216. nautobot/dcim/tests/test_filters.py +14 -12
  217. nautobot/dcim/tests/test_forms.py +2 -3
  218. nautobot/dcim/tests/test_migrations.py +2 -2
  219. nautobot/dcim/tests/test_models.py +2 -2
  220. nautobot/dcim/tests/test_views.py +7 -8
  221. nautobot/dcim/urls.py +3 -2
  222. nautobot/dcim/utils.py +1 -1
  223. nautobot/dcim/views.py +4 -3
  224. nautobot/extras/admin.py +2 -1
  225. nautobot/extras/api/customfields.py +0 -2
  226. nautobot/extras/api/mixins.py +0 -1
  227. nautobot/extras/api/serializers.py +4 -4
  228. nautobot/extras/api/urls.py +1 -1
  229. nautobot/extras/api/views.py +1 -1
  230. nautobot/extras/apps.py +3 -4
  231. nautobot/extras/choices.py +3 -4
  232. nautobot/extras/context_managers.py +1 -1
  233. nautobot/extras/datasources/__init__.py +1 -1
  234. nautobot/extras/datasources/git.py +6 -6
  235. nautobot/extras/datasources/utils.py +0 -1
  236. nautobot/extras/factory.py +1 -1
  237. nautobot/extras/filters/__init__.py +2 -3
  238. nautobot/extras/filters/customfields.py +0 -1
  239. nautobot/extras/filters/mixins.py +1 -1
  240. nautobot/extras/forms/__init__.py +3 -4
  241. nautobot/extras/forms/base.py +1 -1
  242. nautobot/extras/forms/forms.py +3 -3
  243. nautobot/extras/forms/mixins.py +1 -1
  244. nautobot/extras/graphql/types.py +2 -2
  245. nautobot/extras/health_checks.py +1 -1
  246. nautobot/extras/jobs.py +1 -2
  247. nautobot/extras/management/__init__.py +0 -1
  248. nautobot/extras/management/commands/refresh_dynamic_group_member_caches.py +1 -1
  249. nautobot/extras/management/commands/runjob.py +3 -3
  250. nautobot/extras/management/commands/webhook_receiver.py +1 -2
  251. nautobot/extras/migrations/0001_initial_part_1.py +2 -1
  252. nautobot/extras/migrations/0002_initial_part_2.py +2 -1
  253. nautobot/extras/migrations/0003_initial_part_3.py +1 -0
  254. nautobot/extras/migrations/0006_graphqlquery.py +2 -1
  255. nautobot/extras/migrations/0007_configcontextschema.py +3 -1
  256. nautobot/extras/migrations/0009_computedfield.py +3 -1
  257. nautobot/extras/migrations/0011_fileattachment_fileproxy.py +3 -1
  258. nautobot/extras/migrations/0012_healthchecktestmodel.py +2 -1
  259. nautobot/extras/migrations/0014_auto_slug.py +1 -0
  260. nautobot/extras/migrations/0015_scheduled_job.py +3 -1
  261. nautobot/extras/migrations/0016_secret.py +4 -2
  262. nautobot/extras/migrations/0017_joblogentry.py +2 -1
  263. nautobot/extras/migrations/0018_joblog_data_migration.py +2 -1
  264. nautobot/extras/migrations/0021_customfield_changelog_data.py +3 -2
  265. nautobot/extras/migrations/0022_objectchange_object_datav2.py +1 -0
  266. nautobot/extras/migrations/0023_job_model.py +4 -2
  267. nautobot/extras/migrations/0026_job_add_gitrepository_fk.py +1 -0
  268. nautobot/extras/migrations/0029_dynamicgroup.py +3 -1
  269. nautobot/extras/migrations/0031_tag_content_types.py +1 -0
  270. nautobot/extras/migrations/0032_tag_content_types_data_migration.py +1 -0
  271. nautobot/extras/migrations/0040_dynamicgroup__dynamicgroupmembership.py +2 -1
  272. nautobot/extras/migrations/0041_jobresult_job_kwargs.py +1 -0
  273. nautobot/extras/migrations/0043_note.py +3 -1
  274. nautobot/extras/migrations/0044_add_job_hook.py +3 -1
  275. nautobot/extras/migrations/0046_populate_custom_field_slug_label.py +1 -0
  276. nautobot/extras/migrations/0047_enforce_custom_field_slug.py +1 -0
  277. nautobot/extras/migrations/0051_add_job_task_queues.py +1 -0
  278. nautobot/extras/migrations/0055_configcontext_dynamic_groups.py +1 -0
  279. nautobot/extras/migrations/0057_jobbutton.py +3 -1
  280. nautobot/extras/migrations/0065_configcontext_data_migrations.py +1 -0
  281. nautobot/extras/migrations/0067_migrate_job_result_status.py +0 -1
  282. nautobot/extras/migrations/0068_jobresult__add_celery_fields.py +1 -0
  283. nautobot/extras/migrations/0071_replace_related_names.py +1 -0
  284. nautobot/extras/migrations/0077_migrate_custom_field_data.py +1 -0
  285. nautobot/extras/migrations/0078_remove_name_field_and_make_label_field_non_nullable.py +1 -0
  286. nautobot/extras/migrations/0080_tagsfield.py +1 -0
  287. nautobot/extras/migrations/0082_rename_relationship_name_to_label.py +1 -0
  288. nautobot/extras/migrations/0083_ensure_relationship_keys_are_unique.py +1 -0
  289. nautobot/extras/migrations/0090_joblogentry__log_level_data_migration.py +0 -1
  290. nautobot/extras/migrations/0095_ensure_note_timestamps_are_unique.py +4 -5
  291. nautobot/extras/migrations/0097_alter_job_result_remove_result.py +1 -0
  292. nautobot/extras/migrations/0100_fileproxy_job_result.py +1 -0
  293. nautobot/extras/migrations/0101_externalintegration.py +3 -1
  294. nautobot/extras/models/__init__.py +2 -3
  295. nautobot/extras/models/change_logging.py +0 -1
  296. nautobot/extras/models/customfields.py +4 -4
  297. nautobot/extras/models/datasources.py +2 -2
  298. nautobot/extras/models/groups.py +3 -4
  299. nautobot/extras/models/jobs.py +12 -6
  300. nautobot/extras/models/models.py +2 -2
  301. nautobot/extras/models/relationships.py +3 -4
  302. nautobot/extras/models/roles.py +1 -1
  303. nautobot/extras/models/secrets.py +1 -3
  304. nautobot/extras/models/tags.py +0 -1
  305. nautobot/extras/navigation.py +0 -1
  306. nautobot/extras/plugins/__init__.py +6 -7
  307. nautobot/extras/plugins/tables.py +0 -1
  308. nautobot/extras/plugins/utils.py +1 -1
  309. nautobot/extras/plugins/views.py +1 -2
  310. nautobot/extras/querysets.py +3 -3
  311. nautobot/extras/signals.py +6 -7
  312. nautobot/extras/tables.py +4 -4
  313. nautobot/extras/tasks.py +1 -2
  314. nautobot/extras/templates/extras/configcontext_edit.html +1 -1
  315. nautobot/extras/templates/extras/graphqlquery.html +4 -2
  316. nautobot/extras/templates/extras/secretsgroup_edit.html +40 -45
  317. nautobot/extras/templatetags/custom_links.py +2 -3
  318. nautobot/extras/templatetags/job_buttons.py +2 -3
  319. nautobot/extras/templatetags/log_levels.py +0 -1
  320. nautobot/extras/templatetags/plugins.py +1 -1
  321. nautobot/extras/test_jobs/api_test_job.py +1 -2
  322. nautobot/extras/test_jobs/atomic_transaction.py +1 -2
  323. nautobot/extras/test_jobs/dry_run.py +1 -2
  324. nautobot/extras/test_jobs/fail.py +1 -2
  325. nautobot/extras/test_jobs/field_order.py +1 -1
  326. nautobot/extras/test_jobs/file_upload_fail.py +1 -2
  327. nautobot/extras/test_jobs/file_upload_pass.py +1 -2
  328. nautobot/extras/test_jobs/has_sensitive_variables.py +1 -2
  329. nautobot/extras/test_jobs/ipaddress_vars.py +1 -4
  330. nautobot/extras/test_jobs/job_button_receiver.py +1 -2
  331. nautobot/extras/test_jobs/job_hook_receiver.py +1 -2
  332. nautobot/extras/test_jobs/job_variables.py +1 -2
  333. nautobot/extras/test_jobs/location_with_custom_field.py +1 -2
  334. nautobot/extras/test_jobs/log_redaction.py +1 -2
  335. nautobot/extras/test_jobs/log_skip_db_logging.py +1 -2
  336. nautobot/extras/test_jobs/modify_db.py +1 -2
  337. nautobot/extras/test_jobs/object_var_optional.py +1 -2
  338. nautobot/extras/test_jobs/object_var_required.py +1 -2
  339. nautobot/extras/test_jobs/object_vars.py +1 -2
  340. nautobot/extras/test_jobs/pass.py +1 -2
  341. nautobot/extras/test_jobs/profiling.py +1 -2
  342. nautobot/extras/tests/integration/__init__.py +1 -1
  343. nautobot/extras/tests/integration/test_plugins.py +5 -4
  344. nautobot/extras/tests/integration/test_tagfilter.py +1 -1
  345. nautobot/extras/tests/test_api.py +7 -9
  346. nautobot/extras/tests/test_changelog.py +3 -2
  347. nautobot/extras/tests/test_context_managers.py +6 -3
  348. nautobot/extras/tests/test_customfields.py +2 -2
  349. nautobot/extras/tests/test_datasources.py +1 -1
  350. nautobot/extras/tests/test_dynamicgroups.py +2 -3
  351. nautobot/extras/tests/test_filters.py +2 -2
  352. nautobot/extras/tests/test_forms.py +5 -6
  353. nautobot/extras/tests/test_git.py +1 -1
  354. nautobot/extras/tests/test_job_variables.py +0 -1
  355. nautobot/extras/tests/test_jobs.py +5 -5
  356. nautobot/extras/tests/test_models.py +2 -2
  357. nautobot/extras/tests/test_notes.py +0 -1
  358. nautobot/extras/tests/test_plugins.py +8 -9
  359. nautobot/extras/tests/test_relationships.py +3 -3
  360. nautobot/extras/tests/test_tags.py +1 -1
  361. nautobot/extras/tests/test_views.py +8 -9
  362. nautobot/extras/tests/test_webhooks.py +4 -5
  363. nautobot/extras/utils.py +11 -9
  364. nautobot/extras/views.py +3 -3
  365. nautobot/generate_secret_key.py +1 -1
  366. nautobot/ipam/api/serializers.py +1 -2
  367. nautobot/ipam/api/urls.py +1 -1
  368. nautobot/ipam/api/views.py +1 -0
  369. nautobot/ipam/apps.py +2 -1
  370. nautobot/ipam/factory.py +6 -9
  371. nautobot/ipam/fields.py +1 -1
  372. nautobot/ipam/filters.py +4 -3
  373. nautobot/ipam/formfields.py +1 -2
  374. nautobot/ipam/forms.py +4 -3
  375. nautobot/ipam/graphql/types.py +1 -1
  376. nautobot/ipam/homepage.py +0 -1
  377. nautobot/ipam/lookups.py +2 -3
  378. nautobot/ipam/migrations/0002_initial_part_2.py +2 -1
  379. nautobot/ipam/migrations/0003_remove_max_length.py +1 -0
  380. nautobot/ipam/migrations/0004_fixup_p2p_broadcast.py +0 -1
  381. nautobot/ipam/migrations/0005_auto_slug.py +1 -0
  382. nautobot/ipam/migrations/0010_alter_ipam_role_add_new_role.py +1 -0
  383. nautobot/ipam/migrations/0011_migrate_ipam_role_data.py +1 -0
  384. nautobot/ipam/migrations/0020_related_name_changes.py +1 -0
  385. nautobot/ipam/migrations/0022_aggregate_to_prefix_data_migration.py +1 -2
  386. nautobot/ipam/migrations/0024_interface_to_ipaddress_m2m.py +2 -1
  387. nautobot/ipam/migrations/0025_interface_ipaddress_m2m_data_migration.py +1 -0
  388. nautobot/ipam/migrations/0028_tagsfield.py +1 -0
  389. nautobot/ipam/migrations/0030_ipam__namespaces.py +3 -1
  390. nautobot/ipam/migrations/0034_status_nonnullable.py +1 -0
  391. nautobot/ipam/migrations/0037_data_migration_vlan_group_name_uniqueness.py +0 -1
  392. nautobot/ipam/models.py +7 -7
  393. nautobot/ipam/navigation.py +0 -1
  394. nautobot/ipam/querysets.py +2 -2
  395. nautobot/ipam/tables.py +4 -3
  396. nautobot/ipam/tests/test_api.py +2 -2
  397. nautobot/ipam/tests/test_filters.py +7 -7
  398. nautobot/ipam/tests/test_migrations.py +1 -2
  399. nautobot/ipam/tests/test_models.py +2 -2
  400. nautobot/ipam/tests/test_ordering.py +1 -1
  401. nautobot/ipam/tests/test_querysets.py +2 -2
  402. nautobot/ipam/tests/test_views.py +6 -6
  403. nautobot/ipam/urls.py +1 -0
  404. nautobot/ipam/utils/migrations.py +0 -1
  405. nautobot/ipam/views.py +6 -6
  406. nautobot/project-static/docs/404.html +1 -43
  407. nautobot/project-static/docs/apps/index.html +1 -43
  408. nautobot/project-static/docs/apps/nautobot-apps.html +1 -43
  409. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +389 -431
  410. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +12 -54
  411. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +2452 -2486
  412. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +1 -43
  413. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +90 -132
  414. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +1 -43
  415. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +1 -43
  416. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +1 -43
  417. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +1 -43
  418. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +26 -68
  419. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +993 -1035
  420. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +170 -212
  421. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +1789 -1831
  422. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +961 -1003
  423. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +1 -43
  424. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +1 -43
  425. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +2 -44
  426. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +6904 -6946
  427. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +974 -1016
  428. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +1 -43
  429. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +1159 -1197
  430. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +1796 -1832
  431. nautobot/project-static/docs/development/apps/api/configuration-view.html +1 -43
  432. nautobot/project-static/docs/development/apps/api/database-backend-config.html +1 -43
  433. nautobot/project-static/docs/development/apps/api/models/django-admin.html +1 -43
  434. nautobot/project-static/docs/development/apps/api/models/global-search.html +1 -43
  435. nautobot/project-static/docs/development/apps/api/models/graphql.html +1 -43
  436. nautobot/project-static/docs/development/apps/api/models/index.html +1 -43
  437. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +1 -43
  438. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +1 -43
  439. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +1 -43
  440. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +1 -43
  441. nautobot/project-static/docs/development/apps/api/platform-features/index.html +3 -45
  442. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +1 -43
  443. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +1 -43
  444. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +5 -43
  445. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +1 -43
  446. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +1 -43
  447. nautobot/project-static/docs/development/apps/api/prometheus.html +1 -43
  448. nautobot/project-static/docs/development/apps/api/setup.html +1 -43
  449. nautobot/project-static/docs/development/apps/api/testing.html +1 -43
  450. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +1 -43
  451. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +1 -43
  452. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +1 -43
  453. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +1 -43
  454. nautobot/project-static/docs/development/apps/api/ui-extensions/object-detail-views.html +1 -43
  455. nautobot/project-static/docs/development/apps/api/views/base-template.html +1 -43
  456. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +6 -48
  457. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +1 -43
  458. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +1 -43
  459. nautobot/project-static/docs/development/apps/api/views/index.html +1 -43
  460. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +1 -43
  461. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +1 -43
  462. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +1 -43
  463. nautobot/project-static/docs/development/apps/api/views/notes.html +3 -45
  464. nautobot/project-static/docs/development/apps/api/views/rest-api.html +1 -43
  465. nautobot/project-static/docs/development/apps/api/views/urls.html +1 -43
  466. nautobot/project-static/docs/development/apps/api/views/view-overrides.html +13 -5357
  467. nautobot/project-static/docs/development/apps/index.html +1 -43
  468. nautobot/project-static/docs/development/apps/migration/code-updates.html +1 -43
  469. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +1 -43
  470. nautobot/project-static/docs/development/apps/migration/from-v1.html +1 -44
  471. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +1 -43
  472. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +1 -43
  473. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +1 -43
  474. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +1 -43
  475. nautobot/project-static/docs/development/apps/porting-from-netbox.html +1 -43
  476. nautobot/project-static/docs/development/core/application-registry.html +1 -43
  477. nautobot/project-static/docs/development/core/best-practices.html +1 -43
  478. nautobot/project-static/docs/development/core/bootstrap-ui.html +1 -43
  479. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +1 -43
  480. nautobot/project-static/docs/development/core/extending-models.html +1 -43
  481. nautobot/project-static/docs/development/core/generic-views.html +1 -43
  482. nautobot/project-static/docs/development/core/getting-started.html +108 -257
  483. nautobot/project-static/docs/development/core/homepage.html +1 -43
  484. nautobot/project-static/docs/development/core/index.html +1 -43
  485. nautobot/project-static/docs/development/core/model-features.html +1 -43
  486. nautobot/project-static/docs/development/core/natural-keys.html +1 -43
  487. nautobot/project-static/docs/development/core/navigation-menu.html +1 -43
  488. nautobot/project-static/docs/development/core/react-ui.html +13 -5640
  489. nautobot/project-static/docs/development/core/release-checklist.html +4 -52
  490. nautobot/project-static/docs/development/core/role-internals.html +4 -46
  491. nautobot/project-static/docs/development/core/style-guide.html +61 -102
  492. nautobot/project-static/docs/development/core/templates.html +4 -46
  493. nautobot/project-static/docs/development/core/testing.html +1 -43
  494. nautobot/project-static/docs/development/core/user-preferences.html +1 -43
  495. nautobot/project-static/docs/development/index.html +1 -43
  496. nautobot/project-static/docs/development/jobs/index.html +1 -43
  497. nautobot/project-static/docs/development/jobs/migration/from-v1.html +1 -43
  498. nautobot/project-static/docs/development/react-ui.html +3 -3
  499. nautobot/project-static/docs/index.html +2 -47
  500. nautobot/project-static/docs/release-notes/index.html +1 -43
  501. nautobot/project-static/docs/release-notes/version-1.0.html +1 -43
  502. nautobot/project-static/docs/release-notes/version-1.1.html +1 -43
  503. nautobot/project-static/docs/release-notes/version-1.2.html +1 -43
  504. nautobot/project-static/docs/release-notes/version-1.3.html +1 -43
  505. nautobot/project-static/docs/release-notes/version-1.4.html +1 -43
  506. nautobot/project-static/docs/release-notes/version-1.5.html +1 -43
  507. nautobot/project-static/docs/release-notes/version-1.6.html +1 -43
  508. nautobot/project-static/docs/release-notes/version-2.0.html +1 -43
  509. nautobot/project-static/docs/release-notes/version-2.1.html +189 -77
  510. nautobot/project-static/docs/search/search_index.json +1 -1
  511. nautobot/project-static/docs/sitemap.xml +236 -251
  512. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  513. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +1 -43
  514. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +4 -46
  515. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +1 -43
  516. nautobot/project-static/docs/user-guide/administration/configuration/index.html +1 -43
  517. nautobot/project-static/docs/user-guide/administration/configuration/node-configuration.html +13 -5389
  518. nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +1 -65
  519. nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +1 -43
  520. nautobot/project-static/docs/user-guide/administration/guides/caching.html +1 -43
  521. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +1 -43
  522. nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +1 -43
  523. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +1 -43
  524. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +1 -43
  525. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +1 -43
  526. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +1 -43
  527. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +1 -43
  528. nautobot/project-static/docs/user-guide/administration/installation/docker.html +1 -43
  529. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +1 -43
  530. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +1 -43
  531. nautobot/project-static/docs/user-guide/administration/installation/index.html +1 -64
  532. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +2 -57
  533. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +5 -94
  534. nautobot/project-static/docs/user-guide/administration/installation/selinux-troubleshooting.html +1 -43
  535. nautobot/project-static/docs/user-guide/administration/installation/services.html +1 -43
  536. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +1 -43
  537. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +1 -43
  538. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +76 -137
  539. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +1 -43
  540. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +1 -43
  541. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +1 -43
  542. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +1 -43
  543. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +1 -43
  544. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +1 -43
  545. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +1 -43
  546. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +1 -43
  547. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +1 -43
  548. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +1 -43
  549. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +1 -43
  550. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +1 -43
  551. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +1 -43
  552. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +1 -43
  553. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +1 -43
  554. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +1 -43
  555. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +1 -43
  556. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +1 -43
  557. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +1 -43
  558. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +1 -43
  559. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +1 -43
  560. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +1 -43
  561. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +1 -43
  562. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +2 -44
  563. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +1 -43
  564. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +1 -43
  565. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +1 -43
  566. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +1 -43
  567. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +1 -43
  568. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +1 -43
  569. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +1 -43
  570. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +1 -43
  571. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +1 -43
  572. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +1 -43
  573. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +1 -43
  574. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +1 -43
  575. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +1 -43
  576. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +1 -43
  577. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +1 -43
  578. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +1 -43
  579. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +1 -43
  580. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +1 -43
  581. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +1 -43
  582. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +1 -43
  583. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +1 -43
  584. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +1 -43
  585. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +1 -43
  586. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +1 -43
  587. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +1 -43
  588. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +1 -43
  589. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +1 -43
  590. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +1 -43
  591. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +1 -43
  592. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +1 -43
  593. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +1 -43
  594. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +1 -43
  595. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +1 -43
  596. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +1 -43
  597. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +1 -43
  598. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +1 -43
  599. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +1 -43
  600. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +1 -43
  601. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +1 -43
  602. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +1 -43
  603. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +1 -43
  604. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +1 -43
  605. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +1 -43
  606. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +1 -43
  607. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +1 -43
  608. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +1 -43
  609. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +1 -43
  610. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +1 -43
  611. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +1 -43
  612. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +1 -43
  613. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +1 -43
  614. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +1 -43
  615. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +23 -79
  616. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +1 -43
  617. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +1 -43
  618. nautobot/project-static/docs/user-guide/index.html +1 -43
  619. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +1 -43
  620. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +1 -43
  621. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +1 -43
  622. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +1 -43
  623. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +1 -43
  624. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +1 -43
  625. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +1 -43
  626. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +1 -43
  627. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +1 -43
  628. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +1 -43
  629. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +1 -43
  630. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +1 -43
  631. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +1 -43
  632. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +1 -43
  633. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +1 -43
  634. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +1 -43
  635. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +1 -43
  636. nautobot/project-static/docs/user-guide/platform-functionality/note.html +1 -43
  637. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +1 -43
  638. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +1 -43
  639. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +1 -43
  640. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +1 -43
  641. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +1 -43
  642. nautobot/project-static/docs/user-guide/platform-functionality/role.html +1 -43
  643. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +1 -43
  644. nautobot/project-static/docs/user-guide/platform-functionality/status.html +1 -43
  645. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +1 -43
  646. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +1 -43
  647. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +5 -43
  648. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +1 -43
  649. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +1 -43
  650. nautobot/project-static/js/theme.js +0 -5
  651. nautobot/tenancy/api/urls.py +1 -1
  652. nautobot/tenancy/api/views.py +1 -0
  653. nautobot/tenancy/factory.py +2 -2
  654. nautobot/tenancy/filters/__init__.py +1 -2
  655. nautobot/tenancy/forms.py +2 -2
  656. nautobot/tenancy/homepage.py +0 -1
  657. nautobot/tenancy/migrations/0001_initial.py +2 -1
  658. nautobot/tenancy/migrations/0002_auto_slug.py +1 -0
  659. nautobot/tenancy/migrations/0004_change_tree_manager_on_tree_models.py +1 -0
  660. nautobot/tenancy/migrations/0008_tagsfield.py +1 -0
  661. nautobot/tenancy/models.py +0 -1
  662. nautobot/tenancy/navigation.py +0 -1
  663. nautobot/tenancy/tables.py +1 -0
  664. nautobot/tenancy/tests/test_filters.py +5 -5
  665. nautobot/tenancy/urls.py +1 -0
  666. nautobot/tenancy/views.py +2 -2
  667. nautobot/users/admin.py +1 -2
  668. nautobot/users/api/urls.py +1 -1
  669. nautobot/users/api/views.py +6 -4
  670. nautobot/users/factory.py +1 -3
  671. nautobot/users/filters.py +4 -4
  672. nautobot/users/forms.py +1 -0
  673. nautobot/users/migrations/0004_alter_user_managers.py +1 -0
  674. nautobot/users/migrations/0008_make_object_permission_a_changelogged_model.py +22 -0
  675. nautobot/users/models.py +2 -2
  676. nautobot/users/tests/test_api.py +7 -6
  677. nautobot/users/tests/test_filters.py +0 -1
  678. nautobot/users/tests/test_models.py +0 -1
  679. nautobot/users/tests/test_password_ui.py +1 -1
  680. nautobot/users/views.py +2 -2
  681. nautobot/virtualization/api/urls.py +1 -1
  682. nautobot/virtualization/api/views.py +2 -1
  683. nautobot/virtualization/apps.py +1 -1
  684. nautobot/virtualization/choices.py +0 -1
  685. nautobot/virtualization/factory.py +1 -1
  686. nautobot/virtualization/filters.py +1 -1
  687. nautobot/virtualization/forms.py +6 -6
  688. nautobot/virtualization/homepage.py +0 -1
  689. nautobot/virtualization/migrations/0003_vminterface_verbose_name.py +1 -0
  690. nautobot/virtualization/migrations/0004_auto_slug.py +1 -0
  691. nautobot/virtualization/migrations/0005_add_natural_indexing.py +1 -0
  692. nautobot/virtualization/migrations/0006_vminterface_status.py +1 -0
  693. nautobot/virtualization/migrations/0007_vminterface_status_data_migration.py +1 -0
  694. nautobot/virtualization/migrations/0011_alter_vminterface_mac_address.py +1 -0
  695. nautobot/virtualization/migrations/0012_alter_virtualmachine_role_add_new_role.py +1 -0
  696. nautobot/virtualization/migrations/0013_migrate_virtualmachine_role_data.py +1 -0
  697. nautobot/virtualization/migrations/0018_related_name_changes.py +1 -0
  698. nautobot/virtualization/migrations/0021_tagsfield_and_vminterface_to_primarymodel.py +1 -0
  699. nautobot/virtualization/migrations/0025_status_nonnullable.py +1 -0
  700. nautobot/virtualization/models.py +1 -2
  701. nautobot/virtualization/navigation.py +0 -1
  702. nautobot/virtualization/signals.py +0 -1
  703. nautobot/virtualization/tables.py +1 -0
  704. nautobot/virtualization/tests/test_filters.py +3 -3
  705. nautobot/virtualization/tests/test_models.py +1 -1
  706. nautobot/virtualization/tests/test_views.py +2 -2
  707. nautobot/virtualization/urls.py +1 -0
  708. nautobot/virtualization/views.py +1 -1
  709. {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/METADATA +1 -1
  710. {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/RECORD +713 -814
  711. nautobot/core/management/commands/build_ui.py +0 -281
  712. nautobot/core/templates/base_react.html +0 -55
  713. nautobot/core/tests/test_cli.py +0 -25
  714. nautobot/ui/.eslintignore +0 -3
  715. nautobot/ui/.gitignore +0 -7
  716. nautobot/ui/.prettierignore +0 -6
  717. nautobot/ui/.prettierrc +0 -4
  718. nautobot/ui/README.md +0 -27
  719. nautobot/ui/config/env.js +0 -102
  720. nautobot/ui/config/getHttpsConfig.js +0 -68
  721. nautobot/ui/config/jest/babelTransform.js +0 -14
  722. nautobot/ui/config/jest/cssTransform.js +0 -12
  723. nautobot/ui/config/jest/fileTransform.js +0 -38
  724. nautobot/ui/config/modules.js +0 -151
  725. nautobot/ui/config/paths.js +0 -67
  726. nautobot/ui/config/webpack/persistentCache/createEnvironmentHash.js +0 -8
  727. nautobot/ui/config/webpack.config.js +0 -674
  728. nautobot/ui/config/webpackDevServer.config.js +0 -127
  729. nautobot/ui/jest.config.js +0 -35
  730. nautobot/ui/jsconfig.json +0 -4
  731. nautobot/ui/package-lock.json +0 -22947
  732. nautobot/ui/package.json +0 -119
  733. nautobot/ui/public/index.html +0 -47
  734. nautobot/ui/public/logo192.png +0 -0
  735. nautobot/ui/public/logo512.png +0 -0
  736. nautobot/ui/public/manifest.json +0 -25
  737. nautobot/ui/public/nautobot_logo.svg +0 -131
  738. nautobot/ui/public/robots.txt +0 -3
  739. nautobot/ui/scripts/build.js +0 -224
  740. nautobot/ui/scripts/start.js +0 -140
  741. nautobot/ui/scripts/test.js +0 -40
  742. nautobot/ui/src/App.js +0 -79
  743. nautobot/ui/src/components/AppFullWidthComponents.js +0 -8
  744. nautobot/ui/src/components/AppTab.js +0 -40
  745. nautobot/ui/src/components/Apps.js +0 -60
  746. nautobot/ui/src/components/FeedbackModal.js +0 -123
  747. nautobot/ui/src/components/FiltersPanel.js +0 -693
  748. nautobot/ui/src/components/HomeChangelogPanel.js +0 -98
  749. nautobot/ui/src/components/HomePanel.js +0 -58
  750. nautobot/ui/src/components/JobHistoryTable.js +0 -78
  751. nautobot/ui/src/components/Layout.js +0 -76
  752. nautobot/ui/src/components/LoadingWidget.js +0 -14
  753. nautobot/ui/src/components/Navbar.js +0 -204
  754. nautobot/ui/src/components/NotificationPopover.js +0 -27
  755. nautobot/ui/src/components/ObjectTable/ObjectListTable.js +0 -300
  756. nautobot/ui/src/components/ObjectTable/ObjectTable.js +0 -96
  757. nautobot/ui/src/components/ObjectTable/ObjectTableItem.js +0 -70
  758. nautobot/ui/src/components/ObjectTable/index.js +0 -3
  759. nautobot/ui/src/components/Pagination/PageNumberForm.js +0 -228
  760. nautobot/ui/src/components/Pagination/PageSizeForm.js +0 -65
  761. nautobot/ui/src/components/Pagination/Pagination.js +0 -67
  762. nautobot/ui/src/components/Pagination/index.js +0 -3
  763. nautobot/ui/src/components/ReferenceDataTag.js +0 -35
  764. nautobot/ui/src/components/Retrieve/RenderChangeLogsTab.js +0 -58
  765. nautobot/ui/src/components/Retrieve/RenderColumn.js +0 -30
  766. nautobot/ui/src/components/Retrieve/RenderGroup.js +0 -24
  767. nautobot/ui/src/components/Retrieve/RenderHeader.js +0 -125
  768. nautobot/ui/src/components/Retrieve/RenderNotesTab.js +0 -60
  769. nautobot/ui/src/components/Retrieve/RenderTable.js +0 -33
  770. nautobot/ui/src/components/Retrieve/RenderTabs.js +0 -56
  771. nautobot/ui/src/components/Retrieve/index.js +0 -7
  772. nautobot/ui/src/components/RouterButton.js +0 -10
  773. nautobot/ui/src/components/RouterLink.js +0 -10
  774. nautobot/ui/src/components/SidebarNav.js +0 -156
  775. nautobot/ui/src/components/__tests__/AppFullWidthComponents.test.js +0 -16
  776. nautobot/ui/src/components/__tests__/AppTab.test.js +0 -21
  777. nautobot/ui/src/components/__tests__/Apps.test.js +0 -14
  778. nautobot/ui/src/components/__tests__/Layout.test.js +0 -33
  779. nautobot/ui/src/components/__tests__/PageSizeForm.test.js +0 -13
  780. nautobot/ui/src/components/__tests__/Pagination.test.js +0 -43
  781. nautobot/ui/src/components/__tests__/Table.test.js +0 -39
  782. nautobot/ui/src/components/__tests__/TableItem.test.js +0 -39
  783. nautobot/ui/src/components/index.js +0 -4
  784. nautobot/ui/src/constants/apiPath.js +0 -13
  785. nautobot/ui/src/constants/icons.js +0 -15
  786. nautobot/ui/src/constants/size.js +0 -15
  787. nautobot/ui/src/file_templates/app_imports.js.j2 +0 -7
  788. nautobot/ui/src/file_templates/jsconfig-base.json +0 -12
  789. nautobot/ui/src/index.js +0 -65
  790. nautobot/ui/src/reportWebVitals.js +0 -15
  791. nautobot/ui/src/router.js +0 -77
  792. nautobot/ui/src/utils/api.js +0 -160
  793. nautobot/ui/src/utils/app-import.js +0 -15
  794. nautobot/ui/src/utils/color.js +0 -15
  795. nautobot/ui/src/utils/date.js +0 -14
  796. nautobot/ui/src/utils/index.js +0 -15
  797. nautobot/ui/src/utils/navigation.js +0 -48
  798. nautobot/ui/src/utils/session.js +0 -64
  799. nautobot/ui/src/utils/store.js +0 -242
  800. nautobot/ui/src/utils/string.js +0 -6
  801. nautobot/ui/src/utils/url.js +0 -4
  802. nautobot/ui/src/views/Home.js +0 -142
  803. nautobot/ui/src/views/InstalledApps.js +0 -80
  804. nautobot/ui/src/views/Login.js +0 -48
  805. nautobot/ui/src/views/Logout.js +0 -20
  806. nautobot/ui/src/views/__tests__/BSCreateViewTemplate.test.js +0 -11
  807. nautobot/ui/src/views/__tests__/BSListViewTemplate.test.js +0 -107
  808. nautobot/ui/src/views/__tests__/Login.test.js +0 -15
  809. nautobot/ui/src/views/generic/GenericView.js +0 -191
  810. nautobot/ui/src/views/generic/ObjectCreate.js +0 -96
  811. nautobot/ui/src/views/generic/ObjectList.js +0 -137
  812. nautobot/ui/src/views/generic/ObjectRetrieve.js +0 -87
  813. {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/LICENSE.txt +0 -0
  814. {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/WHEEL +0 -0
  815. {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/entry_points.txt +0 -0
@@ -3,6 +3,7 @@ from django_tables2.utils import Accessor
3
3
 
4
4
  from nautobot.core.tables import BaseTable, BooleanColumn
5
5
  from nautobot.dcim.models import ConsolePort, Interface, PowerPort
6
+
6
7
  from .cables import CableTable
7
8
  from .devices import (
8
9
  ConsolePortTable,
@@ -15,15 +16,15 @@ from .devices import (
15
16
  DeviceImportTable,
16
17
  DeviceInterfaceTable,
17
18
  DeviceInventoryItemTable,
18
- DevicePowerPortTable,
19
19
  DevicePowerOutletTable,
20
+ DevicePowerPortTable,
20
21
  DeviceRearPortTable,
21
22
  DeviceRedundancyGroupTable,
22
23
  DeviceTable,
23
24
  FrontPortTable,
24
- InterfaceTable,
25
- InterfaceRedundancyGroupTable,
26
25
  InterfaceRedundancyGroupAssociationTable,
26
+ InterfaceRedundancyGroupTable,
27
+ InterfaceTable,
27
28
  InventoryItemTable,
28
29
  PlatformTable,
29
30
  PowerOutletTable,
@@ -46,10 +47,10 @@ from .devicetypes import (
46
47
  from .locations import LocationTable, LocationTypeTable
47
48
  from .power import PowerFeedTable, PowerPanelTable
48
49
  from .racks import (
49
- RackTable,
50
50
  RackDetailTable,
51
51
  RackGroupTable,
52
52
  RackReservationTable,
53
+ RackTable,
53
54
  )
54
55
 
55
56
  __all__ = (
@@ -9,6 +9,7 @@ from nautobot.core.tables import (
9
9
  )
10
10
  from nautobot.dcim.models import Cable
11
11
  from nautobot.extras.tables import StatusTableMixin
12
+
12
13
  from .template_code import CABLE_LENGTH, CABLE_TERMINATION_PARENT
13
14
 
14
15
  __all__ = ("CableTable",)
@@ -30,6 +30,7 @@ from nautobot.dcim.models import (
30
30
  from nautobot.dcim.utils import cable_status_color_css
31
31
  from nautobot.extras.tables import RoleTableMixin, StatusTableMixin
32
32
  from nautobot.tenancy.tables import TenantColumn
33
+
33
34
  from .template_code import (
34
35
  CABLETERMINATION,
35
36
  CONSOLEPORT_BUTTONS,
@@ -9,6 +9,7 @@ from nautobot.core.tables import (
9
9
  )
10
10
  from nautobot.dcim.models import PowerFeed, PowerPanel
11
11
  from nautobot.extras.tables import StatusTableMixin
12
+
12
13
  from .devices import CableTerminationTable
13
14
 
14
15
  __all__ = (
@@ -11,7 +11,8 @@ from nautobot.core.tables import (
11
11
  from nautobot.dcim.models import Rack, RackGroup, RackReservation
12
12
  from nautobot.extras.tables import RoleTableMixin, StatusTableMixin
13
13
  from nautobot.tenancy.tables import TenantColumn
14
- from .template_code import TREE_LINK, RACKGROUP_ELEVATIONS, UTILIZATION_GRAPH
14
+
15
+ from .template_code import RACKGROUP_ELEVATIONS, TREE_LINK, UTILIZATION_GRAPH
15
16
 
16
17
  __all__ = (
17
18
  "RackTable",
@@ -1,14 +1,13 @@
1
1
  import json
2
2
  from unittest import skip
3
3
 
4
+ from constance.test import override_config
4
5
  from django.contrib.auth import get_user_model
5
6
  from django.contrib.contenttypes.models import ContentType
6
7
  from django.test import override_settings
7
8
  from django.urls import reverse
8
9
  from rest_framework import status
9
10
 
10
- from constance.test import override_config
11
-
12
11
  from nautobot.core.testing import APITestCase, APIViewTestCases
13
12
  from nautobot.core.testing.utils import generate_random_device_asset_tag_of_specified_size
14
13
  from nautobot.dcim.choices import (
@@ -34,17 +33,17 @@ from nautobot.dcim.models import (
34
33
  Interface,
35
34
  InterfaceRedundancyGroup,
36
35
  InterfaceTemplate,
36
+ InventoryItem,
37
37
  Location,
38
38
  LocationType,
39
39
  Manufacturer,
40
- InventoryItem,
41
40
  Platform,
42
41
  PowerFeed,
43
- PowerPort,
44
- PowerPortTemplate,
45
42
  PowerOutlet,
46
43
  PowerOutletTemplate,
47
44
  PowerPanel,
45
+ PowerPort,
46
+ PowerPortTemplate,
48
47
  Rack,
49
48
  RackGroup,
50
49
  RackReservation,
@@ -53,11 +52,10 @@ from nautobot.dcim.models import (
53
52
  VirtualChassis,
54
53
  )
55
54
  from nautobot.extras.models import ConfigContextSchema, Role, SecretsGroup, Status
56
- from nautobot.ipam.models import IPAddress, VLAN, VLANGroup, Namespace, Prefix
55
+ from nautobot.ipam.models import IPAddress, Namespace, Prefix, VLAN, VLANGroup
57
56
  from nautobot.tenancy.models import Tenant
58
57
  from nautobot.virtualization.models import Cluster, ClusterType
59
58
 
60
-
61
59
  # Use the proper swappable User model
62
60
  User = get_user_model()
63
61
 
@@ -21,7 +21,6 @@ from nautobot.dcim.models import (
21
21
  PowerPort,
22
22
  RearPort,
23
23
  )
24
-
25
24
  from nautobot.dcim.utils import object_to_path_node
26
25
  from nautobot.extras.models import Role, Status
27
26
 
@@ -34,8 +34,8 @@ from nautobot.dcim.filters import (
34
34
  FrontPortFilterSet,
35
35
  FrontPortTemplateFilterSet,
36
36
  InterfaceFilterSet,
37
- InterfaceRedundancyGroupFilterSet,
38
37
  InterfaceRedundancyGroupAssociationFilterSet,
38
+ InterfaceRedundancyGroupFilterSet,
39
39
  InterfaceTemplateFilterSet,
40
40
  InventoryItemFilterSet,
41
41
  LocationFilterSet,
@@ -43,11 +43,11 @@ from nautobot.dcim.filters import (
43
43
  ManufacturerFilterSet,
44
44
  PlatformFilterSet,
45
45
  PowerFeedFilterSet,
46
+ PowerOutletFilterSet,
47
+ PowerOutletTemplateFilterSet,
46
48
  PowerPanelFilterSet,
47
49
  PowerPortFilterSet,
48
50
  PowerPortTemplateFilterSet,
49
- PowerOutletFilterSet,
50
- PowerOutletTemplateFilterSet,
51
51
  RackFilterSet,
52
52
  RackGroupFilterSet,
53
53
  RackReservationFilterSet,
@@ -55,7 +55,6 @@ from nautobot.dcim.filters import (
55
55
  RearPortTemplateFilterSet,
56
56
  VirtualChassisFilterSet,
57
57
  )
58
-
59
58
  from nautobot.dcim.models import (
60
59
  Cable,
61
60
  ConsolePort,
@@ -79,11 +78,11 @@ from nautobot.dcim.models import (
79
78
  Manufacturer,
80
79
  Platform,
81
80
  PowerFeed,
81
+ PowerOutlet,
82
+ PowerOutletTemplate,
82
83
  PowerPanel,
83
84
  PowerPort,
84
85
  PowerPortTemplate,
85
- PowerOutlet,
86
- PowerOutletTemplate,
87
86
  Rack,
88
87
  RackGroup,
89
88
  RackReservation,
@@ -92,11 +91,10 @@ from nautobot.dcim.models import (
92
91
  VirtualChassis,
93
92
  )
94
93
  from nautobot.extras.models import Role, SecretsGroup, Status, Tag
95
- from nautobot.ipam.models import IPAddress, Prefix, Service, VLAN, VLANGroup, Namespace
94
+ from nautobot.ipam.models import IPAddress, Namespace, Prefix, Service, VLAN, VLANGroup
96
95
  from nautobot.tenancy.models import Tenant
97
96
  from nautobot.virtualization.models import Cluster, ClusterType, VirtualMachine
98
97
 
99
-
100
98
  # Use the proper swappable User model
101
99
  User = get_user_model()
102
100
 
@@ -1090,7 +1088,8 @@ class ConsoleServerPortTemplateTestCase(Mixins.ComponentTemplateMixin):
1090
1088
  class PowerPortTemplateTestCase(Mixins.ComponentTemplateMixin):
1091
1089
  queryset = PowerPortTemplate.objects.all()
1092
1090
  filterset = PowerPortTemplateFilterSet
1093
- generic_filter_tests = Mixins.ComponentTemplateMixin.generic_filter_tests + [
1091
+ generic_filter_tests = [
1092
+ *Mixins.ComponentTemplateMixin.generic_filter_tests,
1094
1093
  ("allocated_draw",),
1095
1094
  ("maximum_draw",),
1096
1095
  ("power_outlet_templates", "power_outlet_templates__id"),
@@ -1115,7 +1114,8 @@ class PowerPortTemplateTestCase(Mixins.ComponentTemplateMixin):
1115
1114
  class PowerOutletTemplateTestCase(Mixins.ComponentTemplateMixin):
1116
1115
  queryset = PowerOutletTemplate.objects.all()
1117
1116
  filterset = PowerOutletTemplateFilterSet
1118
- generic_filter_tests = Mixins.ComponentTemplateMixin.generic_filter_tests + [
1117
+ generic_filter_tests = [
1118
+ *Mixins.ComponentTemplateMixin.generic_filter_tests,
1119
1119
  ("power_port_template", "power_port_template__id"),
1120
1120
  ("power_port_template", "power_port_template__name"),
1121
1121
  ]
@@ -1173,7 +1173,8 @@ class InterfaceTemplateTestCase(Mixins.ComponentTemplateMixin):
1173
1173
  class FrontPortTemplateTestCase(Mixins.ComponentTemplateMixin):
1174
1174
  queryset = FrontPortTemplate.objects.all()
1175
1175
  filterset = FrontPortTemplateFilterSet
1176
- generic_filter_tests = Mixins.ComponentTemplateMixin.generic_filter_tests + [
1176
+ generic_filter_tests = [
1177
+ *Mixins.ComponentTemplateMixin.generic_filter_tests,
1177
1178
  ("rear_port_position",),
1178
1179
  ("rear_port_template", "rear_port_template__id"),
1179
1180
  ]
@@ -1190,7 +1191,8 @@ class FrontPortTemplateTestCase(Mixins.ComponentTemplateMixin):
1190
1191
  class RearPortTemplateTestCase(Mixins.ComponentTemplateMixin):
1191
1192
  queryset = RearPortTemplate.objects.all()
1192
1193
  filterset = RearPortTemplateFilterSet
1193
- generic_filter_tests = Mixins.ComponentTemplateMixin.generic_filter_tests + [
1194
+ generic_filter_tests = [
1195
+ *Mixins.ComponentTemplateMixin.generic_filter_tests,
1194
1196
  ("front_port_templates", "front_port_templates__id"),
1195
1197
  ]
1196
1198
 
@@ -1,8 +1,7 @@
1
1
  from django.test import TestCase
2
2
 
3
- from nautobot.dcim.forms import DeviceForm, DeviceFilterForm, InterfaceCreateForm, RackForm
4
3
  from nautobot.dcim.choices import DeviceFaceChoices, InterfaceTypeChoices, RackWidthChoices
5
-
4
+ from nautobot.dcim.forms import DeviceFilterForm, DeviceForm, InterfaceCreateForm, RackForm
6
5
  from nautobot.dcim.models import (
7
6
  Device,
8
7
  DeviceType,
@@ -13,8 +12,8 @@ from nautobot.dcim.models import (
13
12
  Platform,
14
13
  Rack,
15
14
  )
16
- from nautobot.tenancy.models import Tenant
17
15
  from nautobot.extras.models import Role, SecretsGroup, Status
16
+ from nautobot.tenancy.models import Tenant
18
17
  from nautobot.virtualization.models import Cluster, ClusterGroup, ClusterType
19
18
 
20
19
 
@@ -1,11 +1,11 @@
1
- import uuid
2
1
  from unittest import skip, skipIf
2
+ import uuid
3
3
 
4
4
  from django.db import connection
5
5
 
6
+ from nautobot.circuits.choices import CircuitTerminationSideChoices
6
7
  from nautobot.core.models.fields import TagsField
7
8
  from nautobot.core.testing.migrations import NautobotDataMigrationTest
8
- from nautobot.circuits.choices import CircuitTerminationSideChoices
9
9
  from nautobot.extras.choices import CustomFieldTypeChoices, ObjectChangeActionChoices, RelationshipTypeChoices
10
10
 
11
11
 
@@ -37,11 +37,11 @@ from nautobot.dcim.models import (
37
37
  LocationType,
38
38
  Manufacturer,
39
39
  Platform,
40
- PowerPort,
41
- PowerPortTemplate,
42
40
  PowerOutlet,
43
41
  PowerOutletTemplate,
44
42
  PowerPanel,
43
+ PowerPort,
44
+ PowerPortTemplate,
45
45
  Rack,
46
46
  RackGroup,
47
47
  RearPort,
@@ -1,19 +1,18 @@
1
1
  from decimal import Decimal
2
2
  import unittest
3
3
 
4
- import pytz
5
- import yaml
6
-
7
4
  from django.contrib.auth import get_user_model
8
5
  from django.contrib.contenttypes.models import ContentType
9
6
  from django.db.models import Q
10
7
  from django.test import override_settings
11
8
  from django.urls import reverse
12
9
  from netaddr import EUI
10
+ import pytz
11
+ import yaml
13
12
 
14
13
  from nautobot.circuits.choices import CircuitTerminationSideChoices
15
14
  from nautobot.circuits.models import Circuit, CircuitTermination, CircuitType, Provider
16
- from nautobot.core.testing import ViewTestCases, extract_page_body, ModelViewTestCase, post_data
15
+ from nautobot.core.testing import extract_page_body, ModelViewTestCase, post_data, ViewTestCases
17
16
  from nautobot.core.testing.utils import generate_random_device_asset_tag_of_specified_size
18
17
  from nautobot.dcim.choices import (
19
18
  CableLengthUnitChoices,
@@ -52,20 +51,20 @@ from nautobot.dcim.models import (
52
51
  FrontPort,
53
52
  FrontPortTemplate,
54
53
  Interface,
55
- InterfaceTemplate,
56
54
  InterfaceRedundancyGroup,
57
55
  InterfaceRedundancyGroupAssociation,
58
- Manufacturer,
56
+ InterfaceTemplate,
59
57
  InventoryItem,
60
58
  Location,
61
59
  LocationType,
60
+ Manufacturer,
62
61
  Platform,
63
62
  PowerFeed,
64
- PowerPort,
65
- PowerPortTemplate,
66
63
  PowerOutlet,
67
64
  PowerOutletTemplate,
68
65
  PowerPanel,
66
+ PowerPort,
67
+ PowerPortTemplate,
69
68
  Rack,
70
69
  RackGroup,
71
70
  RackReservation,
nautobot/dcim/urls.py CHANGED
@@ -1,8 +1,9 @@
1
1
  from django.urls import path
2
2
 
3
3
  from nautobot.core.views.routers import NautobotUIViewSetRouter
4
- from nautobot.extras.views import ObjectChangeLogView, ObjectDynamicGroupsView, ObjectNotesView, ImageAttachmentEditView
4
+ from nautobot.extras.views import ImageAttachmentEditView, ObjectChangeLogView, ObjectDynamicGroupsView, ObjectNotesView
5
5
  from nautobot.ipam.views import ServiceEditView
6
+
6
7
  from . import views
7
8
  from .models import (
8
9
  Cable,
@@ -19,9 +20,9 @@ from .models import (
19
20
  Manufacturer,
20
21
  Platform,
21
22
  PowerFeed,
23
+ PowerOutlet,
22
24
  PowerPanel,
23
25
  PowerPort,
24
- PowerOutlet,
25
26
  Rack,
26
27
  RackGroup,
27
28
  RackReservation,
nautobot/dcim/utils.py CHANGED
@@ -14,8 +14,8 @@ from netutils.lib_mapper import (
14
14
  SCRAPLI_LIB_MAPPER_REVERSE,
15
15
  )
16
16
 
17
- from nautobot.core.utils.config import get_settings_or_config
18
17
  from nautobot.core.utils.color import hex_to_rgb, lighten_color, rgb_to_hex
18
+ from nautobot.core.utils.config import get_settings_or_config
19
19
  from nautobot.dcim.choices import InterfaceModeChoices
20
20
  from nautobot.dcim.constants import NETUTILS_NETWORK_DRIVER_MAPPING_NAMES
21
21
 
nautobot/dcim/views.py CHANGED
@@ -1,5 +1,5 @@
1
- import uuid
2
1
  from collections import OrderedDict
2
+ import uuid
3
3
 
4
4
  from django.contrib import messages
5
5
  from django.contrib.contenttypes.models import ContentType
@@ -7,9 +7,9 @@ from django.core.paginator import EmptyPage, PageNotAnInteger
7
7
  from django.db import transaction
8
8
  from django.db.models import F, Prefetch
9
9
  from django.forms import (
10
+ modelformset_factory,
10
11
  ModelMultipleChoiceField,
11
12
  MultipleHiddenInput,
12
- modelformset_factory,
13
13
  )
14
14
  from django.shortcuts import get_object_or_404, redirect, render
15
15
  from django.utils.functional import cached_property
@@ -30,11 +30,12 @@ from nautobot.core.views.mixins import (
30
30
  )
31
31
  from nautobot.core.views.paginator import EnhancedPaginator, get_paginate_count
32
32
  from nautobot.core.views.viewsets import NautobotUIViewSet
33
- from nautobot.dcim.utils import get_network_driver_mapping_tool_names, get_all_network_driver_mappings
33
+ from nautobot.dcim.utils import get_all_network_driver_mappings, get_network_driver_mapping_tool_names
34
34
  from nautobot.extras.views import ObjectChangeLogView, ObjectConfigContextView, ObjectDynamicGroupsView
35
35
  from nautobot.ipam.models import IPAddress, Prefix, Service, VLAN
36
36
  from nautobot.ipam.tables import InterfaceIPAddressTable, InterfaceVLANTable, VRFDeviceAssignmentTable
37
37
  from nautobot.virtualization.models import VirtualMachine
38
+
38
39
  from . import filters, forms, tables
39
40
  from .api import serializers
40
41
  from .choices import DeviceFaceChoices
nautobot/extras/admin.py CHANGED
@@ -1,6 +1,7 @@
1
1
  from db_file_storage.form_widgets import DBAdminClearableFileInput
2
2
  from django import forms
3
3
  from django.contrib import admin
4
+
4
5
  from nautobot.core.admin import NautobotModelAdmin
5
6
 
6
7
  from .models import FileProxy, JobResult
@@ -22,7 +23,7 @@ def order_content_types(field):
22
23
  class FileProxyForm(forms.ModelForm):
23
24
  class Meta:
24
25
  model = FileProxy
25
- exclude = []
26
+ fields = ["name", "file"]
26
27
  widgets = {
27
28
  "file": DBAdminClearableFileInput,
28
29
  }
@@ -1,12 +1,10 @@
1
1
  from django.contrib.contenttypes.models import ContentType
2
-
3
2
  from drf_spectacular.types import OpenApiTypes
4
3
  from drf_spectacular.utils import extend_schema_field
5
4
  from rest_framework.fields import Field
6
5
 
7
6
  from nautobot.extras.models import CustomField
8
7
 
9
-
10
8
  #
11
9
  # Custom fields
12
10
  #
@@ -1,6 +1,5 @@
1
1
  import logging
2
2
 
3
-
4
3
  from nautobot.core.api import (
5
4
  BaseModelSerializer,
6
5
  )
@@ -30,6 +30,9 @@ from nautobot.dcim.api.serializers import (
30
30
  RackSerializer,
31
31
  )
32
32
  from nautobot.extras import choices, models
33
+ from nautobot.extras.api.mixins import (
34
+ TaggedModelSerializerMixin,
35
+ )
33
36
  from nautobot.extras.choices import (
34
37
  CustomFieldFilterLogicChoices,
35
38
  CustomFieldTypeChoices,
@@ -37,9 +40,6 @@ from nautobot.extras.choices import (
37
40
  JobResultStatusChoices,
38
41
  ObjectChangeActionChoices,
39
42
  )
40
- from nautobot.extras.api.mixins import (
41
- TaggedModelSerializerMixin,
42
- )
43
43
  from nautobot.extras.datasources import get_datasource_content_choices
44
44
  from nautobot.extras.models import (
45
45
  ComputedField,
@@ -342,7 +342,7 @@ class GitRepositorySerializer(NautobotModelSerializer):
342
342
 
343
343
 
344
344
  class GraphQLQuerySerializer(ValidatedModelSerializer, NotesSerializerMixin):
345
- variables = serializers.DictField(required=False, allow_null=True, default={})
345
+ variables = serializers.DictField(read_only=True)
346
346
 
347
347
  class Meta:
348
348
  model = GraphQLQuery
@@ -1,6 +1,6 @@
1
1
  from nautobot.core.api.routers import OrderedDefaultRouter
2
- from . import views
3
2
 
3
+ from . import views
4
4
 
5
5
  router = OrderedDefaultRouter()
6
6
  router.APIRootView = views.ExtrasRootView
@@ -7,7 +7,7 @@ from django.http import FileResponse, Http404
7
7
  from django.shortcuts import get_object_or_404
8
8
  from django.utils import timezone
9
9
  from drf_spectacular.types import OpenApiTypes
10
- from drf_spectacular.utils import OpenApiParameter, extend_schema, extend_schema_view
10
+ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter
11
11
  from graphene_django.views import GraphQLView
12
12
  from graphql import GraphQLError
13
13
  from rest_framework import mixins, status, viewsets
nautobot/extras/apps.py CHANGED
@@ -1,14 +1,12 @@
1
1
  import logging
2
2
 
3
3
  from django.db.utils import ProgrammingError
4
-
5
4
  import graphene
6
5
  from health_check.plugins import plugin_dir
7
6
 
8
7
  from nautobot.core.apps import NautobotConfig
9
8
  from nautobot.core.signals import nautobot_database_ready
10
9
 
11
-
12
10
  logger = logging.getLogger(__name__)
13
11
 
14
12
 
@@ -17,12 +15,13 @@ class ExtrasConfig(NautobotConfig):
17
15
 
18
16
  def ready(self):
19
17
  super().ready()
20
- import nautobot.extras.signals # noqa
18
+ import nautobot.extras.signals # noqa: F401 # unused-import -- but this import installs the signals
21
19
  from nautobot.extras.signals import refresh_job_models
22
20
 
23
21
  nautobot_database_ready.connect(refresh_job_models, sender=self)
24
22
 
25
23
  from graphene_django.converter import convert_django_field
24
+
26
25
  from nautobot.core.models.fields import TagsField
27
26
  from nautobot.extras.graphql.types import TagType
28
27
 
@@ -51,8 +50,8 @@ class ExtrasConfig(NautobotConfig):
51
50
  plugin_dir.register(RedisBackend)
52
51
 
53
52
  # Register built-in SecretsProvider classes
54
- from nautobot.extras.secrets.providers import EnvironmentVariableSecretsProvider, TextFileSecretsProvider
55
53
  from nautobot.extras.secrets import register_secrets_provider
54
+ from nautobot.extras.secrets.providers import EnvironmentVariableSecretsProvider, TextFileSecretsProvider
56
55
 
57
56
  register_secrets_provider(EnvironmentVariableSecretsProvider)
58
57
  register_secrets_provider(TextFileSecretsProvider)
@@ -3,7 +3,6 @@ from celery import states
3
3
  from nautobot.core.choices import ChoiceSet
4
4
  from nautobot.core.utils.deprecation import class_deprecated_in_favor_of
5
5
 
6
-
7
6
  #
8
7
  # Banners (currently plugin-specific)
9
8
  #
@@ -375,9 +374,9 @@ class SecretsGroupAccessTypeChoices(ChoiceSet):
375
374
 
376
375
  class SecretsGroupSecretTypeChoices(ChoiceSet):
377
376
  TYPE_KEY = "key"
378
- TYPE_PASSWORD = "password"
379
- TYPE_SECRET = "secret"
380
- TYPE_TOKEN = "token"
377
+ TYPE_PASSWORD = "password" # noqa: S105 # hardcoded-password-string -- false positive
378
+ TYPE_SECRET = "secret" # noqa: S105 # hardcoded-password-string -- false positive
379
+ TYPE_TOKEN = "token" # noqa: S105 # hardcoded-password-string -- false positive
381
380
  TYPE_USERNAME = "username"
382
381
 
383
382
  CHOICES = (
@@ -1,5 +1,5 @@
1
- import uuid
2
1
  from contextlib import contextmanager
2
+ import uuid
3
3
 
4
4
  from django.contrib.auth import get_user_model
5
5
  from django.contrib.auth.models import AnonymousUser
@@ -6,8 +6,8 @@ from .git import (
6
6
  git_repository_dry_run,
7
7
  )
8
8
  from .registry import (
9
- get_datasource_contents,
10
9
  get_datasource_content_choices,
10
+ get_datasource_contents,
11
11
  refresh_datasource_content,
12
12
  )
13
13
 
@@ -1,21 +1,21 @@
1
1
  """Git data source functionality."""
2
2
 
3
3
  from collections import defaultdict, namedtuple
4
+ from contextlib import suppress
4
5
  import logging
5
6
  import mimetypes
6
7
  import os
8
+ from pathlib import Path
7
9
  import re
8
10
  import sys
9
- from contextlib import suppress
10
- from pathlib import Path
11
11
  from urllib.parse import quote
12
12
 
13
13
  from django.conf import settings
14
14
  from django.contrib.contenttypes.models import ContentType
15
15
  from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
16
16
  from django.db import transaction
17
+ from git import InvalidGitRepositoryError, Repo
17
18
  import yaml
18
- from git import Repo, InvalidGitRepositoryError
19
19
 
20
20
  from nautobot.core.celery import app as celery_app
21
21
  from nautobot.core.utils.git import GitRepo
@@ -38,10 +38,10 @@ from nautobot.extras.models import (
38
38
  )
39
39
  from nautobot.extras.registry import DatasourceContent, register_datasource_contents
40
40
  from nautobot.extras.utils import refresh_job_model_from_job_class
41
- from nautobot.tenancy.models import TenantGroup, Tenant
42
- from nautobot.virtualization.models import ClusterGroup, Cluster, VirtualMachine
43
- from .utils import files_from_contenttype_directories
41
+ from nautobot.tenancy.models import Tenant, TenantGroup
42
+ from nautobot.virtualization.models import Cluster, ClusterGroup, VirtualMachine
44
43
 
44
+ from .utils import files_from_contenttype_directories
45
45
 
46
46
  logger = logging.getLogger(__name__)
47
47
 
@@ -5,7 +5,6 @@ from django.contrib.contenttypes.models import ContentType
5
5
 
6
6
  from nautobot.extras.choices import LogLevelChoices
7
7
 
8
-
9
8
  logger = logging.getLogger(__name__)
10
9
 
11
10
 
@@ -10,9 +10,9 @@ from nautobot.core.factory import (
10
10
  PrimaryModelFactory,
11
11
  UniqueFaker,
12
12
  )
13
+ from nautobot.extras.choices import WebhookHttpMethodChoices
13
14
  from nautobot.extras.models import ExternalIntegration, Role, Status, Tag
14
15
  from nautobot.extras.utils import FeatureQuery, RoleModelsQuery, TaggableClassesQuery
15
- from nautobot.extras.choices import WebhookHttpMethodChoices
16
16
 
17
17
 
18
18
  class ExternalIntegrationFactory(PrimaryModelFactory):
@@ -1,7 +1,7 @@
1
- import django_filters
2
1
  from django.conf import settings
3
2
  from django.contrib.auth import get_user_model
4
3
  from django.contrib.contenttypes.models import ContentType
4
+ import django_filters
5
5
 
6
6
  from nautobot.core.filters import (
7
7
  BaseFilterSet,
@@ -34,8 +34,8 @@ from nautobot.extras.filters.customfields import (
34
34
  )
35
35
  from nautobot.extras.filters.mixins import (
36
36
  ConfigContextRoleFilter,
37
- CustomFieldModelFilterSetMixin,
38
37
  CreatedUpdatedModelFilterSetMixin,
38
+ CustomFieldModelFilterSetMixin,
39
39
  LocalContextModelFilterSetMixin,
40
40
  RelationshipFilter,
41
41
  RelationshipModelFilterSetMixin,
@@ -80,7 +80,6 @@ from nautobot.extras.utils import ChangeLoggedModelsQuery, FeatureQuery, RoleMod
80
80
  from nautobot.tenancy.models import Tenant, TenantGroup
81
81
  from nautobot.virtualization.models import Cluster, ClusterGroup
82
82
 
83
-
84
83
  __all__ = (
85
84
  "ComputedFieldFilterSet",
86
85
  "ConfigContextFilterSet",
@@ -11,7 +11,6 @@ from nautobot.core.forms import NullableDateField
11
11
  from nautobot.core.forms.widgets import StaticSelect2Multiple
12
12
  from nautobot.extras.choices import CustomFieldFilterLogicChoices, CustomFieldTypeChoices
13
13
 
14
-
15
14
  EXACT_FILTER_TYPES = (
16
15
  CustomFieldTypeChoices.TYPE_BOOLEAN,
17
16
  CustomFieldTypeChoices.TYPE_DATE,
@@ -213,7 +213,7 @@ class RelationshipFilter(django_filters.ModelMultipleChoiceFilter):
213
213
  # unioned queryset is also distinct. We also need to conditionally check if the incoming
214
214
  # `qs` is distinct in the case that a caller is manually passing in a queryset that may
215
215
  # not be distinct. (Ref: https://github.com/nautobot/nautobot/issues/2963)
216
- union_qs = self.get_method(self.qs)(Q(**{"id__in": values}))
216
+ union_qs = self.get_method(self.qs)(Q(id__in=values))
217
217
  if qs.query.distinct:
218
218
  union_qs = union_qs.distinct()
219
219