Ejemplo n.º 1
0
async def area_image_handler(m: types.Message, dialog: Dialog, manager: DialogManager):
    city_select: kbd.Select = manager.dialog().find("city_select")
    city_name = city_select.get_checked(manager)

    if not m.photo:
        geojson_path = get_city_gjs_path(city_name)
        manager.context.set_data("geojson", geojson_path)
        await m.reply("There's no photo in your message.\nSkipping.")
        await dialog.next(manager)
        return

    area_img = BytesIO()
    await m.photo[-1].download(area_img, seek=True)

    try:
        geojson_path, selected_image_bytes = await run_blocking(area_to_geojson, city_name, area_img)
        manager.context.set_data("is_area_specified", True)
        await m.reply_photo(types.InputFile(selected_image_bytes), caption="Defined area")
    except ValueError as e:
        logger.exception(e)
        geojson_path = get_city_gjs_path(city_name)
        manager.context.set_data("is_area_specified", False)
        await m.reply("Can't define area, error occured. Using full map")

    manager.context.set_data("geojson", geojson_path)
    await dialog.next(manager)
Ejemplo n.º 2
0
async def set_city_geojson(c: types.CallbackQuery, button: kbd.Button, manager: DialogManager):
    manager.context.set_data("is_area_specified", False)
    city_select: kbd.Select = manager.dialog().find("city_select")
    city_name = city_select.get_checked(manager)
    geojson_path = get_city_gjs_path(city_name)
    manager.context.set_data("geojson", geojson_path)
    await manager.dialog().next(manager)
Ejemplo n.º 3
0
async def get_data(dialog_manager: DialogManager, **kwargs):
    age_select: Select = dialog_manager.dialog().find("w_age")
    age = age_select.get_checked(dialog_manager)
    return {
        "name": dialog_manager.context.data("name", ""),
        "age": age,
        "can_smoke": age in ("18-25", "25-40", "40+"),
    }