def METHOD_NAME(obj):
    if (api.content.get_state(obj) != 'published'):
        return True  # needs to be True for private self as well as parents
    parent = aq_parent(obj)
    while not ISiteRoot.providedBy(parent):
        try:
            parent_brain = get_brain(parent.UID())
            try:
                if parent_brain.METHOD_NAME:
                    return True
            except AttributeError:
                if api.content.get_state(parent) != 'published':
                    return True
        except Exception:
            pass  # to be extra secure, could return True here. Better to be fault tolerant for now.
        parent = aq_parent(parent)
    return False