from rest_framework import permissions


class IsAuthor(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        return obj.user == request.user


class IsApplyStaffUser(permissions.BasePermission):
    """
    Custom permission to only allow OTF Staff or higher
    """

    def has_permission(self, request, view):
        return request.user.is_apply_staff

    def has_object_permission(self, request, view, obj):
        return request.user.is_apply_staff


def is_user_has_access_to_view_submission(user, submission):
    has_access = False

    if not user.is_authenticated:
        pass

    elif user.is_apply_staff or submission.user == user or user.is_reviewer:
        has_access = True

    elif user.is_partner and submission.partners.filter(pk=user.pk).exists():
        has_access = True

    elif user.is_community_reviewer and submission.community_review:
        has_access = True

    return has_access