Mercurial > libervia-web
comparison libervia/web/pages/lists/view_item/_browser/__init__.py @ 1518:eb00d593801d
refactoring: rename `libervia` to `libervia.web` + update imports following backend changes
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 02 Jun 2023 16:49:28 +0200 |
parents | libervia/pages/lists/view_item/_browser/__init__.py@5ea06e8b06ed |
children |
comparison
equal
deleted
inserted
replaced
1517:b8ed9726525b | 1518:eb00d593801d |
---|---|
1 from browser import document, window, aio | |
2 from bridge import AsyncBridge as Bridge | |
3 import dialog | |
4 | |
5 try: | |
6 pubsub_service = window.pubsub_service | |
7 pubsub_node = window.pubsub_node | |
8 pubsub_item = window.pubsub_item | |
9 except AttributeError: | |
10 can_delete = False | |
11 else: | |
12 bridge = Bridge() | |
13 can_delete = True | |
14 | |
15 | |
16 async def on_delete(evt): | |
17 evt.stopPropagation() | |
18 confirmed = await dialog.Confirm( | |
19 "This item will be deleted, are you sure?", | |
20 ok_label="delete", | |
21 ok_color="danger", | |
22 ).ashow() | |
23 if confirmed: | |
24 try: | |
25 comments_service = window.comments_service | |
26 comments_node = window.comments_node | |
27 except AttributeError: | |
28 pass | |
29 else: | |
30 print(f"deleting comment node at [{comments_service}] {comments_node!r}") | |
31 try: | |
32 await bridge.ps_node_delete(comments_service, comments_node) | |
33 except Exception as e: | |
34 dialog.notification.show( | |
35 f"Can't delete comment node: {e}", | |
36 level="error" | |
37 ) | |
38 | |
39 print(f"deleting list item {pubsub_item!r} at [{pubsub_service}] {pubsub_node!r}") | |
40 try: | |
41 await bridge.ps_item_retract(pubsub_service, pubsub_node, pubsub_item, True) | |
42 except Exception as e: | |
43 dialog.notification.show( | |
44 f"Can't delete list item: {e}", | |
45 level="error" | |
46 ) | |
47 else: | |
48 # FIXME: Q&D way to get list view URL, need to have a proper method (would | |
49 # be nice to have a way to reference pages by name from browser) | |
50 list_url = '/'.join(window.location.pathname.split('/')[:-1]).replace( | |
51 'view_item', 'view') | |
52 window.location.replace(list_url) | |
53 | |
54 | |
55 if can_delete: | |
56 for elt in document.select('.action_delete'): | |
57 elt.bind("click", lambda evt: aio.run(on_delete(evt))) |