diff --git a/greenmine/scrum/api.py b/greenmine/scrum/api.py index 4593f33f..a1fc8f5d 100644 --- a/greenmine/scrum/api.py +++ b/greenmine/scrum/api.py @@ -36,6 +36,8 @@ class ProjectList(generics.ListCreateAPIView): model = Project serializer_class = ProjectSerializer + def pre_save(self, obj): + obj.owner = self.request.user class ProjectDetail(generics.RetrieveUpdateDestroyAPIView): model = Project @@ -47,6 +49,9 @@ class MilestoneList(generics.ListCreateAPIView): serializer_class = MilestoneSerializer filter_fields = ('project',) + def pre_save(self, obj): + obj.owner = self.request.user + class MilestoneDetail(generics.RetrieveUpdateDestroyAPIView): model = Milestone @@ -71,6 +76,9 @@ class ChangeList(generics.ListCreateAPIView): model = Change serializer_class = ChangeSerializer + def pre_save(self, obj): + obj.owner = self.request.user + class ChangeDetail(generics.RetrieveUpdateDestroyAPIView): model = Change @@ -81,6 +89,9 @@ class ChangeAttachmentList(generics.ListCreateAPIView): model = ChangeAttachment serializer_class = ChangeAttachmentSerializer + def pre_save(self, obj): + obj.owner = self.request.user + class ChangeAttachmentDetail(generics.RetrieveUpdateDestroyAPIView): model = ChangeAttachment @@ -92,6 +103,9 @@ class TaskList(generics.ListCreateAPIView): serializer_class = TaskSerializer filter_fields = ('user_story', 'milestone', 'project') + def pre_save(self, obj): + obj.owner = self.request.user + class TaskDetail(generics.RetrieveUpdateDestroyAPIView): model = Task diff --git a/greenmine/scrum/models.py b/greenmine/scrum/models.py index 408f3e6c..2f5046b5 100644 --- a/greenmine/scrum/models.py +++ b/greenmine/scrum/models.py @@ -191,7 +191,8 @@ class Milestone(models.Model): uuid = models.CharField(max_length=40, unique=True, blank=True) name = models.CharField(max_length=200, db_index=True) slug = models.SlugField(max_length=250, unique=True, blank=True) - owner = models.ForeignKey('base.User', related_name="milestones", blank=True) + owner = models.ForeignKey('base.User', related_name="milestones", + null=True, blank=True) project = models.ForeignKey('Project', related_name="milestones") estimated_start = models.DateField(null=True, default=None) @@ -204,8 +205,6 @@ class Milestone(models.Model): disponibility = models.FloatField(null=True, default=0.0) order = models.PositiveSmallIntegerField("Order", default=1) - tags = PickledObjectField() - def save(self, *args, **kwargs): if not self.slug: self.slug = slugify_uniquely(self.name, self.__class__) @@ -216,15 +215,6 @@ class Milestone(models.Model): ordering = ['-created_date'] unique_together = ('name', 'project') - @property - def total_points(self): - """ - Get total story points for this milestone. - """ - - total = sum(iter_points(self.user_stories.all())) - return "{0:.1f}".format(total) - def __unicode__(self): return self.name diff --git a/greenmine/scrum/serializers.py b/greenmine/scrum/serializers.py index 4b76e4ab..95008644 100644 --- a/greenmine/scrum/serializers.py +++ b/greenmine/scrum/serializers.py @@ -41,8 +41,7 @@ class UserStorySerializer(serializers.ModelSerializer): class MilestoneSerializer(serializers.ModelSerializer): - tags = PickleField() - user_stories = UserStorySerializer(many=True) + user_stories = UserStorySerializer(many=True, required=False) class Meta: model = Milestone