Skip to content

Commit a0b4b0a

Browse files
Closes #18023: Employ register_model_view() for list views (#18029)
* Extend register_model_view() to enable registering list views * Register circuits list views with register_model_view() * Register core list views with register_model_view() * Fix bulk_edit & bulk_delete URL paths * Register dcim list views with register_model_view() (WIP) * Register dcim list views with register_model_view() * Register extras list views with register_model_view() * Register ipam list views with register_model_view() * Register tenancy list views with register_model_view() * Register users list views with register_model_view() * Register virtualization list views with register_model_view() * Register vpn list views with register_model_view() * Register wireless list views with register_model_view() * Add change note for register_model_view()
1 parent d2168b1 commit a0b4b0a

File tree

23 files changed

+848
-806
lines changed

23 files changed

+848
-806
lines changed

docs/plugins/development/views.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@ class MyView(generic.ObjectView):
185185
)
186186
```
187187

188+
!!! note "Changed in NetBox v4.2"
189+
The `register_model_view()` function was extended in NetBox v4.2 to support registration of list views by passing `detail=False`.
190+
188191
::: utilities.views.register_model_view
189192

190193
::: utilities.views.ViewTab

netbox/circuits/urls.py

Lines changed: 13 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -5,70 +5,33 @@
55

66
app_name = 'circuits'
77
urlpatterns = [
8-
9-
# Providers
10-
path('providers/', views.ProviderListView.as_view(), name='provider_list'),
11-
path('providers/add/', views.ProviderEditView.as_view(), name='provider_add'),
12-
path('providers/import/', views.ProviderBulkImportView.as_view(), name='provider_import'),
13-
path('providers/edit/', views.ProviderBulkEditView.as_view(), name='provider_bulk_edit'),
14-
path('providers/delete/', views.ProviderBulkDeleteView.as_view(), name='provider_bulk_delete'),
8+
path('providers/', include(get_model_urls('circuits', 'provider', detail=False))),
159
path('providers/<int:pk>/', include(get_model_urls('circuits', 'provider'))),
1610

17-
# Provider accounts
18-
path('provider-accounts/', views.ProviderAccountListView.as_view(), name='provideraccount_list'),
19-
path('provider-accounts/add/', views.ProviderAccountEditView.as_view(), name='provideraccount_add'),
20-
path('provider-accounts/import/', views.ProviderAccountBulkImportView.as_view(), name='provideraccount_import'),
21-
path('provider-accounts/edit/', views.ProviderAccountBulkEditView.as_view(), name='provideraccount_bulk_edit'),
22-
path('provider-accounts/delete/', views.ProviderAccountBulkDeleteView.as_view(), name='provideraccount_bulk_delete'),
11+
path('provider-accounts/', include(get_model_urls('circuits', 'provideraccount', detail=False))),
2312
path('provider-accounts/<int:pk>/', include(get_model_urls('circuits', 'provideraccount'))),
2413

25-
# Provider networks
26-
path('provider-networks/', views.ProviderNetworkListView.as_view(), name='providernetwork_list'),
27-
path('provider-networks/add/', views.ProviderNetworkEditView.as_view(), name='providernetwork_add'),
28-
path('provider-networks/import/', views.ProviderNetworkBulkImportView.as_view(), name='providernetwork_import'),
29-
path('provider-networks/edit/', views.ProviderNetworkBulkEditView.as_view(), name='providernetwork_bulk_edit'),
30-
path('provider-networks/delete/', views.ProviderNetworkBulkDeleteView.as_view(), name='providernetwork_bulk_delete'),
14+
path('provider-networks/', include(get_model_urls('circuits', 'providernetwork', detail=False))),
3115
path('provider-networks/<int:pk>/', include(get_model_urls('circuits', 'providernetwork'))),
3216

33-
# Circuit types
34-
path('circuit-types/', views.CircuitTypeListView.as_view(), name='circuittype_list'),
35-
path('circuit-types/add/', views.CircuitTypeEditView.as_view(), name='circuittype_add'),
36-
path('circuit-types/import/', views.CircuitTypeBulkImportView.as_view(), name='circuittype_import'),
37-
path('circuit-types/edit/', views.CircuitTypeBulkEditView.as_view(), name='circuittype_bulk_edit'),
38-
path('circuit-types/delete/', views.CircuitTypeBulkDeleteView.as_view(), name='circuittype_bulk_delete'),
17+
path('circuit-types/', include(get_model_urls('circuits', 'circuittype', detail=False))),
3918
path('circuit-types/<int:pk>/', include(get_model_urls('circuits', 'circuittype'))),
4019

41-
# Circuits
42-
path('circuits/', views.CircuitListView.as_view(), name='circuit_list'),
43-
path('circuits/add/', views.CircuitEditView.as_view(), name='circuit_add'),
44-
path('circuits/import/', views.CircuitBulkImportView.as_view(), name='circuit_import'),
45-
path('circuits/edit/', views.CircuitBulkEditView.as_view(), name='circuit_bulk_edit'),
46-
path('circuits/delete/', views.CircuitBulkDeleteView.as_view(), name='circuit_bulk_delete'),
47-
path('circuits/<int:pk>/terminations/swap/', views.CircuitSwapTerminations.as_view(), name='circuit_terminations_swap'),
20+
path('circuits/', include(get_model_urls('circuits', 'circuit', detail=False))),
21+
path(
22+
'circuits/<int:pk>/terminations/swap/',
23+
views.CircuitSwapTerminations.as_view(),
24+
name='circuit_terminations_swap'
25+
),
4826
path('circuits/<int:pk>/', include(get_model_urls('circuits', 'circuit'))),
4927

50-
# Circuit terminations
51-
path('circuit-terminations/', views.CircuitTerminationListView.as_view(), name='circuittermination_list'),
52-
path('circuit-terminations/add/', views.CircuitTerminationEditView.as_view(), name='circuittermination_add'),
53-
path('circuit-terminations/import/', views.CircuitTerminationBulkImportView.as_view(), name='circuittermination_import'),
54-
path('circuit-terminations/edit/', views.CircuitTerminationBulkEditView.as_view(), name='circuittermination_bulk_edit'),
55-
path('circuit-terminations/delete/', views.CircuitTerminationBulkDeleteView.as_view(), name='circuittermination_bulk_delete'),
28+
path('circuit-terminations/', include(get_model_urls('circuits', 'circuittermination', detail=False))),
5629
path('circuit-terminations/<int:pk>/', include(get_model_urls('circuits', 'circuittermination'))),
5730

58-
# Circuit Groups
59-
path('circuit-groups/', views.CircuitGroupListView.as_view(), name='circuitgroup_list'),
60-
path('circuit-groups/add/', views.CircuitGroupEditView.as_view(), name='circuitgroup_add'),
61-
path('circuit-groups/import/', views.CircuitGroupBulkImportView.as_view(), name='circuitgroup_import'),
62-
path('circuit-groups/edit/', views.CircuitGroupBulkEditView.as_view(), name='circuitgroup_bulk_edit'),
63-
path('circuit-groups/delete/', views.CircuitGroupBulkDeleteView.as_view(), name='circuitgroup_bulk_delete'),
31+
path('circuit-groups/', include(get_model_urls('circuits', 'circuitgroup', detail=False))),
6432
path('circuit-groups/<int:pk>/', include(get_model_urls('circuits', 'circuitgroup'))),
6533

66-
# Circuit Group Assignments
67-
path('circuit-group-assignments/', views.CircuitGroupAssignmentListView.as_view(), name='circuitgroupassignment_list'),
68-
path('circuit-group-assignments/add/', views.CircuitGroupAssignmentEditView.as_view(), name='circuitgroupassignment_add'),
69-
path('circuit-group-assignments/import/', views.CircuitGroupAssignmentBulkImportView.as_view(), name='circuitgroupassignment_import'),
70-
path('circuit-group-assignments/edit/', views.CircuitGroupAssignmentBulkEditView.as_view(), name='circuitgroupassignment_bulk_edit'),
71-
path('circuit-group-assignments/delete/', views.CircuitGroupAssignmentBulkDeleteView.as_view(), name='circuitgroupassignment_bulk_delete'),
34+
path('circuit-group-assignments/', include(get_model_urls('circuits', 'circuitgroupassignment', detail=False))),
7235
path('circuit-group-assignments/<int:pk>/', include(get_model_urls('circuits', 'circuitgroupassignment'))),
7336

7437
# Virtual circuits

0 commit comments

Comments
 (0)