diff --git a/handlers/player/inventory.py b/handlers/player/inventory.py index c973f79..83b23fc 100644 --- a/handlers/player/inventory.py +++ b/handlers/player/inventory.py @@ -17,8 +17,8 @@ class InventoryRequest(BaseModel): target_type: TargetType - target_id: int - campaign_id: int | None = None + target_id: int | UUID + campaign_id: int | UUID | None = None @classmethod @field_validator("target_type", mode="before") diff --git a/handlers/player/other_games_character.py b/handlers/player/other_games_character.py index 6aa90db..243b98a 100644 --- a/handlers/player/other_games_character.py +++ b/handlers/player/other_games_character.py @@ -9,6 +9,7 @@ from db.models import Campaign, Character, Participation, User from services.character_data import character_preview_getter +from states.inventory_view import InventoryView, TargetType from states.other_games_campaign import OtherGamesCampaign from states.other_games_character import OtherGamesCharacter @@ -37,11 +38,25 @@ async def on_campaign_info(c: CallbackQuery, b: Button, m: DialogManager): ) +async def on_inventory(c: CallbackQuery, b: Button, m: DialogManager): + character = await Character.get(id=m.start_data["character_id"]).prefetch_related("campaign") + campaign: Campaign = character.campaign + await m.start( + InventoryView.view, + data={ + "target_type": TargetType.CHARACTER, + "target_id": m.start_data["character_id"], + "campaign_id": campaign.id, + }, + ) + + router.include_router( Dialog( Window( DynamicMedia("avatar", when="avatar"), Format("{character_data_preview}", when="character_data_preview"), + Button(Const("Посмотреть инвентарь"), id="inventory", on_click=on_inventory), Button(Const("Информация о кампании"), id="campaign_info", on_click=on_campaign_info), Cancel(Const("Назад")), getter=character_data_getter,