def update_read(self, request, pk=None):
"""
Updates user's read_at for channel
---
request_serializer: LastReadActivitySerializer
response_serializer: ChannelSerializer
"""
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
last_read = serializer.validated_data['last_read']
channel = get_object_or_404(self.get_queryset(), pk=pk)
if channel.has_object_read_permission(request):
if request.user.is_authenticated():
ChannelUser.objects.update_or_create(
user=request.user, channel=channel, defaults={'last_read': last_read}
)
else:
channel.last_read = last_read
channel.save()
response_serializer = ChannelSerializer(channel, context={'request': request})
return Response(response_serializer.data)
return Response(
{'status': 'Unauthorized', 'message': 'No access to this channel'},
status=status.HTTP_401_UNAUTHORIZED
)
评论列表
文章目录