uchill/backend/apps/materials/permissions.py

45 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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