from rest_framework import permissions


class IsContentModeratorOrAdmin(permissions.BasePermission):
    """Permission pour les modérateurs de contenu et admins"""

    def has_permission(self, request, view):
        return (
                request.user.is_authenticated and
                request.user.role in ['content_moderator', 'museum_admin']
        )


class IsMuseumAdminOrReadOnly(permissions.BasePermission):
    """Permission pour les admins du musée ou lecture seule"""

    def has_permission(self, request, view):
        if request.method in permissions.SAFE_METHODS:
            return True
        return (
                request.user.is_authenticated and
                request.user.role == 'museum_admin'
        )


class IsOwnerOrReadOnly(permissions.BasePermission):
    """Permission pour le propriétaire ou lecture seule"""

    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True

        # Vérifier si l'utilisateur est le propriétaire
        if hasattr(obj, 'user'):
            return obj.user == request.user
        elif hasattr(obj, 'created_by'):
            return obj.created_by == request.user

        return False
