Coverage for sm / urls.py: 92%

25 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-17 13:46 +0000

1from django.urls import path, include 

2from django.conf import settings 

3from django.conf.urls.static import static 

4from django.contrib import admin 

5 

6from drf_spectacular.views import ( 

7 SpectacularAPIView, 

8 SpectacularRedocView, 

9 SpectacularSwaggerView, 

10) 

11 

12from .views import ( 

13 DashboardView, 

14 SearchView, 

15 ImportStarterPackView, 

16 HistoryDiffView, 

17 TermsView, 

18 PrivacyView, 

19 ImpressumView, 

20 HealthView, 

21) 

22from .views_admin import UserListView, GroupProfileUpdateView 

23from .views_group import ( 

24 GroupMemberListView, 

25 AddGroupMemberView, 

26 RemoveGroupMemberView, 

27 GroupPermissionUpdateView, 

28 UserPermissionUpdateView, 

29 InviteGroupMemberView, 

30 AcceptInvitationView, 

31 GroupFilterView, 

32 GroupCreateView, 

33) 

34from .views_avatars import avatar_proxy 

35from .api.views import ( 

36 ServerViewSet, 

37 VendorViewSet, 

38 StatusViewSet, 

39 LocationViewSet, 

40 DomainViewSet, 

41 PatchtimeViewSet, 

42 ClusterViewSet, 

43 ClusterPackageViewSet, 

44) 

45from rest_framework import routers 

46 

47router = routers.DefaultRouter() 

48router.register(r"servers", ServerViewSet, basename="api-server") 

49router.register(r"vendors", VendorViewSet, basename="api-vendor") 

50router.register(r"statuses", StatusViewSet, basename="api-status") 

51router.register(r"locations", LocationViewSet, basename="api-location") 

52router.register(r"domains", DomainViewSet, basename="api-domain") 

53router.register(r"patchtimes", PatchtimeViewSet, basename="api-patchtime") 

54router.register(r"clusters", ClusterViewSet, basename="api-cluster") 

55router.register( 

56 r"clusterpackages", ClusterPackageViewSet, basename="api-clusterpackage" 

57) 

58 

59urlpatterns = [ 

60 path("admin/doc/", include("django.contrib.admindocs.urls")), 

61 path("admin/", admin.site.urls), 

62 # API 

63 path("api/", include(router.urls)), 

64 # API Schema & Docs 

65 path("api/schema/", SpectacularAPIView.as_view(), name="schema"), 

66 path( 

67 "api/schema/swagger-ui/", 

68 SpectacularSwaggerView.as_view(url_name="schema"), 

69 name="swagger-ui", 

70 ), 

71 path( 

72 "api/schema/redoc/", 

73 SpectacularRedocView.as_view(url_name="schema"), 

74 name="redoc", 

75 ), 

76 # Allauth URLs 

77 path("accounts/", include("allauth.urls")), 

78 # Dashboard & Search 

79 path("", DashboardView.as_view(), name="dashboard"), 

80 path("search/", SearchView.as_view(), name="search"), 

81 path( 

82 "starter-pack/import/", 

83 ImportStarterPackView.as_view(), 

84 name="starter_pack_import", 

85 ), 

86 path("avatar/<str:email_hash>/", avatar_proxy, name="avatar_proxy"), 

87 path( 

88 "history/<str:app_label>/<str:model_name>/<int:history_id>/", 

89 HistoryDiffView.as_view(), 

90 name="history_diff", 

91 ), 

92 # Legal Pages 

93 path("terms/", TermsView.as_view(), name="terms"), 

94 path("privacy/", PrivacyView.as_view(), name="privacy"), 

95 path("impressum/", ImpressumView.as_view(), name="impressum"), 

96 path("health/", HealthView.as_view(), name="health"), 

97 # User Management (Staff) 

98 path("admin/users/", UserListView.as_view(), name="user_management_list"), 

99 path( 

100 "admin/groups/<int:pk>/", 

101 GroupProfileUpdateView.as_view(), 

102 name="group_profile_edit", 

103 ), 

104 # Group Management (Owner) 

105 path("group/members/", GroupMemberListView.as_view(), name="group_member_list"), 

106 path("group/create/", GroupCreateView.as_view(), name="group_create"), 

107 path( 

108 "group/members/add/<int:group_id>/", 

109 AddGroupMemberView.as_view(), 

110 name="group_member_add", 

111 ), 

112 path( 

113 "group/members/remove/<int:group_id>/<int:user_id>/", 

114 RemoveGroupMemberView.as_view(), 

115 name="group_member_remove", 

116 ), 

117 path( 

118 "group/permissions/<int:group_id>/", 

119 GroupPermissionUpdateView.as_view(), 

120 name="group_permission_edit", 

121 ), 

122 path( 

123 "group/permissions/<int:group_id>/user/<int:user_id>/", 

124 UserPermissionUpdateView.as_view(), 

125 name="group_user_permission_edit", 

126 ), 

127 path( 

128 "group/invite/<int:group_id>/", 

129 InviteGroupMemberView.as_view(), 

130 name="group_member_invite", 

131 ), 

132 path( 

133 "invitation/<uuid:token>/", 

134 AcceptInvitationView.as_view(), 

135 name="accept_invitation", 

136 ), 

137 path( 

138 "group/filter/", 

139 GroupFilterView.as_view(), 

140 name="group_filter", 

141 ), 

142 # Project Apps 

143 path("cluster/", include("cluster.urls")), 

144 path("operatingsystem/", include("operatingsystem.urls")), 

145 path("clusterpackage/", include("clusterpackage.urls")), 

146 path("patchtime/", include("patchtime.urls")), 

147 path("location/", include("location.urls")), 

148 path("servermodel/", include("servermodel.urls")), 

149 path("server/", include("server.urls")), 

150 path("status/", include("status.urls")), 

151 path("domain/", include("domain.urls")), 

152 path("clustersoftware/", include("clustersoftware.urls")), 

153 path("clusterpackagetype/", include("clusterpackagetype.urls")), 

154 path("vendor/", include("vendor.urls")), 

155] 

156 

157if "debug_toolbar" in settings.INSTALLED_APPS: 

158 import debug_toolbar 

159 

160 urlpatterns = [path("__debug__/", include(debug_toolbar.urls))] + urlpatterns 

161 

162urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)