Some optimization on get project from the api
parent
bb595b8fdd
commit
7634ab5078
|
@ -92,9 +92,9 @@ class ProjectSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class ProjectDetailSerializer(ProjectSerializer):
|
class ProjectDetailSerializer(ProjectSerializer):
|
||||||
list_of_milestones = serializers.SerializerMethodField("get_list_of_milestones")
|
#list_of_milestones = serializers.SerializerMethodField("get_list_of_milestones")
|
||||||
roles = serializers.SerializerMethodField("get_list_of_roles")
|
roles = serializers.SerializerMethodField("get_list_of_roles")
|
||||||
memberships = ProjectMembershipSerializer(many=True, required=False)
|
memberships = serializers.SerializerMethodField("get_membership")
|
||||||
active_memberships = serializers.SerializerMethodField("get_active_membership")
|
active_memberships = serializers.SerializerMethodField("get_active_membership")
|
||||||
us_statuses = UserStoryStatusSerializer(many=True, required=False) # User Stories
|
us_statuses = UserStoryStatusSerializer(many=True, required=False) # User Stories
|
||||||
points = PointsSerializer(many=True, required=False)
|
points = PointsSerializer(many=True, required=False)
|
||||||
|
@ -104,8 +104,13 @@ class ProjectDetailSerializer(ProjectSerializer):
|
||||||
issue_statuses = IssueStatusSerializer(many=True, required=False)
|
issue_statuses = IssueStatusSerializer(many=True, required=False)
|
||||||
issue_types = IssueTypeSerializer(many=True, required=False)
|
issue_types = IssueTypeSerializer(many=True, required=False)
|
||||||
|
|
||||||
|
def get_membership(self, obj):
|
||||||
|
memberships = obj.memberships.order_by('user__first_name', 'user__last_name', 'user__username').select_related("role", "user")
|
||||||
|
serializer = ProjectMembershipSerializer(memberships, many=True)
|
||||||
|
return serializer.data
|
||||||
|
|
||||||
def get_active_membership(self, obj):
|
def get_active_membership(self, obj):
|
||||||
memberships = obj.memberships.filter(user__isnull=False).order_by('user__first_name', 'user__last_name', 'user__username')
|
memberships = obj.memberships.filter(user__isnull=False).order_by('user__first_name', 'user__last_name', 'user__username').select_related("role", "user")
|
||||||
serializer = ProjectMembershipSerializer(memberships, many=True)
|
serializer = ProjectMembershipSerializer(memberships, many=True)
|
||||||
return serializer.data
|
return serializer.data
|
||||||
|
|
||||||
|
@ -139,7 +144,8 @@ class ProjectDetailSerializer(ProjectSerializer):
|
||||||
"client_increment_points": milestone.client_increment_points,
|
"client_increment_points": milestone.client_increment_points,
|
||||||
"team_increment_points": milestone.team_increment_points,
|
"team_increment_points": milestone.team_increment_points,
|
||||||
"closed": milestone.closed
|
"closed": milestone.closed
|
||||||
} for milestone in obj.milestones.all().order_by("estimated_start")]
|
} for milestone in obj.milestones.prefetch_related("user_stories", "user_stories__role_points", "user_stories__role_points__points").order_by("estimated_start")]
|
||||||
|
# TODO: Refactor this (too much prefetch related)
|
||||||
|
|
||||||
return milestones_list
|
return milestones_list
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue