add timeline information to the /items endpoint
This commit is contained in:
parent
0f5517e0ac
commit
b19f59c689
5 changed files with 161 additions and 11 deletions
|
@ -35,16 +35,18 @@ class ContainerSerializer(serializers.ModelSerializer):
|
|||
read_only_fields = ['id', 'itemCount']
|
||||
|
||||
def get_itemCount(self, instance):
|
||||
return Item.objects.filter(container=instance.id).count()
|
||||
return len(instance.items)
|
||||
|
||||
|
||||
class ItemSerializer(BasicItemSerializer):
|
||||
timeline = serializers.SerializerMethodField()
|
||||
dataImage = serializers.CharField(write_only=True, required=False)
|
||||
related_issues = BasicIssueSerializer(many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Item
|
||||
fields = ['cid', 'box', 'id', 'description', 'file', 'dataImage', 'returned', 'event', 'related_issues']
|
||||
fields = ['cid', 'box', 'id', 'description', 'file', 'dataImage', 'returned', 'event', 'related_issues',
|
||||
'timeline']
|
||||
read_only_fields = ['id']
|
||||
|
||||
def to_internal_value(self, data):
|
||||
|
@ -86,6 +88,26 @@ class ItemSerializer(BasicItemSerializer):
|
|||
instance.files.add(file)
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
@staticmethod
|
||||
def get_timeline(obj):
|
||||
timeline = []
|
||||
for comment in obj.comments.all():
|
||||
timeline.append({
|
||||
'type': 'comment',
|
||||
'id': comment.id,
|
||||
'timestamp': comment.timestamp,
|
||||
'comment': comment.comment,
|
||||
})
|
||||
for relation in (obj.issue_relation_changes.all()):
|
||||
timeline.append({
|
||||
'type': 'issue_relation',
|
||||
'id': relation.id,
|
||||
'status': relation.status,
|
||||
'timestamp': relation.timestamp,
|
||||
'issue_thread': BasicIssueSerializer(relation.issue_thread).data,
|
||||
})
|
||||
return sorted(timeline, key=lambda x: x['timestamp'])
|
||||
|
||||
|
||||
class SearchResultSerializer(serializers.Serializer):
|
||||
search_score = serializers.IntegerField()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue