"""
Permissions для chat модуля.
"""
from rest_framework import permissions


class IsChatParticipant(permissions.BasePermission):
    """
    Проверка что пользователь - участник чата.
    """
    
    message = 'У вас нет доступа к этому чату.'
    
    def has_object_permission(self, request, view, obj):
        """Проверка доступа к объекту."""
        from .models import ChatParticipant
        
        return ChatParticipant.objects.filter(
            chat=obj,
            user=request.user
        ).exists()


class IsMessageSender(permissions.BasePermission):
    """
    Проверка что пользователь - отправитель сообщения.
    """
    
    message = 'Вы можете редактировать/удалять только свои сообщения.'
    
    def has_object_permission(self, request, view, obj):
        """Проверка доступа к объекту."""
        # Для GET запросов разрешаем всем участникам чата
        if request.method in permissions.SAFE_METHODS:
            from .models import ChatParticipant
            return ChatParticipant.objects.filter(
                chat=obj.chat,
                user=request.user
            ).exists()
        
        # Для изменения/удаления только отправителю
        return obj.sender == request.user

