|
|
|
@ -109,3 +109,39 @@ class MileStoneSerializer(serializers.ModelSerializer):
|
|
|
|
|
model = Milestone
|
|
|
|
|
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
|