Fixing small bug in issue history

remotes/origin/enhancement/email-actions
Alejandro Alonso 2013-04-02 10:33:41 +02:00
parent b49b2dce49
commit 20ac0dce27
2 changed files with 21 additions and 24 deletions

View File

@ -172,7 +172,7 @@ class IssueDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = IssueSerializer serializer_class = IssueSerializer
permission_classes = (IsAuthenticated, IssueDetailPermission,) permission_classes = (IsAuthenticated, IssueDetailPermission,)
def pre_save(self, obj, created=False): def post_save(self, obj, created=False):
with reversion.create_revision(): with reversion.create_revision():
#Update the comment in the last version #Update the comment in the last version
reversion.set_comment(self.request.DATA['comment']) reversion.set_comment(self.request.DATA['comment'])

View File

@ -71,9 +71,11 @@ class TaskSerializer(serializers.ModelSerializer):
model = Task model = Task
fields = () fields = ()
class BaseIssueSerializer(serializers.ModelSerializer):
class IssueSerializer(serializers.ModelSerializer):
tags = PickleField() tags = PickleField()
comment = serializers.SerializerMethodField('get_comment') comment = serializers.SerializerMethodField('get_comment')
history = serializers.SerializerMethodField('get_history')
class Meta: class Meta:
model = Issue model = Issue
@ -82,45 +84,40 @@ class BaseIssueSerializer(serializers.ModelSerializer):
def get_comment(self, obj): def get_comment(self, obj):
return '' return ''
def get_issues_diff(self, old_issue_version, new_issue_version):
class IssueSerializer(BaseIssueSerializer): old_obj = old_issue_version.field_dict
tags = PickleField() new_obj = new_issue_version.field_dict
comment = serializers.SerializerMethodField('get_comment')
history = serializers.SerializerMethodField('get_history')
def get_issues_diff(self, old_data, new_data, by, comment):
diff_dict = { diff_dict = {
'modified_date': new_data['modified_date'], 'modified_date': new_obj['modified_date'],
'by': by, 'by': old_issue_version.revision.user,
'comment': comment, 'comment': old_issue_version.revision.comment,
} }
for key in old_data.keys(): for key in old_obj.keys():
if key in ['modified_date', 'created_date', 'comment']: if key == 'modified_date':
continue continue
if old_data[key] == new_data[key]: if old_obj[key] == new_obj[key]:
continue continue
diff_dict[key] = { diff_dict[key] = {
'old': old_data[key], 'old': old_obj[key],
'new': new_data[key], 'new': new_obj[key],
} }
return diff_dict return diff_dict
def get_history(self, obj): def get_history(self, obj):
diff_list = [] diff_list = []
current_data = BaseIssueSerializer(obj).data current = None
for version in reversed(list(reversion.get_for_object(obj))): for version in reversed(list(reversion.get_for_object(obj))):
version_data = version.field_dict if current:
by = version.revision.user issues_diff = self.get_issues_diff(version, current)
comment = version.revision.comment diff_list.append(issues_diff)
issues_diff = self.get_issues_diff(current_data, version_data, by, comment)
diff_list.append(issues_diff) current = version
current_data = version.field_dict
return diff_list return diff_list