Adding support in the API for issue history
parent
1254707788
commit
c9635159b1
|
@ -3,7 +3,7 @@ from rest_framework import serializers
|
||||||
from greenmine.scrum.models import *
|
from greenmine.scrum.models import *
|
||||||
from picklefield.fields import dbsafe_encode, dbsafe_decode
|
from picklefield.fields import dbsafe_encode, dbsafe_decode
|
||||||
|
|
||||||
import json
|
import json, reversion
|
||||||
|
|
||||||
class PickleField(serializers.WritableField):
|
class PickleField(serializers.WritableField):
|
||||||
"""
|
"""
|
||||||
|
@ -74,18 +74,44 @@ class TaskSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class IssueSerializer(serializers.ModelSerializer):
|
class IssueSerializer(serializers.ModelSerializer):
|
||||||
tags = PickleField()
|
tags = PickleField()
|
||||||
|
history = serializers.SerializerMethodField('get_history')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Issue
|
model = Issue
|
||||||
fields = ()
|
fields = ()
|
||||||
|
|
||||||
|
def get_issues_diff(self, old_issue_version, new_issue_version):
|
||||||
|
old_obj = old_issue_version.field_dict
|
||||||
|
new_obj = new_issue_version.field_dict
|
||||||
|
diff_dict = {'modified_date':new_obj['modified_date']}
|
||||||
|
|
||||||
class IssueSerializer(serializers.ModelSerializer):
|
for key in old_obj.keys():
|
||||||
tags = PickleField()
|
if key == 'modified_date':
|
||||||
|
continue
|
||||||
|
|
||||||
class Meta:
|
if old_obj[key] == new_obj[key]:
|
||||||
model = Issue
|
continue
|
||||||
fields = ()
|
|
||||||
|
diff_dict[key] = {
|
||||||
|
'old': old_obj[key],
|
||||||
|
'new': new_obj[key],
|
||||||
|
}
|
||||||
|
|
||||||
|
return diff_dict
|
||||||
|
|
||||||
|
def get_history(self, obj):
|
||||||
|
#TODO: add comments info
|
||||||
|
diff_list = []
|
||||||
|
current = None
|
||||||
|
|
||||||
|
for version in reversed(list(reversion.get_for_object(obj))):
|
||||||
|
if current:
|
||||||
|
issues_diff = self.get_issues_diff(current, version)
|
||||||
|
diff_list.append(issues_diff)
|
||||||
|
|
||||||
|
current = version
|
||||||
|
|
||||||
|
return diff_list
|
||||||
|
|
||||||
|
|
||||||
class SeveritySerializer(serializers.ModelSerializer):
|
class SeveritySerializer(serializers.ModelSerializer):
|
||||||
|
|
Loading…
Reference in New Issue