Mercurial > libervia-web
comparison libervia/pages/lists/edit/page_meta.py @ 1387:a84383c659b4
lists: creation, invitation, item deletion:
this big patch includes:
- reorganisation of pages for consistency, discovery is now the main list page, and list
overview is now in `view` while item view is moved to `view_item`
- lists from lists of interest are now shown in discovery page
- list deletion from discory page
- list can now be created, using templates now available from backend
- invitation manager can now be used from list overview
- list item can now be deleted from `view_item`
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 20 Feb 2021 14:07:22 +0100 |
parents | e3e303a30a74 |
children | b46fec21ceb9 |
comparison
equal
deleted
inserted
replaced
1386:83be300d17e3 | 1387:a84383c659b4 |
---|---|
14 access = C.PAGES_ACCESS_PROFILE | 14 access = C.PAGES_ACCESS_PROFILE |
15 template = "list/edit.html" | 15 template = "list/edit.html" |
16 | 16 |
17 | 17 |
18 def parse_url(self, request): | 18 def parse_url(self, request): |
19 try: | 19 self.getPathArgs(request, ["service", "node", "item_id"], service="jid", node="@") |
20 item_id = self.nextPath(request) | 20 data = self.getRData(request) |
21 except IndexError: | 21 if data["item_id"] is None: |
22 log.warning(_("no list item id specified")) | 22 log.warning(_("no list item id specified")) |
23 self.pageError(request, C.HTTP_BAD_REQUEST) | 23 self.pageError(request, C.HTTP_BAD_REQUEST) |
24 | |
25 data = self.getRData(request) | |
26 data["list_item_id"] = item_id | |
27 | |
28 | 24 |
29 @defer.inlineCallbacks | 25 @defer.inlineCallbacks |
30 def prepare_render(self, request): | 26 def prepare_render(self, request): |
31 data = self.getRData(request) | 27 data = self.getRData(request) |
32 template_data = request.template_data | 28 template_data = request.template_data |
33 service, node, list_item_id = ( | 29 service, node, item_id = ( |
34 data.get("service", ""), | 30 data.get("service", ""), |
35 data.get("node", ""), | 31 data.get("node", ""), |
36 data["list_item_id"], | 32 data["item_id"], |
37 ) | 33 ) |
38 profile = self.getProfile(request) | 34 profile = self.getProfile(request) |
39 | 35 |
40 # we don't ignore "author" below to keep it when a list item is edited | 36 # we don't ignore "author" below to keep it when a list item is edited |
41 # by node owner/admin and "consistent publisher" is activated | 37 # by node owner/admin and "consistent publisher" is activated |
51 list_raw = yield self.host.bridgeCall( | 47 list_raw = yield self.host.bridgeCall( |
52 "listGet", | 48 "listGet", |
53 service.full() if service else "", | 49 service.full() if service else "", |
54 node, | 50 node, |
55 C.NO_LIMIT, | 51 C.NO_LIMIT, |
56 [list_item_id], | 52 [item_id], |
57 "", | 53 "", |
58 {}, | 54 {}, |
59 profile, | 55 profile, |
60 ) | 56 ) |
61 list_items, metadata = data_format.deserialise(list_raw, type_check=list) | 57 list_items, metadata = data_format.deserialise(list_raw, type_check=list) |
85 @defer.inlineCallbacks | 81 @defer.inlineCallbacks |
86 def on_data_post(self, request): | 82 def on_data_post(self, request): |
87 data = self.getRData(request) | 83 data = self.getRData(request) |
88 service = data["service"] | 84 service = data["service"] |
89 node = data["node"] | 85 node = data["node"] |
90 list_item_id = data["list_item_id"] | 86 item_id = data["item_id"] |
91 posted_data = self.getAllPostedData(request) | 87 posted_data = self.getAllPostedData(request) |
92 if not posted_data["title"] or not posted_data["body"]: | 88 if not posted_data["title"] or not posted_data["body"]: |
93 self.pageError(request, C.HTTP_BAD_REQUEST) | 89 self.pageError(request, C.HTTP_BAD_REQUEST) |
94 try: | 90 try: |
95 posted_data["labels"] = [l.strip() for l in posted_data["labels"][0].split(",")] | 91 posted_data["labels"] = [l.strip() for l in posted_data["labels"][0].split(",")] |
104 posted_data['body'] = ['<div xmlns="{ns}">{body}</div>'.format(ns=C.NS_XHTML, | 100 posted_data['body'] = ['<div xmlns="{ns}">{body}</div>'.format(ns=C.NS_XHTML, |
105 body=body)] | 101 body=body)] |
106 | 102 |
107 extra = {'update': True} | 103 extra = {'update': True} |
108 yield self.host.bridgeCall( | 104 yield self.host.bridgeCall( |
109 "listSet", service.full(), node, posted_data, "", list_item_id, | 105 "listSet", service.full(), node, posted_data, "", item_id, |
110 data_format.serialise(extra), profile | 106 data_format.serialise(extra), profile |
111 ) | 107 ) |
112 # we don't want to redirect to edit page on success, but to list overview | 108 # we don't want to redirect to edit page on success, but to list overview |
113 data["post_redirect_page"] = ( | 109 data["post_redirect_page"] = ( |
114 self.getPageByName("lists"), | 110 self.getPageByName("lists"), |