questionnaire.permissions 源代码
from rest_framework import permissions
__all__ = [
'IsTextOwnerOrAsker',
'IsSheetOwnerOrAsker',
'IsSurveyOwnerOrReadOnly',
'IsQuestionOwnerOrReadOnly',
'IsChoiceOwnerOrReadOnly',
]
def check_owner_or_asker(request, owner, asker):
return request.user.is_staff or request.user == owner or request.user == asker
[文档]
class IsTextOwnerOrAsker(permissions.BasePermission):
[文档]
def has_object_permission(self, request, view, obj):
owner = obj.answersheet.creator
asker = obj.question.survey.creator
return check_owner_or_asker(request, owner, asker)
[文档]
class IsSheetOwnerOrAsker(permissions.BasePermission):
[文档]
def has_object_permission(self, request, view, obj):
owner = obj.creator
asker = obj.survey.creator
return check_owner_or_asker(request, owner, asker)
def check_owner_or_read_only(request, owner):
return (request.user.is_staff
or request.method in permissions.SAFE_METHODS
or request.user == owner)
[文档]
class IsSurveyOwnerOrReadOnly(permissions.BasePermission):
[文档]
def has_object_permission(self, request, view, obj):
owner = obj.creator
return check_owner_or_read_only(request, owner)
[文档]
class IsQuestionOwnerOrReadOnly(permissions.BasePermission):
[文档]
def has_object_permission(self, request, view, obj):
owner = obj.survey.creator
return check_owner_or_read_only(request, owner)
[文档]
class IsChoiceOwnerOrReadOnly(permissions.BasePermission):
[文档]
def has_object_permission(self, request, view, obj):
owner = obj.question.survey.creator
return check_owner_or_read_only(request, owner)