Mercurial > libervia-web
annotate libervia/pages/lists/view_item/_browser/__init__.py @ 1433:1a5410981c45
pages: get last page by default with RSM:
When `max_items` is not used, Pubsub (and thus RSM) is actually returning results in
chronological order. As most of time we want latest items first, `getPubsubExtra` now set
`before` to get last page by default (the one with most recent items).
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 06 Jun 2021 19:40:07 +0200 |
parents | 027f5059e1e2 |
children | 106bae41f5c8 |
rev | line source |
---|---|
1422
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 from browser import document, window, aio |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 from aio_bridge import Bridge |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 import dialog |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
5 try: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 pubsub_service = window.pubsub_service |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
7 pubsub_node = window.pubsub_node |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 pubsub_item = window.pubsub_item |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 except AttributeError: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
10 can_delete = False |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 else: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
12 bridge = Bridge() |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 can_delete = True |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
14 |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
15 |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 async def on_delete(evt): |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 evt.stopPropagation() |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 confirmed = await dialog.Confirm( |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 "This item will be deleted, are you sure?", |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
20 ok_label="delete", |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
21 ok_color="danger", |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
22 ).ashow() |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 if confirmed: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 try: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 comments_service = window.comments_service |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 comments_node = window.comments_node |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
27 except AttributeError: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 pass |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 else: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 print(f"deleting comment node at [{comments_service}] {comments_node!r}") |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
31 try: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
32 await bridge.psNodeDelete(comments_service, comments_node) |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
33 except Exception as e: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
34 dialog.notification.show( |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
35 f"Can't delete comment node: {e}", |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
36 level="error" |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
37 ) |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
38 |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 print(f"deleting list item {pubsub_item!r} at [{pubsub_service}] {pubsub_node!r}") |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
40 try: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
41 await bridge.psItemRetract(pubsub_service, pubsub_node, pubsub_item, True) |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
42 except Exception as e: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
43 dialog.notification.show( |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
44 f"Can't delete list item: {e}", |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
45 level="error" |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
46 ) |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
47 else: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
48 # FIXME: Q&D way to get list view URL, need to have a proper method (would |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
49 # be nice to have a way to reference pages by name from browser) |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
50 list_url = '/'.join(window.location.pathname.split('/')[:-1]).replace( |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
51 'view_item', 'view') |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
52 window.location.replace(list_url) |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
53 |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
54 |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
55 if can_delete: |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
56 for elt in document.select('.action_delete'): |
027f5059e1e2
pages (lists/view_item): browser part was not in the repository
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
57 elt.bind("click", lambda evt: aio.run(on_delete(evt))) |