44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
# coding: utf-8
|
|
|
|
# python
|
|
from itertools import chain
|
|
import json
|
|
|
|
# third
|
|
from rest_framework import viewsets
|
|
from rest_framework.response import Response
|
|
from rest_framework.permissions import IsAuthenticated
|
|
|
|
# own
|
|
from shelfzilla.apps.manga.models import (
|
|
UserReadVolume, UserHaveVolume, UserWishlistVolume
|
|
)
|
|
|
|
|
|
class FeedViewSet(viewsets.ViewSet):
|
|
"""
|
|
"""
|
|
permission_classes = (IsAuthenticated,)
|
|
|
|
def list(self, request):
|
|
owned_list = UserHaveVolume.objects.filter(user=request.user)
|
|
wishlisted_list = UserWishlistVolume.objects.filter(user=request.user)
|
|
read_list = UserReadVolume.objects.filter(user=request.user)
|
|
|
|
timeline = sorted(
|
|
chain(owned_list, wishlisted_list, read_list),
|
|
key=lambda model: model.date,
|
|
reverse=True
|
|
)[:20]
|
|
|
|
result = []
|
|
for item in timeline:
|
|
event = {
|
|
'date': item.date,
|
|
'message': item.timeline_message,
|
|
'type': item.event_type,
|
|
}
|
|
result.append(event)
|
|
|
|
return Response(result)
|