Coverage for api/views/project.py: 100.00%

110 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-06-06 22:17 +0000

1from rest_framework import permissions, viewsets 

2 

3# TODO: Break up this massive import list 

4from api.serializers.project import BuiltInIssuePrioritySerializer, BuiltInIssueSeveritySerializer, BuiltInIssueStatusSerializer, BuiltInIssueTypeSerializer, ComponentSerializer, ComponentDataSerializer, CustomIssuePrioritySerializer, CustomIssuePriorityDataSerializer, CustomIssueSeveritySerializer, CustomIssueSeverityDataSerializer, CustomIssueStatusSerializer, CustomIssueStatusDataSerializer, CustomIssueTypeSerializer, CustomIssueTypeDataSerializer, GitRepositorySerializer, GitRepositoryDataSerializer, IssueSerializer, IssueDataSerializer, ProjectSerializer, ProjectDataSerializer, VersionSerializer, VersionDataSerializer 

5 

6from core.models import user as core_user_models 

7from project.models.git_repository import GitRepository, GitRepositoryData 

8from project.models.issue_type import BuiltInIssueType, CustomIssueType, CustomIssueTypeData 

9from project.models.issue import Issue, IssueData 

10from project.models.priority import BuiltInIssuePriority, CustomIssuePriority, CustomIssuePriorityData 

11from project.models.project import Project, ProjectData 

12from project.models.status import BuiltInIssueStatus, CustomIssueStatus, CustomIssueStatusData 

13from project.models.component import Component, ComponentData 

14from project.models.severity import BuiltInIssueSeverity, CustomIssueSeverity, CustomIssueSeverityData 

15from project.models.version import Version, VersionData 

16 

17 

18class BuiltInIssuePriorityViewSet(viewsets.ModelViewSet): 

19 """ 

20 API endpoint that allows built-in issue priorities to be viewed or edited. 

21 """ 

22 

23 queryset = BuiltInIssuePriority.active_objects.all() 

24 serializer_class = BuiltInIssuePrioritySerializer 

25 permission_classes = [permissions.IsAuthenticated] 

26 

27 

28class BuiltInIssueSeverityViewSet(viewsets.ModelViewSet): 

29 """ 

30 API endpoint that allows built-in issue priorities to be viewed or edited. 

31 """ 

32 

33 queryset = BuiltInIssueSeverity.active_objects.all() 

34 serializer_class = BuiltInIssueSeveritySerializer 

35 permission_classes = [permissions.IsAuthenticated] 

36 

37 

38class BuiltInIssueStatusViewSet(viewsets.ModelViewSet): 

39 """ 

40 API endpoint that allows built-in issue statuses to be viewed or edited. 

41 """ 

42 

43 queryset = BuiltInIssueStatus.active_objects.all() 

44 serializer_class = BuiltInIssueStatusSerializer 

45 permission_classes = [permissions.IsAuthenticated] 

46 

47 

48class BuiltInIssueTypeViewSet(viewsets.ModelViewSet): 

49 """ 

50 API endpoint that allows built-in issue types to be viewed or edited. 

51 """ 

52 

53 queryset = BuiltInIssueType.active_objects.all() 

54 serializer_class = BuiltInIssueTypeSerializer 

55 permission_classes = [permissions.IsAuthenticated] 

56 

57 

58class ComponentViewSet(viewsets.ModelViewSet): 

59 """ 

60 API endpoint that allows custom issue priorities to be viewed or edited. 

61 """ 

62 

63 queryset = Component.active_objects.all() 

64 serializer_class = ComponentSerializer 

65 permission_classes = [permissions.IsAuthenticated] 

66 

67 

68class ComponentDataViewSet(viewsets.ModelViewSet): 

69 """ 

70 API endpoint that allows built-in issue types to be viewed or edited. 

71 """ 

72 

73 queryset = ComponentData.active_objects.all() 

74 serializer_class = ComponentDataSerializer 

75 permission_classes = [permissions.IsAuthenticated] 

76 

77 

78class CustomIssuePriorityViewSet(viewsets.ModelViewSet): 

79 """ 

80 API endpoint that allows custom issue priorities to be viewed or edited. 

81 """ 

82 

83 queryset = CustomIssuePriority.active_objects.all() 

84 serializer_class = CustomIssuePrioritySerializer 

85 permission_classes = [permissions.IsAuthenticated] 

86 

87 

88class CustomIssuePriorityDataViewSet(viewsets.ModelViewSet): 

89 """ 

90 API endpoint that allows custom issue priorities to be viewed or edited. 

91 """ 

92 

93 queryset = CustomIssuePriorityData.active_objects.all() 

94 serializer_class = CustomIssuePriorityDataSerializer 

95 permission_classes = [permissions.IsAuthenticated] 

96 

97 

98class CustomIssueSeverityViewSet(viewsets.ModelViewSet): 

99 """ 

100 API endpoint that allows custom issue priorities to be viewed or edited. 

101 """ 

102 

103 queryset = CustomIssueSeverity.active_objects.all() 

104 serializer_class = CustomIssueSeveritySerializer 

105 permission_classes = [permissions.IsAuthenticated] 

106 

107 

108class CustomIssueSeverityDataViewSet(viewsets.ModelViewSet): 

109 """ 

110 API endpoint that allows custom issue priorities to be viewed or edited. 

111 """ 

