Added roles to the serialized use to show the project detail

remotes/origin/enhancement/email-actions
David Barragán Merino 2013-12-01 23:06:22 +01:00
parent 69311a3076
commit 13c3f57ab7
1 changed files with 22 additions and 2 deletions

View File

@ -3,6 +3,7 @@
from rest_framework import serializers from rest_framework import serializers
from greenmine.base.serializers import PickleField from greenmine.base.serializers import PickleField
from greenmine.base.users.serializers import RoleSerializer
from . import models from . import models
@ -106,6 +107,7 @@ 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")
memberships = MembershipSerializer(many=True, required=False) memberships = MembershipSerializer(many=True, required=False)
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)
@ -116,17 +118,35 @@ class ProjectDetailSerializer(ProjectSerializer):
issue_types = IssueTypeSerializer(many=True, required=False) issue_types = IssueTypeSerializer(many=True, required=False)
#question_statuses = QuestionStatusSerializer(many=True, required=False) # Questions #question_statuses = QuestionStatusSerializer(many=True, required=False) # Questions
def get_list_of_roles(self, obj):
roles_list = []
if obj and obj.memberships:
roles_list = [{
"id": role["role__id"],
"name": role["role__name"],
"slug": role["role__slug"],
"order": role["role__order"],
"computable": role["role__computable"],
} for role in obj.memberships.values("role__id", "role__name", "role__slug", "role__order",
"role__computable")
.order_by("role__order", "role__id")
.distinct("role__order", "role__id")]
return roles_list
def get_list_of_milestones(self, obj): def get_list_of_milestones(self, obj):
milestones_list = [] milestones_list = []
if obj and obj.memberships: if obj and obj.milestones:
milestones_list = [{ milestones_list = [{
"id": milestone.id, "id": milestone.id,
"name": milestone.name, "name": milestone.name,
"finish_date": milestone.estimated_finish, "finish_date": milestone.estimated_finish,
"closed_points": milestone.closed_points, "closed_points": milestone.closed_points,
"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
} for milestone in obj.milestones.all().order_by("estimated_start")] } for milestone in obj.milestones.all().order_by("estimated_start")]
return milestones_list return milestones_list