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


class IsMaterialOwner(permissions.BasePermission):
    """
    Проверка что пользователь - владелец материала.
    """
    
    message = 'Только владелец материала может выполнить это действие.'
    
    def has_object_permission(self, request, view, obj):
        """Проверка доступа к объекту."""
        if hasattr(obj, 'owner'):
            return obj.owner == request.user
        return False


class IsMaterialOwnerOrShared(permissions.BasePermission):
    """
    Проверка что пользователь - владелец или имеет доступ к материалу.
    """
    
    message = 'У вас нет доступа к этому материалу.'
    
    def has_object_permission(self, request, view, obj):
        """Проверка доступа к объекту."""
        # Для Material
        if hasattr(obj, 'has_access'):
            return obj.has_access(request.user)
        
        # Для MaterialFolder
        if hasattr(obj, 'owner') and hasattr(obj, 'shared_with'):
            if obj.owner == request.user:
                return True
            if obj.shared_with.filter(id=request.user.id).exists():
                return True
            if obj.is_public:
                return True
        
        return False

