def get_default_groups(log, client, room, user, zapi):
    try:
        groups = mbl.get_env(user, "zabbix_groups")
        if groups != None:
            return groups

        groups = [59]  # по-умолчанию - ВЭФ ИБП
        zabbix_login = mbl.get_env(user, "zabbix_login")
        if zabbix_login != None:
            groups = zabbix_get_hosts_groups_by_user(log, zapi, zabbix_login)
            if groups == None:
                log.error("error zabbix_get_hosts_groups_by_user('%s')" %
                          zabbix_login)
                mbl.bot_fault(log, client, room)
                mbl.go_to_main_menu(log, logic, client, room, user)
                return None
        else:
            if mba.send_notice(
                    log, client, room,
                    u"По умолчанию формирую статистику для группы ВЭФ ИБП (установите zabbix_login для индивидуальных настроек в главном меню)"
            ) == False:
                log.error("send_notice() to user %s" % user)
                return None
        mbl.set_env(user, "zabbix_groups", groups)
        return groups
    except Exception as e:
        log.error(get_exception_traceback_descr(e))
        return False
def zabbix_update_hosts_groups_of_user(log, user):
    try:
        groups = [59]  # по-умолчанию - ВЭФ ИБП
        zabbix_login = mbl.get_env(user, "zabbix_login")
        if zabbix_login != None:
            zapi = zabbix_init(log)
            if zapi == None:
                log.error("zabbix_init()")
                return False
            groups = zabbix_get_hosts_groups_by_user(log, zapi, zabbix_login)
            if groups == None:
                log.error("error zabbix_get_hosts_groups_by_user('%s')" %
                          zabbix_login)
                return False
        mbl.set_env(user, "zabbix_groups", groups)
        return True
    except Exception as e:
        log.error(get_exception_traceback_descr(e))
        return False
def rm_pre_select_zayavka(log, memmory, logic, client, room, user, data,
                          message, cmd):
    log.debug("rm_pre_select_zayavka()")
    # сохраняем раздел для возможного повторного вопроса о номере заявки:
    state = mbl.get_state(log, user)
    if state == None:
        log.error("mbl.get_state(log,%s)" % user)
        return False
    log.debug("1: state=")
    log.debug(state)
    log.info("save cur_state to return_to_zayavka_enter")
    mbl.set_env(user, "return_to_zayavka_enter", state["answer"])
    return True

    if mba.send_notice(
            log, client, room,
            u"Перехожу в меню ввода номера заявки. Вы можете выбрать другой номер заявки или 0, для выхода в главное меню."
    ) == False:
        log.error("send_notice() to user %s" % user)
        return False
    return True
def rm_show_descr_images(log, logic, client, room, user):
    log.info("rm_show_descr_images()")
    rm_need_zazemlenie = mbl.get_env(user, "rm_need_zazemlenie")
    if rm_need_zazemlenie == None:
        log.debug("error get_env rm_need_zazemlenie - return to main menu")
        mbl.bot_fault(log, client, room)
        mbl.go_to_main_menu(log, logic, client, room, user)
        return False
    rm_need_ograzhdenie = mbl.get_env(user, "rm_need_ograzhdenie")
    if rm_need_ograzhdenie == None:
        log.debug("error get_env rm_need_ograzhdenie - return to main menu")
        mbl.bot_fault(log, client, room)
        mbl.go_to_main_menu(log, logic, client, room, user)
        return False
    if rm_need_zazemlenie == "need":
        if mba.send_html(
                log, client, room,
                u"Данная заявка требует установку <strong>заземлений</strong>. Отправьте мне фотографии <strong>заземлений</strong>:"
        ) == False:
            log.error("send_html() to user")
        mbl.set_env(user, "rm_need_zazemlenie", "wait_images")
        mbl.set_env(user, "rm_current_need_photo_type", "rm_need_zazemlenie")
        return True
    elif rm_need_ograzhdenie == "need":
        if mba.send_html(
                log, client, room,
                u"Данная заявка требует установку <strong>ограждений</strong>. Отправьте мне фотографии <strong>ограждений</strong>:"
        ) == False:
            log.error("send_html() to user")
        mbl.set_env(user, "rm_need_ograzhdenie", "wait_images")
        mbl.set_env(user, "rm_current_need_photo_type", "rm_need_ograzhdenie")
        return True
    else:
        mbl.set_env(user, "rm_current_need_photo_type", "end")
        log.info("rm_show_descr_images() end photo receive")
        return True
    return True
def show_zayavka_detail(log, memmory, logic, client, room, user, data, message,
                        cmd):
    log.debug("show_zayavka_detail()")
    # сохраняем раздел для возможного повторного вопроса о номере заявки:
    state = mbl.get_state(log, user)
    if state == None:
        log.error("mbl.get_state(log,%s)" % user)
        return False
    log.debug("1: state=")
    log.debug(state)
    log.info("save cur_state to return_to_zayavka_enter")
    mbl.set_env(user, "return_to_zayavka_enter", state)

    # Получаем номер заявки:
    try:
        zayavka_num = int(mbl.get_env(user, "rm_zayavka_num"))
    except:
        log.warning(u"user not enter num zayavka: user send: '%s'" %
                    (mbl.get_env(user, "rm_zayavka_num")))
        if mba.send_message(
                log, client, room,
                u"Не смог распознать номер заявки. Пожалуйста, введите номер заявки числом"
        ) == False:
            log.error("send_message() to user")
        return False
    text = "<strong>Детали заявки с номером %d:</strong>" % zayavka_num
    #TODO
    # TODO получить данные из АПИ:
    # Выставляем переменные:
    mbl.set_env(user, "rm_need_zazemlenie", "need")  # или not_need
    mbl.set_env(user, "rm_need_ograzhdenie", "need")
    text += "<p>FIXME</p>"

    # выводим вопрос:
    text += "<p>Если всё верно - введите <strong>1</strong>,\nесли нет - введите <strong>2</strong>.</p>"

    if mba.send_html(log, client, room, text) == False:
        log.error("send_html() to user %s" % user)
        return False
    mbl.set_state(user, data["answer"])
    return True