""" Права доступа для расписания. """ from rest_framework import permissions class IsLessonParticipant(permissions.BasePermission): """Проверка, является ли пользователь участником занятия.""" def has_object_permission(self, request, view, obj): """Проверка прав на объект занятия.""" # Админы имеют полный доступ if request.user.is_staff or request.user.is_superuser: return True # Ментор занятия имеет полный доступ if obj.mentor == request.user: return True # Клиент занятия имеет доступ на чтение try: if obj.client.user == request.user: return request.method in permissions.SAFE_METHODS except: pass # Родитель клиента имеет доступ на чтение try: if request.user.role == 'parent': parent_children = request.user.parent_profile.children.all() if obj.client in parent_children: return request.method in permissions.SAFE_METHODS except: pass return False class IsMentorOrReadOnly(permissions.BasePermission): """Только менторы могут создавать/редактировать, остальные только читать.""" def has_permission(self, request, view): """Проверка общих прав.""" if request.method in permissions.SAFE_METHODS: return True return request.user.role == 'mentor' def has_object_permission(self, request, view, obj): """Проверка прав на объект.""" if request.method in permissions.SAFE_METHODS: return True # Только создатель (ментор) может редактировать/удалять return obj.mentor == request.user or request.user.is_staff