Coverage for sm / urls.py: 100%
23 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-24 12:43 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-24 12:43 +0000
1from django.urls import path, include
2from django.conf import settings
3from django.conf.urls.static import static
4from django.contrib import admin
6from drf_spectacular.views import (
7 SpectacularAPIView,
8 SpectacularRedocView,
9 SpectacularSwaggerView,
10)
12import debug_toolbar
14from .views import (
15 DashboardView,
16 SearchView,
17 ImportStarterPackView,
18 HistoryDiffView,
19 TermsView,
20 PrivacyView,
21 ImpressumView,
22)
23from .views_admin import UserListView, GroupProfileUpdateView
24from .views_group import (
25 GroupMemberListView,
26 AddGroupMemberView,
27 RemoveGroupMemberView,
28 GroupPermissionUpdateView,
29 UserPermissionUpdateView,
30 InviteGroupMemberView,
31 AcceptInvitationView,
32 GroupFilterView,
33 GroupCreateView,
34)
35from .views_avatars import avatar_proxy
36from .api.views import (
37 ServerViewSet,
38 VendorViewSet,
39 StatusViewSet,
40 LocationViewSet,
41 DomainViewSet,
42 PatchtimeViewSet,
43 ClusterViewSet,
44 ClusterPackageViewSet,
45)
46from rest_framework import routers
48router = routers.DefaultRouter()
49router.register(r"servers", ServerViewSet, basename="api-server")
50router.register(r"vendors", VendorViewSet, basename="api-vendor")
51router.register(r"statuses", StatusViewSet, basename="api-status")
52router.register(r"locations", LocationViewSet, basename="api-location")
53router.register(r"domains", DomainViewSet, basename="api-domain")
54router.register(r"patchtimes", PatchtimeViewSet, basename="api-patchtime")
55router.register(r"clusters", ClusterViewSet, basename="api-cluster")
56router.register(
57 r"clusterpackages", ClusterPackageViewSet, basename="api-clusterpackage"
58)
60urlpatterns = [
61 path("__debug__/", include(debug_toolbar.urls)),
62 path("admin/doc/", include("django.contrib.admindocs.urls")),
63 path("admin/", admin.site.urls),
64 # API
65 path("api/", include(router.urls)),
66 # API Schema & Docs
67 path("api/schema/", SpectacularAPIView.as_view(), name="schema"),
68 path(
69 "api/schema/swagger-ui/",
70 SpectacularSwaggerView.as_view(url_name="schema"),
71 name="swagger-ui",
72 ),
73 path(
74 "api/schema/redoc/",
75 SpectacularRedocView.as_view(url_name="schema"),
76 name="redoc",
77 ),
78 # Allauth URLs
79 path("accounts/", include("allauth.urls")),
80 # Dashboard & Search
81 path("", DashboardView.as_view(), name="dashboard"),
82 path("search/", SearchView.as_view(), name="search"),
83 path(
84 "starter-pack/import/",
85 ImportStarterPackView.as_view(),
86 name="starter_pack_import",
87 ),
88 path("avatar/<str:email_hash>/", avatar_proxy, name="avatar_proxy"),
89 path(
90 "history/<str:app_label>/<str:model_name>/<int:history_id>/",
91 HistoryDiffView.as_view(),
92 name="history_diff",
93 ),
94 # Legal Pages
95 path("terms/", TermsView.as_view(), name="terms"),
96 path("privacy/", PrivacyView.as_view(), name="privacy"),
97 path("impressum/", ImpressumView.as_view(), name="impressum"),
98 # User Management (Staff)
99 path("admin/users/", UserListView.as_view(), name="user_management_list"),
100 path(
101 "admin/groups/<int:pk>/",
102 GroupProfileUpdateView.as_view(),
103 name="group_profile_edit",
104 ),
105 # Group Management (Owner)
106 path("group/members/", GroupMemberListView.as_view(), name="group_member_list"),
107 path("group/create/", GroupCreateView.as_view(), name="group_create"),
108 path(
109 "group/members/add/<int:group_id>/",
110 AddGroupMemberView.as_view(),
111 name="group_member_add",
112 ),
113 path(
114 "group/members/remove/<int:group_id>/<int:user_id>/",
115 RemoveGroupMemberView.as_view(),
116 name="group_member_remove",
117 ),
118 path(
119 "group/permissions/<int:group_id>/",
120 GroupPermissionUpdateView.as_view(),
121 name="group_permission_edit",
122 ),
123 path(
124 "group/permissions/<int:group_id>/user/<int:user_id>/",
125 UserPermissionUpdateView.as_view(),
126 name="group_user_permission_edit",
127 ),
128 path(
129 "group/invite/<int:group_id>/",
130 InviteGroupMemberView.as_view(),
131 name="group_member_invite",
132 ),
133 path(
134 "invitation/<uuid:token>/",
135 AcceptInvitationView.as_view(),
136 name="accept_invitation",
137 ),
138 path(
139 "group/filter/",
140 GroupFilterView.as_view(),
141 name="group_filter",
142 ),
143 # Project Apps
144 path("cluster/", include("cluster.urls")),
145 path("operatingsystem/", include("operatingsystem.urls")),
146 path("clusterpackage/", include("clusterpackage.urls")),
147 path("patchtime/", include("patchtime.urls")),
148 path("location/", include("location.urls")),
149 path("servermodel/", include("servermodel.urls")),
150 path("server/", include("server.urls")),
151 path("status/", include("status.urls")),
152 path("domain/", include("domain.urls")),
153 path("clustersoftware/", include("clustersoftware.urls")),
154 path("clusterpackagetype/", include("clusterpackagetype.urls")),
155 path("vendor/", include("vendor.urls")),
156]
158urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)