From 6b5aad4befa2c7eeb01551036a4ef7642af0c2c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Thu, 17 Oct 2013 15:38:07 +0200 Subject: [PATCH] Moved list_of_milestones method from the model to the serializer --- greenmine/projects/models.py | 10 ---------- greenmine/projects/serializers.py | 17 ++++++++++++++++- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/greenmine/projects/models.py b/greenmine/projects/models.py index 99bed5dc..bdb64637 100644 --- a/greenmine/projects/models.py +++ b/greenmine/projects/models.py @@ -110,16 +110,6 @@ class Project(models.Model): super(Project, self).save(*args, **kwargs) - @property - def list_of_milestones(self): - return [{ - "id": milestone.id, - "name": milestone.name, - "finish_date": milestone.estimated_finish, - "closed_points": milestone.closed_points, - "client_increment_points": milestone.client_increment_points, - "team_increment_points": milestone.team_increment_points - } for milestone in self.milestones.all().order_by("estimated_start")] def get_roles(self): role_model = get_model("users", "Role") diff --git a/greenmine/projects/serializers.py b/greenmine/projects/serializers.py index 88e5d946..80e79647 100644 --- a/greenmine/projects/serializers.py +++ b/greenmine/projects/serializers.py @@ -71,7 +71,7 @@ class QuestionStatusSerializer(serializers.ModelSerializer): class ProjectSerializer(serializers.ModelSerializer): tags = PickleField(required=False) - list_of_milestones = serializers.Field(source="list_of_milestones") + list_of_milestones = serializers.SerializerMethodField("get_list_of_milestones") us_statuses = UserStoryStatusSerializer(many=True, required=False) # User Stories points = PointsSerializer(many=True, required=False) task_statuses = TaskStatusSerializer(many=True, required=False) # Tasks @@ -84,3 +84,18 @@ class ProjectSerializer(serializers.ModelSerializer): class Meta: model = models.Project read_only_fields = ("owner",) + + def get_list_of_milestones(self, obj): + milestones_list = [] + + if obj and obj.memberships: + milestones_list = [{ + "id": milestone.id, + "name": milestone.name, + "finish_date": milestone.estimated_finish, + "closed_points": milestone.closed_points, + "client_increment_points": milestone.client_increment_points, + "team_increment_points": milestone.team_increment_points + } for milestone in obj.milestones.all().order_by("estimated_start")] + + return milestones_list