from rest_framework.permissions import BasePermission
from rest_framework.permissions import SAFE_METHODS


class IsStaffOrReadOnly(BasePermission):
    def has_permission(self, request, view):
        return request.method in SAFE_METHODS or\
               (request.user.is_authenticated and request.user.profile.role == 'Staff')


class IsStaffOrReadOnlyForAuthenticated(BasePermission):
    def has_permission(self, request, view):
        return request.user.is_authenticated and\
               (request.method in SAFE_METHODS or request.user.profile.role == 'Staff')


class IsStaffUser(BasePermission):
    def has_permission(self, request, view):
        return request.user.is_authenticated and request.user.profile.role == 'Staff'


class IsSafeOrPatch(BasePermission):
    def has_permission(self, request, view):
        return request.method in SAFE_METHODS or request.method == 'PATCH'


class IsStaffOrStudent(BasePermission):
    def has_permission(self, request, view):
        return request.user.is_authenticated and\
               (request.user.profile.role == 'Staff' or request.user.profile.role == 'Student')