def METHOD_NAME(self, request, org_id, format=None):
    """Create a file draft if the user has read-write permission to the origin file
    """
    # argument check
    repo_id = request.data.get('repo_id', '')
    if not repo_id:
        error_msg = 'repo_id invalid.'
        return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
    file_path = request.data.get('file_path', '')
    if not file_path:
        error_msg = 'file_path invalid.'
        return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
    # resource check
    repo = seafile_api.get_repo(repo_id)
    if not repo:
        error_msg = 'Library %s not found.' % repo_id
        return api_error(status.HTTP_404_NOT_FOUND, error_msg)
    file_id = seafile_api.get_file_id_by_path(repo_id, file_path)
    if not file_id:
        error_msg = 'File %s not found.' % file_path
        return api_error(status.HTTP_404_NOT_FOUND, error_msg)
    # permission check
    perm = check_folder_permission(request, repo_id, file_path)
    if perm != PERMISSION_READ_WRITE:
        error_msg = 'Permission denied.'
        return api_error(status.HTTP_403_FORBIDDEN, error_msg)
    username = request.user.username
    # create drafts dir if does not exist
    draft_dir_id = seafile_api.get_dir_id_by_path(repo_id, '/Drafts')
    if draft_dir_id is None:
        seafile_api.post_dir(repo_id, '/', 'Drafts', username)
    # create draft
    try:
        d = Draft.objects.add(username, repo, file_path, file_id=file_id)
        return Response(d.to_dict())
    except DraftFileExist:
        return api_error(status.HTTP_409_CONFLICT, 'Draft already exists.')
    except Exception as e:
        logger.error(e)
        error_msg = 'Internal Server Error'
        return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)