Skip to content

Commit 4ddaeae

Browse files
committed
demo delete dialog
1 parent 7d8a84a commit 4ddaeae

File tree

3 files changed

+51
-2
lines changed

3 files changed

+51
-2
lines changed

app/Tuttle.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
Markdown,
2323
FilePicker,
2424
FilePickerResultEvent,
25+
SnackBar,
2526
)
2627
from flet import icons, colors, dropdown
2728

@@ -51,6 +52,13 @@ def __init__(
5152
self.con = controller
5253
self.page = page
5354

55+
def snackbar_message(self, message):
56+
self.page.snack_bar = SnackBar(
57+
content=Text(message),
58+
)
59+
self.page.snack_bar.open = True
60+
self.page.update()
61+
5462

5563
class AppPage(UserControl):
5664
def __init__(
@@ -193,7 +201,7 @@ def update_content(self):
193201
for project in projects:
194202
self.main_column.controls.append(
195203
# TODO: replace with view class
196-
views.make_project_view(project)
204+
views.make_project_view(project, self)
197205
)
198206
self.update()
199207

app/views.py

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from typing import Optional, List, Tuple
22
import datetime
33

4+
from loguru import logger
5+
46
from flet import (
57
UserControl,
68
Card,
@@ -13,6 +15,8 @@
1315
Text,
1416
PopupMenuButton,
1517
PopupMenuItem,
18+
AlertDialog,
19+
TextButton,
1620
)
1721
from flet import icons
1822

@@ -246,7 +250,42 @@ def make_contract_view(contract: Contract):
246250
)
247251

248252

249-
def make_project_view(project: Project):
253+
def make_project_view(
254+
project: Project,
255+
app_page: "AppPage",
256+
):
257+
def on_confirm_delete_project(event):
258+
app_page.app.con.delete(project)
259+
app_page.app.page.dialog.open = False
260+
app_page.app.page.update()
261+
app_page.update_content()
262+
app_page.app.snackbar_message(f"Project {project.title} deleted")
263+
264+
def on_cancel_delete_project(event):
265+
app_page.app.page.dialog.open = False
266+
app_page.app.page.update()
267+
app_page.update_content()
268+
269+
def on_click_delete_project(event):
270+
delete_project_dialog = AlertDialog(
271+
modal=True,
272+
title=Text("Please confirm"),
273+
content=Text(f"Do you really want to delete the project {project.title}?"),
274+
actions=[
275+
TextButton("Delete", on_click=on_confirm_delete_project),
276+
TextButton("Cancel", on_click=on_cancel_delete_project),
277+
],
278+
actions_alignment="end",
279+
on_dismiss=lambda e: print("Modal dialog dismissed!"),
280+
)
281+
282+
app_page.app.page.dialog = delete_project_dialog
283+
delete_project_dialog.open = True
284+
app_page.app.page.update()
285+
286+
# app_page.app.con.delete(project)
287+
# app_page.update_content()
288+
250289
return Card(
251290
content=Container(
252291
content=Column(
@@ -265,6 +304,7 @@ def make_project_view(project: Project):
265304
PopupMenuItem(
266305
icon=icons.DELETE,
267306
text="Delete",
307+
on_click=on_click_delete_project,
268308
),
269309
],
270310
),

tuttle/controller.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ def delete(self, entity):
8787
with self.get_session() as session:
8888
session.delete(entity)
8989
session.commit()
90+
logger.info(f"deleted {entity}")
9091

9192
def store_all(self, entities):
9293
"""Store a collection of entities in the database."""

0 commit comments

Comments
 (0)