112 

113 queryset = CustomIssueSeverityData.active_objects.all() 

114 serializer_class = CustomIssueSeverityDataSerializer 

115 permission_classes = [permissions.IsAuthenticated] 

116 

117 

118class CustomIssueStatusViewSet(viewsets.ModelViewSet): 

119 """ 

120 API endpoint that allows custom issue statuses to be viewed or edited. 

121 """ 

122 

123 queryset = CustomIssueStatus.active_objects.all() 

124 serializer_class = CustomIssueStatusSerializer 

125 permission_classes = [permissions.IsAuthenticated] 

126 

127 

128class CustomIssueStatusDataViewSet(viewsets.ModelViewSet): 

129 """ 

130 API endpoint that allows custom issue statuses to be viewed or edited. 

131 """ 

132 

133 queryset = CustomIssueStatusData.active_objects.all() 

134 serializer_class = CustomIssueStatusDataSerializer 

135 permission_classes = [permissions.IsAuthenticated] 

136 

137 

138class CustomIssueTypeViewSet(viewsets.ModelViewSet): 

139 """ 

140 API endpoint that allows custom issue types to be viewed or edited. 

141 """ 

142 

143 queryset = CustomIssueType.active_objects.all() 

144 serializer_class = CustomIssueTypeSerializer 

145 permission_classes = [permissions.IsAuthenticated] 

146 

147 

148class CustomIssueTypeDataViewSet(viewsets.ModelViewSet): 

149 """ 

150 API endpoint that allows custom issue types to be viewed or edited. 

151 """ 

152 

153 queryset = CustomIssueTypeData.active_objects.all() 

154 serializer_class = CustomIssueTypeDataSerializer 

155 permission_classes = [permissions.IsAuthenticated] 

156 

157 

158class GitRepositoryViewSet(viewsets.ModelViewSet): 

159 """ 

160 API endpoint that allows git repositories to be viewed or edited. 

161 """ 

162 

163 queryset = GitRepository.active_objects.all() 

164 serializer_class = GitRepositorySerializer 

165 permission_classes = [permissions.IsAuthenticated] 

166 

167 def get_queryset(self): 

168 logged_in_user = core_user_models.CoreUser.active_objects.get(user__username=self.request.user) 

169 # Get unique repositories from organizations and projects 

170 organization_repositories = logged_in_user.organizationmembers_set.values_list('git_repositories', flat=True) 

171 project_repositories = logged_in_user.list_projects().values_list('git_repositories', flat=True) 

172 # Combine the repository IDs and get distinct repositories 

173 repository_ids = set(organization_repositories).union(set(project_repositories)) 

174 repositories = GitRepository.objects.filter(id__in=repository_ids) 

175 return repositories.all() 

176 

177 

178class GitRepositoryDataViewSet(viewsets.ModelViewSet): 

179 """ 

180 API endpoint that allows git repositories to be viewed or edited. 

181 """ 

182 

183 queryset = GitRepositoryData.active_objects.all() 

184 serializer_class = GitRepositoryDataSerializer 

185 permission_classes = [permissions.IsAuthenticated] 

186 

187 

188class IssueViewSet(viewsets.ModelViewSet): 

189 """ 

190 API endpoint that allows issues to be viewed or edited. 

191 """ 

192 

193 queryset = Issue.active_objects.all() 

194 serializer_class = IssueSerializer 

195 permission_classes = [permissions.IsAuthenticated] 

196 

197 

198class IssueDataViewSet(viewsets.ModelViewSet): 

199 """ 

200 API endpoint that allows issues to be viewed or edited. 

201 """ 

202 

203 queryset = IssueData.active_objects.all() 

204 serializer_class = IssueDataSerializer 

205 permission_classes = [permissions.IsAuthenticated] 

206 

207 

208class ProjectViewSet(viewsets.ModelViewSet): 

209 """ 

210 API endpoint that allows projects to be viewed or edited. 

211 """ 

212 

213 queryset = Project.active_objects.all() 

214 serializer_class = ProjectSerializer 

215 permission_classes = [permissions.IsAuthenticated] 

216 

217 def get_queryset(self): 

218 logged_in_user = core_user_models.CoreUser.active_objects.get(user__username=self.request.user) 

219 return logged_in_user.list_projects() 

220 

221 

222class ProjectDataViewSet(viewsets.ModelViewSet): 

223 """ 

224 API endpoint that allows projects to be viewed or edited. 

225 """ 

226 

227 queryset = ProjectData.active_objects.all() 

228 serializer_class = ProjectDataSerializer 

229 permission_classes = [permissions.IsAuthenticated] 

230 

231 

232class VersionViewSet(viewsets.ModelViewSet): 

233 """ 

234 API endpoint that allows versions to be viewed or edited. 

235 """ 

236 

237 queryset = Version.active_objects.all() 

238 serializer_class = VersionSerializer 

239 permission_classes = [permissions.IsAuthenticated] 

240 

241 

242class VersionDataViewSet(viewsets.ModelViewSet): 

243 """ 

244 API endpoint that allows versions to be viewed or edited. 

245 """ 

246 

247 queryset = VersionData.active_objects.all() 

248 serializer_class = VersionDataSerializer 

249 permission_classes = [permissions.IsAuthenticated]