postlike.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from rest_framework import serializers
  2. from django.urls import reverse
  3. from misago.threads.models import PostLike
  4. __all__ = [
  5. 'PostLikeSerializer',
  6. ]
  7. class PostLikeSerializer(serializers.ModelSerializer):
  8. avatars = serializers.SerializerMethodField()
  9. liker_id = serializers.SerializerMethodField()
  10. username = serializers.SerializerMethodField()
  11. url = serializers.SerializerMethodField()
  12. class Meta:
  13. model = PostLike
  14. fields = [
  15. 'id',
  16. 'avatars',
  17. 'liked_on',
  18. 'liker_id',
  19. 'username',
  20. 'url',
  21. ]
  22. def get_liker_id(self, obj):
  23. return obj['liker_id']
  24. def get_username(self, obj):
  25. return obj['liker_name']
  26. def get_avatars(self, obj):
  27. return obj.get('liker__avatars')
  28. def get_url(self, obj):
  29. if obj['liker_id']:
  30. return reverse(
  31. 'misago:user', kwargs={
  32. 'slug': obj['liker_slug'],
  33. 'pk': obj['liker_id'],
  34. }
  35. )
  36. else:
  37. return None