nautobot 2.4.17__py3-none-any.whl → 2.4.18__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.

Potentially problematic release.


This version of nautobot might be problematic. Click here for more details.

Files changed (92) hide show
  1. nautobot/apps/views.py +2 -0
  2. nautobot/circuits/templates/circuits/circuittermination_retrieve.html +1 -8
  3. nautobot/circuits/templates/circuits/inc/circuit_termination_speed_fragment.html +9 -0
  4. nautobot/circuits/tests/integration/test_circuit.py +2 -2
  5. nautobot/circuits/views.py +32 -15
  6. nautobot/core/filters.py +2 -2
  7. nautobot/core/settings.py +1 -0
  8. nautobot/core/settings.yaml +9 -0
  9. nautobot/core/tables.py +21 -23
  10. nautobot/core/templates/components/breadcrumbs.html +19 -0
  11. nautobot/core/templates/generic/object_changelog.html +0 -2
  12. nautobot/core/templates/generic/object_list.html +15 -12
  13. nautobot/core/templates/generic/object_notes.html +0 -2
  14. nautobot/core/templates/generic/object_retrieve.html +16 -9
  15. nautobot/core/templatetags/helpers.py +24 -0
  16. nautobot/core/templatetags/ui_framework.py +40 -5
  17. nautobot/core/testing/filters.py +37 -21
  18. nautobot/core/testing/views.py +25 -0
  19. nautobot/core/tests/test_tables.py +43 -6
  20. nautobot/core/tests/test_templatetags_ui_framework.py +146 -0
  21. nautobot/core/tests/test_titles.py +2 -2
  22. nautobot/core/tests/test_ui.py +14 -1
  23. nautobot/core/tests/test_views.py +45 -0
  24. nautobot/core/ui/breadcrumbs.py +13 -8
  25. nautobot/core/ui/object_detail.py +43 -5
  26. nautobot/core/ui/titles.py +9 -5
  27. nautobot/core/views/__init__.py +24 -3
  28. nautobot/core/views/generic.py +42 -17
  29. nautobot/core/views/mixins.py +146 -12
  30. nautobot/core/views/utils.py +117 -0
  31. nautobot/dcim/models/devices.py +4 -0
  32. nautobot/dcim/tables/__init__.py +2 -0
  33. nautobot/dcim/tables/devices.py +24 -0
  34. nautobot/dcim/tables/power.py +2 -2
  35. nautobot/dcim/templates/dcim/device/base.html +1 -11
  36. nautobot/dcim/templates/dcim/device_component.html +0 -19
  37. nautobot/dcim/templates/dcim/modulebay_retrieve.html +0 -16
  38. nautobot/dcim/templates/dcim/virtualchassis_retrieve.html +1 -50
  39. nautobot/dcim/tests/test_views.py +41 -0
  40. nautobot/dcim/views.py +160 -39
  41. nautobot/extras/filters/mixins.py +1 -1
  42. nautobot/extras/forms/forms.py +15 -0
  43. nautobot/extras/models/groups.py +10 -1
  44. nautobot/extras/models/jobs.py +2 -2
  45. nautobot/extras/plugins/views.py +18 -5
  46. nautobot/extras/tables.py +4 -2
  47. nautobot/extras/templates/extras/customfield_retrieve.html +1 -128
  48. nautobot/extras/templates/extras/dynamicgroup.html +2 -99
  49. nautobot/extras/templates/extras/dynamicgroup_edit.html +2 -199
  50. nautobot/extras/templates/extras/dynamicgroup_retrieve.html +99 -0
  51. nautobot/extras/templates/extras/dynamicgroup_update.html +199 -0
  52. nautobot/extras/templates/extras/gitrepository.html +2 -82
  53. nautobot/extras/templates/extras/gitrepository_object_edit.html +2 -13
  54. nautobot/extras/templates/extras/gitrepository_retrieve.html +82 -0
  55. nautobot/extras/templates/extras/gitrepository_update.html +13 -0
  56. nautobot/extras/templates/extras/note_retrieve.html +0 -52
  57. nautobot/extras/templates/extras/plugin_detail.html +3 -7
  58. nautobot/extras/templates/extras/plugins_list.html +0 -2
  59. nautobot/extras/tests/test_dynamicgroups.py +73 -18
  60. nautobot/extras/tests/test_views.py +5 -0
  61. nautobot/extras/urls.py +2 -94
  62. nautobot/extras/views.py +424 -430
  63. nautobot/ipam/querysets.py +3 -3
  64. nautobot/ipam/signals.py +6 -1
  65. nautobot/ipam/templates/ipam/prefix.html +0 -8
  66. nautobot/ipam/tests/test_api.py +5 -0
  67. nautobot/ipam/tests/test_models.py +387 -0
  68. nautobot/ipam/tests/test_querysets.py +46 -0
  69. nautobot/ipam/utils/migrations.py +1 -1
  70. nautobot/ipam/views.py +17 -8
  71. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +72 -0
  72. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +45 -9
  73. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +393 -15
  74. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +1 -1
  75. nautobot/project-static/docs/development/core/getting-started.html +0 -15
  76. nautobot/project-static/docs/development/core/ui-component-framework.html +6 -11
  77. nautobot/project-static/docs/objects.inv +0 -0
  78. nautobot/project-static/docs/release-notes/version-2.4.html +222 -0
  79. nautobot/project-static/docs/search/search_index.json +1 -1
  80. nautobot/project-static/docs/sitemap.xml +300 -300
  81. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  82. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +27 -0
  83. nautobot/project-static/img/nautobot_icon.svg +32 -34
  84. nautobot/project-static/js/table_sorting_indicator.js +0 -2
  85. {nautobot-2.4.17.dist-info → nautobot-2.4.18.dist-info}/METADATA +4 -4
  86. {nautobot-2.4.17.dist-info → nautobot-2.4.18.dist-info}/RECORD +90 -85
  87. nautobot/core/templates/inc/breadcrumbs.html +0 -14
  88. nautobot/project-static/docs/requirements.txt +0 -14
  89. {nautobot-2.4.17.dist-info → nautobot-2.4.18.dist-info}/LICENSE.txt +0 -0
  90. {nautobot-2.4.17.dist-info → nautobot-2.4.18.dist-info}/NOTICE +0 -0
  91. {nautobot-2.4.17.dist-info → nautobot-2.4.18.dist-info}/WHEEL +0 -0
  92. {nautobot-2.4.17.dist-info → nautobot-2.4.18.dist-info}/entry_points.txt +0 -0
