From 9a1c9c8403eb11d4647fe66485bef059cec37451 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Wed, 17 Jul 2013 09:12:51 +0200 Subject: [PATCH] Different kind of points for US API --- greenmine/scrum/models.py | 3 +++ greenmine/scrum/serializers.py | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/greenmine/scrum/models.py b/greenmine/scrum/models.py index ef7bd810..4239a1fe 100644 --- a/greenmine/scrum/models.py +++ b/greenmine/scrum/models.py @@ -455,6 +455,9 @@ class UserStory(models.Model): def is_closed(self): return self.status.is_closed + def get_role_points(self): + return self.role_points + class Attachment(models.Model): owner = models.ForeignKey('base.User', null=False, blank=False, diff --git a/greenmine/scrum/serializers.py b/greenmine/scrum/serializers.py index 2493be45..8b1a2572 100644 --- a/greenmine/scrum/serializers.py +++ b/greenmine/scrum/serializers.py @@ -34,15 +34,33 @@ class ProjectSerializer(serializers.ModelSerializer): fields = () +class RolePointsField(serializers.WritableField): + def to_native(self, obj): + return {str(o.role.id): o.points.order for o in obj.all()} + + def from_native(self, obj): + return json.loads(obj) + + class UserStorySerializer(serializers.ModelSerializer): tags = PickleField() is_closed = serializers.Field(source='is_closed') + points = RolePointsField(source='role_points') class Meta: model = UserStory fields = () depth = 0 + def save_object(self, obj, **kwargs): + role_points = obj._related_data.pop('role_points') + super(UserStorySerializer, self).save_object(obj, **kwargs) + + for role_id, points_order in role_points.items(): + role_points = obj.role_points.get(role__id=role_id) + role_points.points.order = points_order + role_points.points.save() + class MilestoneSerializer(serializers.ModelSerializer): user_stories = UserStorySerializer(many=True, required=False)