""" 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