44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
"""
|
||
Permissions для homework модуля.
|
||
"""
|
||
from rest_framework import permissions
|
||
|
||
|
||
class IsHomeworkMentor(permissions.BasePermission):
|
||
"""
|
||
Проверка что пользователь - ментор задания.
|
||
"""
|
||
|
||
message = 'Только ментор задания может выполнить это действие.'
|
||
|
||
def has_object_permission(self, request, view, obj):
|
||
"""Проверка доступа к объекту."""
|
||
# Для Homework
|
||
if hasattr(obj, 'mentor'):
|
||
return obj.mentor == request.user
|
||
|
||
return False
|
||
|
||
|
||
class IsSubmissionOwnerOrMentor(permissions.BasePermission):
|
||
"""
|
||
Проверка что пользователь - автор решения или ментор задания.
|
||
"""
|
||
|
||
message = 'У вас нет доступа к этому решению.'
|
||
|
||
def has_object_permission(self, request, view, obj):
|
||
"""Проверка доступа к объекту."""
|
||
# Для HomeworkSubmission
|
||
if hasattr(obj, 'student') and hasattr(obj, 'homework'):
|
||
# Студент может видеть свои решения
|
||
if obj.student == request.user:
|
||
return True
|
||
|
||
# Ментор может видеть решения своих заданий
|
||
if obj.homework.mentor == request.user:
|
||
return True
|
||
|
||
return False
|
||
|