Mercurial > libervia-web
annotate libervia/pages/photos/_browser/__init__.py @ 1301:ff44f822bfdd
browser (photos): albums can now be deleted:
when albums are deleted, there are removed from list of interest, and all photos inside
are also deleted.
Doesn't check permissions before deletion yet, so the button is always present even when it
may fail.
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 19 Jun 2020 16:47:51 +0200 |
parents | |
children | dbd573b0bc9c |
rev | line source |
---|---|
1301
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 from browser import window, bind, DOMNode |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 from javascript import JSON |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 from bridge import Bridge |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 import dialog |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
5 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 bridge = Bridge() |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
7 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 def album_delete_cb(item_elt, item): |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
10 print(f"deleted {item['name']}") |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
12 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 def album_delete_eb(failure, item_elt, item): |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
14 # TODO: cleaner error notification |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
15 window.alert(f"error while deleting {item['name']}: failure") |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 def interest_retract_cb(item_elt, item): |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 print(f"{item['name']} removed successfuly from list of interests") |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
20 item_elt.classList.add("state_deleted") |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
21 item_elt.bind("transitionend", lambda evt: item_elt.remove()) |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
22 bridge.fileSharingDelete( |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 item['service'], |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 item.get('path', ''), |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 item.get('files_namespace', ''), |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 callback=lambda __: album_delete_cb(item_elt, item), |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
27 errback=lambda failure: album_delete_eb(failure, item_elt, item), |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 ) |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
31 def interest_retract_eb(failure_, item_elt, item): |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
32 # TODO: cleaner error notification |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
33 window.alert(f"Can't delete album {item['name']}: {failure_['message']}") |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
34 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
35 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
36 def delete_ok(evt, notif_elt, item_elt, item): |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
37 bridge.interestRetract( |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
38 "", item['id'], |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 callback=lambda: interest_retract_cb(item_elt, item), |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
40 errback=lambda failure:interest_retract_eb(failure, item_elt, item)) |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
41 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
42 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
43 def delete_cancel(evt, notif_elt, item_elt, item): |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
44 notif_elt.remove() |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
45 item_elt.classList.remove("selected_for_deletion") |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
46 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
47 |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
48 @bind(".action_delete", "click") |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
49 def on_delete(evt): |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
50 evt.stopPropagation() |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
51 target = evt.currentTarget |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
52 item_elt = DOMNode(target.elt.closest('.item')) |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
53 item_elt.classList.add("selected_for_deletion") |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
54 item = JSON.parse(item_elt.dataset.item) |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
55 dialog.Confirm( |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
56 f"album {item['name']!r} will be deleted (inluding all its photos), " |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
57 f"are you sure?", |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
58 ok_label="delete", |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
59 ).show( |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
60 ok_cb=lambda evt, notif_elt: delete_ok(evt, notif_elt, item_elt, item), |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
61 cancel_cb=lambda evt, notif_elt: delete_cancel(evt, notif_elt, item_elt, item), |
ff44f822bfdd
browser (photos): albums can now be deleted:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
62 ) |