comparison libervia/pages/lists/view_item/_browser/__init__.py @ 1422:027f5059e1e2

pages (lists/view_item): browser part was not in the repository
author Goffi <goffi@goffi.org>
date Sat, 01 May 2021 19:05:05 +0200
parents
children 106bae41f5c8
comparison
equal deleted inserted replaced
1421:e065c8886b81 1422:027f5059e1e2
1 from browser import document, window, aio
2 from aio_bridge import 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.psNodeDelete(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.psItemRetract(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)))