from django.urls import reverse

from rest_framework import serializers

from ..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