from rest_framework import serializers

from django.urls import reverse

from misago.threads.models import PostEdit


__all__ = [
    'PostEditSerializer',
]


class PostEditSerializer(serializers.ModelSerializer):
    diff = serializers.SerializerMethodField()

    url = serializers.SerializerMethodField()

    class Meta:
        model = PostEdit
        fields = [
            'id',
            'edited_on',
            'editor_name',
            'editor_slug',
            'diff',
            'url',
        ]

    def get_diff(self, obj):
        return obj.get_diff()

    def get_url(self, obj):
        return {
            'editor': self.get_editor_url(obj),
        }

    def get_editor_url(self, obj):
        if obj.editor_id:
            return reverse(
                'misago:user', kwargs={
                    'slug': obj.editor_slug,
                    'pk': obj.editor_id,
                }
            )
        else:
            return None