Tishka17 / aiogram_dialog

GUI framework on top of aiogram
https://aiogram-dialog.readthedocs.io
Apache License 2.0
664 stars 103 forks source link

Jinja: 'ManagerImpl' object has no attribute 'data' #202

Closed const-tmp closed 1 year ago

const-tmp commented 1 year ago

2.0.0b11 macOS 12.3.1 python 3.10.7

code sample:

r = Router()

async def get_data(**kwargs):
    user_service: UserService = kwargs.get('user_service')
    ledger_service: LedgerService = kwargs.get('ledger_service')
    tg_user: Optional[User] = User.get_current()
    user = await user_service.get_user_by_tg_id(tg_user.id)
    client = await ledger_service.get_client(user.id)
    return {"client": client}

d = Dialog(
    Window(
        Jinja(
            '''
{% if not client.accounts %}empty{% endif %}'''
            ),
        Button(Const("Empty button"), id="nothing"),
        state=WalletSG.main,
        getter=get_data,
    )
)

@r.message(F.text == buttons.wallet)
async def wallet_start(_: Message, dialog_manager: DialogManager):
    await dialog_manager.start(WalletSG.main, mode=StartMode.RESET_STACK)

traceback:

22.10.22 11:40:43   [ ERROR ]   [ aiogram.event:299 ]   Cause exception while process update id=82873555 by bot id=5406635192
KeyError: 'exception'
Traceback (most recent call last):
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/middlewares/error.py", line 25, in __call__
    return await handler(event, data)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/middlewares/user_context.py", line 23, in __call__
    return await handler(event, data)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/fsm/middleware.py", line 34, in __call__
    return await handler(event, data)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/event/telegram.py", line 111, in trigger
    return await wrapped_inner(event, kwargs)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/event/handler.py", line 42, in call
    return await wrapped()
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py", line 260, in _listen_update
    return await self.propagate_event(update_type=update_type, event=event, **kwargs)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/router.py", line 115, in propagate_event
    return await observer.wrap_outer_middleware(_wrapped, event=event, data=kwargs)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/context/intent_middleware.py", line 117, in process_message
    return await handler(event, data)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/router.py", line 111, in _wrapped
    return await self._propagate_event(
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/router.py", line 131, in _propagate_event
    response = await router.propagate_event(update_type=update_type, event=event, **kwargs)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/router.py", line 115, in propagate_event
    return await observer.wrap_outer_middleware(_wrapped, event=event, data=kwargs)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/router.py", line 111, in _wrapped
    return await self._propagate_event(
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/router.py", line 124, in _propagate_event
    response = await observer.trigger(event, **kwargs)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/event/telegram.py", line 111, in trigger
    return await wrapped_inner(event, kwargs)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/manager/manager_middleware.py", line 33, in __call__
    return await handler(event, data)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/context/intent_middleware.py", line 162, in context_saver_middleware
    result = await handler(event, data)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram/dispatcher/event/handler.py", line 42, in call
    return await wrapped()
  File "/Users/hightime/code/project/kk/wallet/wallet.py", line 46, in wallet_start
    await dialog_manager.start(WalletSG.main, mode=StartMode.RESET_STACK)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/manager/manager.py", line 183, in start
    await self._start_normal(state, data)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/manager/manager.py", line 227, in _start_normal
    await self.show()
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/manager/manager.py", line 261, in show
    new_message = await self.dialog().render(self)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/dialog.py", line 121, in render
    new_message = await window.render(self, manager)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/window.py", line 96, in render
    text=await self.render_text(current_data, manager),
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/window.py", line 51, in render_text
    return await self.text.render_text(data, manager)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/widgets/text/base.py", line 25, in render_text
    return await self._render_text(data, manager)
  File "/Users/hightime/code/project/venv/lib/python3.10/site-packages/aiogram_dialog/widgets/text/jinja.py", line 33, in _render_text
    bot: Bot = manager.data["bot"]
AttributeError: 'ManagerImpl' object has no attribute 'data'
Tishka17 commented 1 year ago

fixed in dev

Tishka17 commented 1 year ago

Release 2.0.0b12