Coverage for sm / urls.py: 100%

23 statements  

« 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 

5 

6from drf_spectacular.views import ( 

7 SpectacularAPIView, 

8 SpectacularRedocView, 

9 SpectacularSwaggerView, 

10) 

11 

12import debug_toolbar 

13 

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 

47 

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) 

59 

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] 

157 

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