@@ -979,6 +979,7 @@ class DynamicGroupTestCase(
979
979
  ViewTestCases.GetObjectChangelogViewTestCase,
980
980
  ViewTestCases.ListObjectsViewTestCase,
981
981
  ViewTestCases.BulkDeleteObjectsViewTestCase,
982
+ ViewTestCases.BulkEditObjectsViewTestCase,
982
983
  # NOTE: This isn't using `ViewTestCases.PrimaryObjectViewTestCase` because bulk-import/edit
983
984
  # views for DynamicGroup do not make sense at this time, primarily because `content_type` is
984
985
  # immutable after create.
@@ -1009,6 +1010,10 @@ class DynamicGroupTestCase(
1009
1010
  "dynamic_group_memberships-MIN_NUM_FORMS": "0",
1010
1011
  "dynamic_group_memberships-MAX_NUM_FORMS": "1000",
1011
1012
  }
1013
+ cls.bulk_edit_data = {
1014
+ "description": "This is a very detailed new description",
1015
+ "tenant": Tenant.objects.last().pk,
1016
+ }
1012
1017
 
1013
1018
  def _get_queryset(self):
1014
1019
  return super()._get_queryset().filter(group_type=DynamicGroupTypeChoices.TYPE_DYNAMIC_FILTER) # TODO
nautobot/extras/urls.py CHANGED
@@ -3,8 +3,6 @@ from django.urls import path
3
3
  from nautobot.core.views.routers import NautobotUIViewSetRouter
4
4
  from nautobot.extras import views
5
5
  from nautobot.extras.models import (
6
- DynamicGroup,
7
- GitRepository,
8
6
  Job,
9
7
  Relationship,
10
8
  )
@@ -19,8 +17,10 @@ router.register("contacts", views.ContactUIViewSet)
19
17
  router.register("contact-associations", views.ContactAssociationUIViewSet)
20
18
  router.register("custom-fields", views.CustomFieldUIViewSet)
21
19
  router.register("custom-links", views.CustomLinkUIViewSet)
20
+ router.register("dynamic-groups", views.DynamicGroupUIViewSet)
22
21
  router.register("export-templates", views.ExportTemplateUIViewSet)
23
22
  router.register("external-integrations", views.ExternalIntegrationUIViewSet)
23
+ router.register("git-repositories", views.GitRepositoryUIViewSet)
24
24
  router.register("graphql-queries", views.GraphQLQueryUIViewSet)
25
25
  router.register("job-buttons", views.JobButtonUIViewSet)
26
26
  router.register("job-hooks", views.JobHookUIViewSet)
@@ -59,98 +59,6 @@ urlpatterns = [
59
59
  views.ObjectAssignContactOrTeamView.as_view(),
60
60
  name="object_contact_team_assign",
61
61
  ),
62
- # Dynamic Groups
63
- path("dynamic-groups/", views.DynamicGroupListView.as_view(), name="dynamicgroup_list"),
64
- path("dynamic-groups/add/", views.DynamicGroupEditView.as_view(), name="dynamicgroup_add"),
65
- path("dynamic-groups/assign-members/", views.DynamicGroupBulkAssignView.as_view(), name="dynamicgroup_bulk_assign"),
66
- path(
67
- "dynamic-groups/delete/",
68
- views.DynamicGroupBulkDeleteView.as_view(),
69
- name="dynamicgroup_bulk_delete",
70
- ),
71
- path("dynamic-groups/<uuid:pk>/", views.DynamicGroupView.as_view(), name="dynamicgroup"),
72
- path("dynamic-groups/<uuid:pk>/edit/", views.DynamicGroupEditView.as_view(), name="dynamicgroup_edit"),
73
- path("dynamic-groups/<uuid:pk>/delete/", views.DynamicGroupDeleteView.as_view(), name="dynamicgroup_delete"),
74
- path(
75
- "dynamic-groups/<uuid:pk>/changelog/",
76
- views.ObjectChangeLogView.as_view(),
77
- name="dynamicgroup_changelog",
78
- kwargs={"model": DynamicGroup},
79
- ),
80
- path(
81
- "dynamic-groups/<uuid:pk>/notes/",
82
- views.ObjectNotesView.as_view(),
83
- name="dynamicgroup_notes",
84
- kwargs={"model": DynamicGroup},
85
- ),
86
- # Git repositories
87
- path(
88
- "git-repositories/",
89
- views.GitRepositoryListView.as_view(),
90
- name="gitrepository_list",
91
- ),
92
- path(
93
- "git-repositories/add/",
94
- views.GitRepositoryEditView.as_view(),
95
- name="gitrepository_add",
96
- ),
97
- path(
98
- "git-repositories/delete/",
99
- views.GitRepositoryBulkDeleteView.as_view(),
100
- name="gitrepository_bulk_delete",
101
- ),
102
- path(
103
- "git-repositories/edit/",
104
- views.GitRepositoryBulkEditView.as_view(),
105
- name="gitrepository_bulk_edit",
106
- ),
107
- path(
108
- "git-repositories/import/",
109
- views.GitRepositoryBulkImportView.as_view(), # 3.0 TODO: remove, unused
110
- name="gitrepository_import",
111
- ),
112
- path(
113
- "git-repositories/<uuid:pk>/",
114
- views.GitRepositoryView.as_view(),
115
- name="gitrepository",
116
- ),
117
- path(
118
- "git-repositories/<uuid:pk>/edit/",
119
- views.GitRepositoryEditView.as_view(),
120
- name="gitrepository_edit",
121
- ),
122
- path(
123
- "git-repositories/<uuid:pk>/delete/",
124
- views.GitRepositoryDeleteView.as_view(),
125
- name="gitrepository_delete",
126
- ),
127
- path(
128
- "git-repositories/<uuid:pk>/changelog/",
129
- views.ObjectChangeLogView.as_view(),
130
- name="gitrepository_changelog",
131
- kwargs={"model": GitRepository},
132
- ),
133
- path(
134
- "git-repositories/<uuid:pk>/notes/",
135
- views.ObjectNotesView.as_view(),
136
- name="gitrepository_notes",
137
- kwargs={"model": GitRepository},
138
- ),
139
- path(
140
- "git-repositories/<uuid:pk>/result/",
141
- views.GitRepositoryResultView.as_view(),
142
- name="gitrepository_result",
143
- ),
144
- path(
145
- "git-repositories/<uuid:pk>/sync/",
146
- views.GitRepositorySyncView.as_view(),
147
- name="gitrepository_sync",
148
- ),
149
- path(
150
- "git-repositories/<uuid:pk>/dry-run/",
151
- views.GitRepositoryDryRunView.as_view(),
152
- name="gitrepository_dryrun",
153
- ),
154
62
  # Image attachments
155
63
  path(
156
64
  "image-attachments/<uuid:pk>/edit/",