mirror of
https://github.com/koloideal/DutyLog.git
synced 2026-08-08 10:01:14 +03:00
add transaction deletion for creator: delete button in detail window, confirmation window, delete_transaction repo method
This commit is contained in:
@@ -85,6 +85,7 @@ from dutylog.application.bot.creator_dialogs.admins_management import (
|
|||||||
from dutylog.application.bot.creator_dialogs.transactions_history import (
|
from dutylog.application.bot.creator_dialogs.transactions_history import (
|
||||||
transactions_history_window,
|
transactions_history_window,
|
||||||
transactions_history_detail_window,
|
transactions_history_detail_window,
|
||||||
|
transactions_history_delete_confirm_window,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -151,4 +152,5 @@ admin_menu_dialog = Dialog(
|
|||||||
add_admin_confirm_window,
|
add_admin_confirm_window,
|
||||||
transactions_history_window,
|
transactions_history_window,
|
||||||
transactions_history_detail_window,
|
transactions_history_detail_window,
|
||||||
|
transactions_history_delete_confirm_window,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
from dutylog.application.bot.creator_dialogs.transactions_history import (
|
from dutylog.application.bot.creator_dialogs.transactions_history import (
|
||||||
transactions_history_window,
|
transactions_history_window,
|
||||||
transactions_history_detail_window,
|
transactions_history_detail_window,
|
||||||
|
transactions_history_delete_confirm_window,
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = ["transactions_history_window", "transactions_history_detail_window"]
|
__all__ = [
|
||||||
|
"transactions_history_window",
|
||||||
|
"transactions_history_detail_window",
|
||||||
|
"transactions_history_delete_confirm_window",
|
||||||
|
]
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
from aiogram import Bot
|
from aiogram import Bot
|
||||||
from aiogram.enums import ContentType
|
from aiogram.enums import ContentType
|
||||||
from aiogram.types import CallbackQuery, InputMediaPhoto
|
from aiogram.types import CallbackQuery, InputMediaPhoto
|
||||||
from aiogram_dialog import Window
|
from aiogram_dialog import Window, DialogManager
|
||||||
from aiogram_dialog.widgets.text import Format, Const
|
from aiogram_dialog.widgets.text import Format, Const
|
||||||
from aiogram_dialog.widgets.kbd import SwitchTo, ScrollingGroup, Select, Button
|
from aiogram_dialog.widgets.kbd import SwitchTo, ScrollingGroup, Select, Button, Row
|
||||||
from aiogram_dialog.widgets.media import DynamicMedia
|
from aiogram_dialog.widgets.media import DynamicMedia
|
||||||
from aiogram_dialog.api.entities.media import MediaAttachment, MediaId
|
from aiogram_dialog.api.entities.media import MediaAttachment, MediaId
|
||||||
from magic_filter import F
|
from magic_filter import F
|
||||||
@@ -112,6 +112,29 @@ async def on_creator_transaction_selected(
|
|||||||
await dialog_manager.switch_to(AdminMenuSG.transactions_history_detail)
|
await dialog_manager.switch_to(AdminMenuSG.transactions_history_detail)
|
||||||
|
|
||||||
|
|
||||||
|
@inject
|
||||||
|
async def on_delete_transaction_click(
|
||||||
|
callback: CallbackQuery,
|
||||||
|
button: Button,
|
||||||
|
dialog_manager: DialogManager,
|
||||||
|
):
|
||||||
|
await dialog_manager.switch_to(AdminMenuSG.transactions_history_delete_confirm)
|
||||||
|
|
||||||
|
|
||||||
|
@inject
|
||||||
|
async def on_delete_transaction_confirm(
|
||||||
|
callback: CallbackQuery,
|
||||||
|
button: Button,
|
||||||
|
dialog_manager: DialogManager,
|
||||||
|
transactions_repository: FromDishka[HoursTransactionsRepository],
|
||||||
|
):
|
||||||
|
tx_id = dialog_manager.dialog_data.get("selected_transaction_id")
|
||||||
|
if tx_id:
|
||||||
|
await transactions_repository.delete_transaction(int(tx_id))
|
||||||
|
await callback.answer("✅ Транзакция удалена", show_alert=True)
|
||||||
|
await dialog_manager.switch_to(AdminMenuSG.transactions_history)
|
||||||
|
|
||||||
|
|
||||||
@inject
|
@inject
|
||||||
async def get_transaction_detail_data(
|
async def get_transaction_detail_data(
|
||||||
dialog_manager,
|
dialog_manager,
|
||||||
@@ -209,6 +232,13 @@ transactions_history_window = Window(
|
|||||||
transactions_history_detail_window = Window(
|
transactions_history_detail_window = Window(
|
||||||
DynamicMedia("photo_media"),
|
DynamicMedia("photo_media"),
|
||||||
Format("{detail_content}", when=F["detail_content"]),
|
Format("{detail_content}", when=F["detail_content"]),
|
||||||
|
Row(
|
||||||
|
Button(
|
||||||
|
Const("🗑 Удалить"),
|
||||||
|
id="delete_transaction_btn",
|
||||||
|
on_click=on_delete_transaction_click,
|
||||||
|
),
|
||||||
|
),
|
||||||
SwitchTo(
|
SwitchTo(
|
||||||
Const("◀️ К списку"),
|
Const("◀️ К списку"),
|
||||||
id="back_to_transactions_from_detail",
|
id="back_to_transactions_from_detail",
|
||||||
@@ -217,3 +247,20 @@ transactions_history_detail_window = Window(
|
|||||||
state=AdminMenuSG.transactions_history_detail,
|
state=AdminMenuSG.transactions_history_detail,
|
||||||
getter=get_transaction_detail_data,
|
getter=get_transaction_detail_data,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
transactions_history_delete_confirm_window = Window(
|
||||||
|
Const("<blockquote>🗑 <b>Удаление транзакции</b></blockquote>\n\n⚠️ Вы уверены, что хотите удалить эту транзакцию?\nЭто действие нельзя отменить."),
|
||||||
|
Row(
|
||||||
|
Button(
|
||||||
|
Const("✅ Да, удалить"),
|
||||||
|
id="confirm_delete_transaction_btn",
|
||||||
|
on_click=on_delete_transaction_confirm,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SwitchTo(
|
||||||
|
Const("◀️ Назад"),
|
||||||
|
id="back_to_transaction_detail",
|
||||||
|
state=AdminMenuSG.transactions_history_detail,
|
||||||
|
),
|
||||||
|
state=AdminMenuSG.transactions_history_delete_confirm,
|
||||||
|
)
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ class AdminMenuSG(StatesGroup):
|
|||||||
add_admin_confirm = State()
|
add_admin_confirm = State()
|
||||||
transactions_history = State()
|
transactions_history = State()
|
||||||
transactions_history_detail = State()
|
transactions_history_detail = State()
|
||||||
|
transactions_history_delete_confirm = State()
|
||||||
|
|
||||||
|
|
||||||
class CreatorMenuSG(StatesGroup):
|
class CreatorMenuSG(StatesGroup):
|
||||||
|
|||||||
@@ -144,6 +144,9 @@ class HoursTransactionsRepository:
|
|||||||
) -> HoursTransaction | None:
|
) -> HoursTransaction | None:
|
||||||
return await self.transactions_dao.get_by_id(transaction_id)
|
return await self.transactions_dao.get_by_id(transaction_id)
|
||||||
|
|
||||||
|
async def delete_transaction(self, transaction_id: int) -> None:
|
||||||
|
await self.transactions_dao.delete(transaction_id)
|
||||||
|
|
||||||
async def get_by_period(self, start_date, end_date) -> list[HoursTransaction]:
|
async def get_by_period(self, start_date, end_date) -> list[HoursTransaction]:
|
||||||
return await self.transactions_dao.get_by_period(start_date, end_date)
|
return await self.transactions_dao.get_by_period(start_date, end_date)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user