Addin comment support in issues history

remotes/origin/enhancement/email-actions
Alejandro Alonso 2013-04-02 10:04:13 +02:00
parent f114381883
commit b49b2dce49
2 changed files with 36 additions and 36 deletions

View File

@ -135,22 +135,6 @@ class ChangeAttachmentDetail(generics.RetrieveUpdateDestroyAPIView):
permission_classes = (IsAuthenticated, ChangeAttachmentDetailPermission,)
class IssueList(generics.ListCreateAPIView):
model = Issue
serializer_class = IssueSerializer
filter_fields = ('project',)
permission_classes = (IsAuthenticated,)
def get_queryset(self):
return self.model.objects.filter(project__members=self.request.user)
class IssueDetail(generics.RetrieveUpdateDestroyAPIView):
model = Issue
serializer_class = IssueSerializer
permission_classes = (IsAuthenticated, IssueDetailPermission,)
class TaskList(generics.ListCreateAPIView):
model = Task
serializer_class = TaskSerializer
@ -179,10 +163,19 @@ class IssueList(generics.ListCreateAPIView):
def pre_save(self, obj):
obj.owner = self.request.user
def get_queryset(self):
return self.model.objects.filter(project__members=self.request.user)
class IssueDetail(generics.RetrieveUpdateDestroyAPIView):
model = Issue
serializer_class = IssueSerializer
permission_classes = (IsAuthenticated, IssueDetailPermission,)
def pre_save(self, obj, created=False):
with reversion.create_revision():
#Update the comment in the last version
reversion.set_comment(self.request.DATA['comment'])
class SeverityList(generics.ListCreateAPIView):

View File

@ -71,49 +71,56 @@ class TaskSerializer(serializers.ModelSerializer):
model = Task
fields = ()
class IssueSerializer(serializers.ModelSerializer):
class BaseIssueSerializer(serializers.ModelSerializer):
tags = PickleField()
history = serializers.SerializerMethodField('get_history')
comment = serializers.SerializerMethodField('get_comment')
class Meta:
model = Issue
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
def get_comment(self, obj):
return ''
class IssueSerializer(BaseIssueSerializer):
tags = PickleField()
comment = serializers.SerializerMethodField('get_comment')
history = serializers.SerializerMethodField('get_history')
def get_issues_diff(self, old_data, new_data, by, comment):
diff_dict = {
'modified_date': new_obj['modified_date'],
'by': old_issue_version.revision.user,
'modified_date': new_data['modified_date'],
'by': by,
'comment': comment,
}
for key in old_obj.keys():
if key == 'modified_date':
for key in old_data.keys():
if key in ['modified_date', 'created_date', 'comment']:
continue
if old_obj[key] == new_obj[key]:
if old_data[key] == new_data[key]:
continue
diff_dict[key] = {
'old': old_obj[key],
'new': new_obj[key],
'old': old_data[key],
'new': new_data[key],
}
return diff_dict
def get_history(self, obj):
#TODO: add comments info
diff_list = []
current = None
current_data = BaseIssueSerializer(obj).data
for version in reversed(list(reversion.get_for_object(obj))):
if current:
issues_diff = self.get_issues_diff(current, version)
version_data = version.field_dict
by = version.revision.user
comment = version.revision.comment
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