def METHOD_NAME(self, account, application):
    """
    Is the given account allowed to edit the update request application
    :param account: the account doing the action
    :param application: the application the account wants to edit
    :return:
    """
    # first validate the incoming arguments to ensure that we've got the right thing
    argvalidate("can_edit_update_request", [
        {"arg": account, "instance": models.Account, "allow_none" : False, "arg_name" : "account"},
        {"arg": application, "instance": models.Suggestion, "allow_none" : False, "arg_name" : "application"},
    ], exceptions.ArgumentException)
    no_auth_reason = exceptions.AuthoriseException.WRONG_ROLE
    # if this is the super user, they have all rights
    if account.is_super:
        return True
    if account.has_role("publisher"):
        if account.id != application.owner:
            no_auth_reason = exceptions.AuthoriseException.NOT_OWNER
        elif application.application_status not in [
            constants.APPLICATION_STATUS_PENDING,
            constants.APPLICATION_STATUS_UPDATE_REQUEST,
            constants.APPLICATION_STATUS_REVISIONS_REQUIRED
        ]:
            no_auth_reason = exceptions.AuthoriseException.WRONG_STATUS
        else:
            return True
    if account.has_role("edit_suggestion"):
        # user must be either the "admin.editor" of the suggestion, or the editor of the "admin.editor_group"
        # is the user the currently assigned editor of the suggestion?
        if application.editor == account.id:
            return True
        # now check whether the user is the editor of the editor group
        if not application.editor_group:
            return False
        eg = models.EditorGroup.pull_by_key("name", application.editor_group)
        if eg is not None and eg.editor == account.id:
            return True
    raise exceptions.AuthoriseException(reason=no_auth_reason)