Salim Elliye 2 weeks ago
parent 350d2e5618
commit 49009449fb

@ -109,3 +109,39 @@ class MileStoneSerializer(serializers.ModelSerializer):
model = Milestone model = Milestone
fields = "__all__" fields = "__all__"
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = "__all__"
class UserStorySerializer(serializers.ModelSerializer):
project = ProjectSerializer(read_only=True)
user = UserSerializer(read_only=True)
milestone = MileStoneSerializer(read_only=True)
confirmed_date = serializers.SerializerMethodField()
completed_date = serializers.SerializerMethodField()
class Meta:
model = UserStory
fields = "__all__"
def get_confirmed_date(self, obj):
last_task = Task.objects.filter(userstory=obj).order_by("-id").first()
if last_task:
last_point = PointActivity.objects.filter(point__task=last_task).order_by("-start_time").first()
if last_point: # or "Confirmed" if that's your label
return last_point.start_time
return None
def get_completed_date(self, obj):
last_task = Task.objects.filter(userstory=obj).order_by("-id").first()
if last_task:
last_point = PointActivity.objects.filter(point__task=last_task).order_by("-start_time").first()
if last_point: # completed means Closed
return last_point.end_time or last_point.start_time
return None

@ -8,4 +8,5 @@ urlpatterns = [
path("projects/", ProjectsAPIView.as_view(), name="projects"), path("projects/", ProjectsAPIView.as_view(), name="projects"),
path("epics/", EpicsAPIView.as_view(), name="epics"), path("epics/", EpicsAPIView.as_view(), name="epics"),
path("milestones/", MileStoneAPIView.as_view(), name="milestones"), path("milestones/", MileStoneAPIView.as_view(), name="milestones"),
path("userstories/", UserStoryAPIView.as_view(), name="userstories"),
] ]

@ -102,4 +102,19 @@ class MileStoneAPIView(APIView):
data.append(milestone_data) data.append(milestone_data)
return Response(data, status=status.HTTP_200_OK)
class UserStoryAPIView(APIView):
def get(self, request):
data = []
userstories = UserStory.objects.all()
for userstory in userstories:
user_story_data = UserStorySerializer(userstory).data
data.append(user_story_data)
return Response(data, status=status.HTTP_200_OK) return Response(data, status=status.HTTP_200_OK)
Loading…
Cancel
Save