taiga-back/greenmine/scrum/api.py

173 lines
4.4 KiB
Python

from rest_framework import generics
from greenmine.scrum.serializers import *
from greenmine.scrum.models import *
class SimpleFilterMixin(object):
filter_fields = []
filter_special_fields = []
_special_values_dict = {
'true': True,
'false': False,
'null': None,
}
def get_queryset(self):
queryset = super(SimpleFilterMixin, self).get_queryset()
query_params = {}
for field_name in self.filter_fields:
if field_name in self.request.QUERY_PARAMS:
field_data = self.request.QUERY_PARAMS[field_name]
if field_data in self._special_values_dict:
query_params[field_name] = self._special_values_dict[field_data]
else:
query_params[field_name] = field_data
if query_params:
queryset = queryset.filter(**query_params)
return queryset
class ProjectList(generics.ListCreateAPIView):
model = Project
serializer_class = ProjectSerializer
class ProjectDetail(generics.RetrieveUpdateDestroyAPIView):
model = Project
serializer_class = ProjectSerializer
class MilestoneList(generics.ListCreateAPIView):
model = Milestone
serializer_class = MilestoneSerializer
filter_fields = ('project',)
class MilestoneDetail(generics.RetrieveUpdateDestroyAPIView):
model = Milestone
serializer_class = MilestoneSerializer
class UserStoryList(generics.ListCreateAPIView):
model = UserStory
serializer_class = UserStorySerializer
filter_fields = ('project', 'milestone')
class UserStoryDetail(generics.RetrieveUpdateDestroyAPIView):
model = UserStory
serializer_class = UserStorySerializer
class ChangeList(generics.ListCreateAPIView):
model = Change
serializer_class = ChangeSerializer
class ChangeDetail(generics.RetrieveUpdateDestroyAPIView):
model = Change
serializer_class = ChangeSerializer
class ChangeAttachmentList(generics.ListCreateAPIView):
model = ChangeAttachment
serializer_class = ChangeAttachmentSerializer
class ChangeAttachmentDetail(generics.RetrieveUpdateDestroyAPIView):
model = ChangeAttachment
serializer_class = ChangeAttachmentSerializer
class TaskList(generics.ListCreateAPIView):
model = Task
serializer_class = TaskSerializer
filter_fields = ('user_story', 'milestone', 'project')
class TaskDetail(generics.RetrieveUpdateDestroyAPIView):
model = Task
serializer_class = TaskSerializer
class SeverityList(generics.ListCreateAPIView):
model = Severity
serializer_class = SeveritySerializer
filter_fields = ('project',)
class SeverityDetail(generics.RetrieveUpdateDestroyAPIView):
model = Severity
serializer_class = SeveritySerializer
class IssueStatusList(generics.ListCreateAPIView):
model = IssueStatus
serializer_class = IssueStatusSerializer
filter_fields = ('project',)
class IssueStatusDetail(generics.RetrieveUpdateDestroyAPIView):
model = IssueStatus
serializer_class = IssueStatusSerializer
class TaskStatusList(SimpleFilterMixin, generics.ListCreateAPIView):
model = TaskStatus
serializer_class = TaskStatusSerializer
filter_fields = ('project',)
class TaskStatusDetail(generics.RetrieveUpdateDestroyAPIView):
model = TaskStatus
serializer_class = TaskStatusSerializer
class UserStoryStatusList(generics.ListCreateAPIView):
model = UserStoryStatus
serializer_class = UserStoryStatusSerializer
filter_fields = ('project',)
class UserStoryStatusDetail(generics.RetrieveUpdateDestroyAPIView):
model = UserStoryStatus
serializer_class = UserStoryStatusSerializer
class PriorityList(generics.ListCreateAPIView):
model = Priority
serializer_class = PrioritySerializer
filter_fields = ('project',)
class PriorityDetail(generics.RetrieveUpdateDestroyAPIView):
model = Priority
serializer_class = PrioritySerializer
class IssueTypeList(generics.ListCreateAPIView):
model = IssueType
serializer_class = IssueTypeSerializer
filter_fields = ('project',)
class IssueTypeDetail(generics.RetrieveUpdateDestroyAPIView):
model = IssueType
serializer_class = IssueTypeSerializer
class PointsList(generics.ListCreateAPIView):
model = Points
serializer_class = PointsSerializer
filter_fields = ('project',)
class PointsDetail(generics.RetrieveUpdateDestroyAPIView):
model = Points
serializer_class = PointsSerializer