add links between items and tickets /tickets endpoint
This commit is contained in:
parent
d8be7f09e4
commit
2ece0cefd8
5 changed files with 81 additions and 7 deletions
|
@ -3,6 +3,7 @@ from rest_framework import serializers
|
|||
from authentication.models import ExtendedUser
|
||||
from mail.api_v2 import AttachmentSerializer
|
||||
from tickets.models import IssueThread, Comment, STATE_CHOICES, ShippingVoucher
|
||||
from inventory.serializers import ItemSerializer
|
||||
|
||||
|
||||
class CommentSerializer(serializers.ModelSerializer):
|
||||
|
@ -40,11 +41,12 @@ class IssueSerializer(serializers.ModelSerializer):
|
|||
last_activity = serializers.SerializerMethodField()
|
||||
assigned_to = serializers.SlugRelatedField(slug_field='username', queryset=ExtendedUser.objects.all(),
|
||||
allow_null=True, required=False)
|
||||
related_items = ItemSerializer(many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = IssueThread
|
||||
fields = ('id', 'timeline', 'name', 'state', 'assigned_to', 'last_activity', 'uuid')
|
||||
read_only_fields = ('id', 'timeline', 'last_activity', 'uuid')
|
||||
fields = ('id', 'timeline', 'name', 'state', 'assigned_to', 'last_activity', 'uuid', 'related_items')
|
||||
read_only_fields = ('id', 'timeline', 'last_activity', 'uuid', 'related_items')
|
||||
|
||||
def to_internal_value(self, data):
|
||||
ret = super().to_internal_value(data)
|
||||
|
@ -69,7 +71,9 @@ class IssueSerializer(serializers.ModelSerializer):
|
|||
last_mail = self.emails.order_by('-timestamp').first().timestamp if self.emails.count() > 0 else None
|
||||
last_assignment = self.assignments.order_by('-timestamp').first().timestamp if \
|
||||
self.assignments.count() > 0 else None
|
||||
args = [x for x in [last_state_change, last_comment, last_mail, last_assignment] if
|
||||
last_relation = self.item_relations.order_by('-timestamp').first().timestamp if \
|
||||
self.item_relations.count() > 0 else None
|
||||
args = [x for x in [last_state_change, last_comment, last_mail, last_assignment, last_relation] if
|
||||
x is not None]
|
||||
return max(args)
|
||||
except AttributeError:
|
||||
|
@ -110,6 +114,14 @@ class IssueSerializer(serializers.ModelSerializer):
|
|||
'timestamp': assignment.timestamp,
|
||||
'assigned_to': assignment.assigned_to.username,
|
||||
})
|
||||
for relation in obj.item_relations.all():
|
||||
timeline.append({
|
||||
'type': 'item_relation',
|
||||
'id': relation.id,
|
||||
'status': relation.status,
|
||||
'timestamp': relation.timestamp,
|
||||
'item': ItemSerializer(relation.item).data,
|
||||
})
|
||||
for shipping_voucher in obj.shipping_vouchers.all():
|
||||
timeline.append({
|
||||
'type': 'shipping_voucher',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue