Fixing history for issues and us

remotes/origin/enhancement/email-actions
Alejandro Alonso 2013-07-18 12:05:07 +02:00
parent 81024ec63f
commit c2fd51b969
2 changed files with 52 additions and 3 deletions

View File

@ -128,6 +128,13 @@ class UserStoryDetail(NotificationSenderMixin, generics.RetrieveUpdateDestroyAPI
update_notification_template = "update_user_story_notification" update_notification_template = "update_user_story_notification"
destroy_notification_template = "destroy_user_story_notification" destroy_notification_template = "destroy_user_story_notification"
def post_save(self, obj, created=False):
with reversion.create_revision():
if "comment" in self.request.DATA:
# Update the comment in the last version
reversion.set_comment(self.request.DATA['comment'])
super(UserStoryDetail, self).post_save(obj, created)
class AttachmentFilter(django_filters.FilterSet): class AttachmentFilter(django_filters.FilterSet):
class Meta: class Meta:

View File

@ -40,13 +40,15 @@ class RolePointsField(serializers.WritableField):
return {str(o.role.id): o.points.order for o in obj.all()} return {str(o.role.id): o.points.order for o in obj.all()}
def from_native(self, obj): def from_native(self, obj):
return json.loads(obj) return obj
class UserStorySerializer(serializers.ModelSerializer): class UserStorySerializer(serializers.ModelSerializer):
tags = PickleField() tags = PickleField()
is_closed = serializers.Field(source='is_closed') is_closed = serializers.Field(source='is_closed')
points = RolePointsField(source='role_points') points = RolePointsField(source='role_points')
comment = serializers.SerializerMethodField('get_comment')
history = serializers.SerializerMethodField('get_history')
class Meta: class Meta:
model = UserStory model = UserStory
@ -63,6 +65,46 @@ class UserStorySerializer(serializers.ModelSerializer):
role_points.points.order = points_order role_points.points.order = points_order
role_points.points.save() role_points.points.save()
def get_comment(self, obj):
return ''
def get_user_stories_diff(self, old_us_version, new_us_version):
old_obj = old_us_version.field_dict
new_obj = new_us_version.field_dict
diff_dict = {
'modified_date': new_obj['modified_date'],
'by': new_us_version.revision.user,
'comment': new_us_version.revision.comment,
}
for key in old_obj.keys():
if key == 'modified_date':
continue
if old_obj[key] == new_obj[key]:
continue
diff_dict[key] = {
'old': old_obj[key],
'new': new_obj[key],
}
return diff_dict
def get_history(self, obj):
diff_list = []
current = None
for version in reversed(list(reversion.get_for_object(obj))):
if current:
us_diff = self.get_user_stories_diff(current, version)
diff_list.append(us_diff)
current = version
return diff_list
class MilestoneSerializer(serializers.ModelSerializer): class MilestoneSerializer(serializers.ModelSerializer):
user_stories = UserStorySerializer(many=True, required=False) user_stories = UserStorySerializer(many=True, required=False)
@ -104,8 +146,8 @@ class TaskSerializer(serializers.ModelSerializer):
diff_dict = { diff_dict = {
'modified_date': new_obj['modified_date'], 'modified_date': new_obj['modified_date'],
'by': old_issue_version.revision.user, 'by': new_us_version.revision.user,
'comment': old_issue_version.revision.comment, 'comment': new_us_version.revision.comment,
} }
for key in old_obj.keys(): for key in old_obj.keys():