Mercurial > libervia-web
annotate libervia/pages/blog/view/page_meta.py @ 1466:cff720e26089
pages (blog/view): activate pagination when a single item is shown:
`previous_page_url` and `next_page_url` are set when `item_id` is used. For now, they are
both activated even if there is no item before or after, as it would request to make extra
request to check it. This may be improved in 0.9 by using internal cache.
fix 399
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 30 Sep 2021 17:04:22 +0200 |
parents | 6fc41f000d24 |
children | 10ccad665d57 |
rev | line source |
---|---|
1216 | 1 #!/usr/bin/env python3 |
1239 | 2 |
1229
acec8e9185db
pages: replaced deprecated `cgi.escape` by `html.escape`
Goffi <goffi@goffi.org>
parents:
1219
diff
changeset
|
3 import html |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 from libervia.server.constants import Const as C |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
5 from twisted.words.protocols.jabber import jid |
1466
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
6 from twisted.web import server |
1419
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
7 from sat.core.i18n import _, D_ |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 from sat.tools.common.template import safe |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 from sat.tools.common import uri |
1156
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1145
diff
changeset
|
10 from sat.tools.common import data_format |
1406
cffa3ae4d0aa
pages (blog/view): move URL friendly code to backend tools:
Goffi <goffi@goffi.org>
parents:
1403
diff
changeset
|
11 from sat.tools.common import regex |
cffa3ae4d0aa
pages (blog/view): move URL friendly code to backend tools:
Goffi <goffi@goffi.org>
parents:
1403
diff
changeset
|
12 from sat.core.log import getLogger |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 from libervia.server import utils |
1171
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
14 from libervia.server.utils import SubPage |
1156
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1145
diff
changeset
|
15 |
1145
29eb15062416
pages: set __name__ for imported pages
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
16 log = getLogger(__name__) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 """generic blog (with service/node provided)""" |
1216 | 19 name = 'blog_view' |
20 template = "blog/articles.html" | |
21 uri_handlers = {('pubsub', 'microblog'): 'microblog_uri'} | |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
22 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 URL_LIMIT_MARK = 90 # if canonical URL is longer than that, text will not be appended |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 def microblog_uri(self, uri_data): |
1216 | 27 args = [uri_data['path'], uri_data['node']] |
28 if 'item' in uri_data: | |
29 args.extend(['id', uri_data['item']]) | |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 return self.getURL(*args) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
31 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
32 def parse_url(self, request): |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
33 """URL is /[service]/[node]/[filter_keyword]/[item]|[other] |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
34 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
35 if [node] is '@', default namespace is used |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
36 if a value is unset, default one will be used |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
37 keyword can be one of: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
38 id: next value is a item id |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 tag: next value is a blog tag |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
40 """ |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
41 data = self.getRData(request) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
42 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
43 try: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
44 service = self.nextPath(request) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
45 except IndexError: |
1216 | 46 data['service'] = '' |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
47 else: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
48 try: |
1216 | 49 data["service"] = jid.JID(service) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
50 except Exception: |
1216 | 51 log.warning(_("bad service entered: {}").format(service)) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
52 self.pageError(request, C.HTTP_BAD_REQUEST) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
53 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
54 try: |
1171
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
55 node = self.nextPath(request) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
56 except IndexError: |
1216 | 57 node = '@' |
58 data['node'] = '' if node == '@' else node | |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
59 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
60 try: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
61 filter_kw = data['filter_keyword'] = self.nextPath(request) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
62 except IndexError: |
1216 | 63 filter_kw = '@' |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
64 else: |
1216 | 65 if filter_kw == '@': |
1171
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
66 # No filter, this is used when a subpage is needed, notably Atom feed |
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
67 pass |
1216 | 68 elif filter_kw == 'id': |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
69 try: |
1216 | 70 data['item'] = self.nextPath(request) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
71 except IndexError: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
72 self.pageError(request, C.HTTP_BAD_REQUEST) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
73 # we get one more argument in case text has been added to have a nice URL |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
74 try: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
75 self.nextPath(request) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
76 except IndexError: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
77 pass |
1216 | 78 elif filter_kw == 'tag': |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
79 try: |
1216 | 80 data['tag'] = self.nextPath(request) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
81 except IndexError: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
82 self.pageError(request, C.HTTP_BAD_REQUEST) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
83 else: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
84 # invalid filter keyword |
1216 | 85 log.warning(_("invalid filter keyword: {filter_kw}").format( |
1171
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
86 filter_kw=filter_kw)) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
87 self.pageError(request, C.HTTP_BAD_REQUEST) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
88 |
1171
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
89 # if URL is parsed here, we'll have atom.xml available and we need to |
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
90 # add the link to the page |
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
91 atom_url = self.getURLByPath( |
1216 | 92 SubPage('blog_view'), |
1171
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
93 service, |
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
94 node, |
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
95 filter_kw, |
1216 | 96 SubPage('blog_feed_atom'), |
1171
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
97 ) |
1216 | 98 request.template_data['atom_url'] = atom_url |
99 request.template_data.setdefault('links', []).append({ | |
100 "href": atom_url, | |
101 "type": "application/atom+xml", | |
102 "rel": "alternate", | |
103 "title": "{service}'s blog".format(service=service)}) | |
1171
469d0de8da0e
pages (blog, u): added atom feed link in "links" template data.
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
104 |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
105 |
1419
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
106 def add_breadcrumb(self, request, breadcrumbs): |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
107 data = self.getRData(request) |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
108 breadcrumbs.append({ |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
109 "label": D_("Feed"), |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
110 "url": self.getURL(data["service"].full(), data.get("node", "@")) |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
111 }) |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
112 if "item" in data: |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
113 breadcrumbs.append({ |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
114 "label": D_("Post"), |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
115 }) |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
116 |
6fc41f000d24
pages (blog/view, u, files/list): custom breadcrumbs:
Goffi <goffi@goffi.org>
parents:
1406
diff
changeset
|
117 |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
118 async def appendComments(self, request, blog_items, profile): |
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
119 await self.fillMissingIdentities( |
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
120 request, [i['author_jid'] for i in blog_items['items']]) |
1302
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
121 for blog_item in blog_items['items']: |
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
122 for comment_data in blog_item['comments']: |
1216 | 123 service = comment_data['service'] |
124 node = comment_data['node'] | |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
125 try: |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
126 comments_data = await self.host.bridgeCall('mbGet', |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
127 service, |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
128 node, |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
129 C.NO_LIMIT, |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
130 [], |
1137
dfd6545a205a
pages (blog/view, tickets): use of new "order_by" feature.
Goffi <goffi@goffi.org>
parents:
1133
diff
changeset
|
131 {C.KEY_ORDER_BY: C.ORDER_BY_CREATION}, |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
132 profile) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
133 except Exception as e: |
1302
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
134 log.warning( |
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
135 _("Can't get comments at {node} (service: {service}): {msg}").format( |
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
136 service=service, |
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
137 node=node, |
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
138 msg=e)) |
1403
1357d04107d1
pages (blog/view): set empty comments when comments node is missing
Goffi <goffi@goffi.org>
parents:
1376
diff
changeset
|
139 comment_data['items'] = [] |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
140 continue |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
141 |
1302
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
142 comments = data_format.deserialise(comments_data) |
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
143 comment_data['items'] = comments['items'] |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
144 await appendComments(self, request, comments, profile) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
145 |
1466
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
146 async def getBlogItems( |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
147 self, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
148 request: server.Request, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
149 service: jid.JID, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
150 node: str, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
151 item_id, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
152 extra: dict, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
153 profile: str |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
154 ) -> dict: |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
155 try: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
156 if item_id: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
157 items_id = [item_id] |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
158 else: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
159 items_id = [] |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
160 blog_data = await self.host.bridgeCall('mbGet', |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
161 service.userhost(), |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
162 node, |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
163 C.NO_LIMIT, |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
164 items_id, |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
165 extra, |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
166 profile) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
167 except Exception as e: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
168 # FIXME: need a better way to test errors in bridge errback |
1216 | 169 if "forbidden" in str(e): |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
170 self.pageError(request, 401) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
171 else: |
1216 | 172 log.warning(_("can't retrieve blog for [{service}]: {msg}".format( |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
173 service = service.userhost(), msg=e))) |
1302
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
174 blog_data = {"items": []} |
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
175 else: |
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
176 blog_data = data_format.deserialise(blog_data) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
177 |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
178 return blog_data |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
179 |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
180 async def prepare_render(self, request): |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
181 data = self.getRData(request) |
1376
1b94a5ab155f
pages (blog/view): Full-Text Search is used when `search` query argument is present
Goffi <goffi@goffi.org>
parents:
1322
diff
changeset
|
182 template_data = request.template_data |
1216 | 183 page_max = data.get("page_max", 10) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
184 # if the comments are not explicitly hidden, we show them |
1376
1b94a5ab155f
pages (blog/view): Full-Text Search is used when `search` query argument is present
Goffi <goffi@goffi.org>
parents:
1322
diff
changeset
|
185 service, node, item_id, show_comments = ( |
1b94a5ab155f
pages (blog/view): Full-Text Search is used when `search` query argument is present
Goffi <goffi@goffi.org>
parents:
1322
diff
changeset
|
186 data.get('service', ''), |
1b94a5ab155f
pages (blog/view): Full-Text Search is used when `search` query argument is present
Goffi <goffi@goffi.org>
parents:
1322
diff
changeset
|
187 data.get('node', ''), |
1b94a5ab155f
pages (blog/view): Full-Text Search is used when `search` query argument is present
Goffi <goffi@goffi.org>
parents:
1322
diff
changeset
|
188 data.get('item'), |
1b94a5ab155f
pages (blog/view): Full-Text Search is used when `search` query argument is present
Goffi <goffi@goffi.org>
parents:
1322
diff
changeset
|
189 data.get('show_comments', True) |
1b94a5ab155f
pages (blog/view): Full-Text Search is used when `search` query argument is present
Goffi <goffi@goffi.org>
parents:
1322
diff
changeset
|
190 ) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
191 profile = self.getProfile(request) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
192 if profile is None: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
193 profile = C.SERVICE_PROFILE |
1133
122dd136d1ab
pages (blog/view): allow commenting when profile is connected
Goffi <goffi@goffi.org>
parents:
1124
diff
changeset
|
194 profile_connected = False |
122dd136d1ab
pages (blog/view): allow commenting when profile is connected
Goffi <goffi@goffi.org>
parents:
1124
diff
changeset
|
195 else: |
122dd136d1ab
pages (blog/view): allow commenting when profile is connected
Goffi <goffi@goffi.org>
parents:
1124
diff
changeset
|
196 profile_connected = True |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
197 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
198 ## pagination/filtering parameters |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
199 if item_id: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
200 extra = {} |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
201 else: |
1141
02fc28aac2b6
pages: move pagination core from blog to LiberviaPage so it can be reused:
Goffi <goffi@goffi.org>
parents:
1140
diff
changeset
|
202 extra = self.getPubsubExtra(request, page_max=page_max) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
203 tag = data.get('tag') |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
204 if tag: |
1376
1b94a5ab155f
pages (blog/view): Full-Text Search is used when `search` query argument is present
Goffi <goffi@goffi.org>
parents:
1322
diff
changeset
|
205 extra[f'mam_filter_{C.MAM_FILTER_CATEGORY}'] = tag |
1b94a5ab155f
pages (blog/view): Full-Text Search is used when `search` query argument is present
Goffi <goffi@goffi.org>
parents:
1322
diff
changeset
|
206 self.handleSearch(request, extra) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
207 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
208 ## main data ## |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
209 # we get data from backend/XMPP here |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
210 blog_items = await getBlogItems(self, request, service, node, item_id, extra, profile) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
211 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
212 ## navigation ## |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
213 # no let's fill service, node and pagination URLs |
1216 | 214 if 'service' not in template_data: |
215 template_data['service'] = service | |
216 if 'node' not in template_data: | |
217 template_data['node'] = node | |
218 target_profile = template_data.get('target_profile') | |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
219 |
1302
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
220 if blog_items: |
1466
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
221 if item_id: |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
222 template_data["previous_page_url"] = self.getURL( |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
223 service.full(), |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
224 node, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
225 before=item_id, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
226 page_max=1 |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
227 ) |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
228 template_data["next_page_url"] = self.getURL( |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
229 service.full(), |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
230 node, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
231 after=item_id, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
232 page_max=1 |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
233 ) |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
234 blog_items["rsm"] = { |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
235 "last": item_id, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
236 "first": item_id, |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
237 } |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
238 blog_items["complete"] = False |
cff720e26089
pages (blog/view): activate pagination when a single item is shown:
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
239 else: |
1302
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
240 self.setPagination(request, blog_items) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
241 else: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
242 if item_id: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
243 # if item id has been specified in URL and it's not found, |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
244 # we must return an error |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
245 self.pageError(request, C.HTTP_NOT_FOUND) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
246 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
247 ## identities ## |
1133
122dd136d1ab
pages (blog/view): allow commenting when profile is connected
Goffi <goffi@goffi.org>
parents:
1124
diff
changeset
|
248 # identities are used to show nice nickname or avatars |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
249 await self.fillMissingIdentities(request, [i['author_jid'] for i in blog_items['items']]) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
250 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
251 ## Comments ## |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
252 # if comments are requested, we need to take them |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
253 if show_comments: |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
254 await appendComments(self, request, blog_items, profile) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
255 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
256 ## URLs ## |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
257 # We will fill items_http_uri and tags_http_uri in template_data with suitable urls |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
258 # if we know the profile, we use it instead of service + blog (nicer url) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
259 if target_profile is None: |
1216 | 260 blog_base_url_item = self.getPageByName('blog_view').getURL(service.full(), node or '@', 'id') |
261 blog_base_url_tag = self.getPageByName('blog_view').getURL(service.full(), node or '@', 'tag') | |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
262 else: |
1216 | 263 blog_base_url_item = self.getURLByNames([('user', [target_profile]), ('user_blog', ['id'])]) |
264 blog_base_url_tag = self.getURLByNames([('user', [target_profile]), ('user_blog', ['tag'])]) | |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
265 # we also set the background image if specified by user |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
266 bg_img = await self.host.bridgeCall('asyncGetParamA', 'Background', 'Blog page', 'value', -1, template_data['target_profile']) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
267 if bg_img: |
1216 | 268 template_data['dynamic_style'] = safe(""" |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
269 :root { |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
270 --bg-img: url("%s"); |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
271 } |
1229
acec8e9185db
pages: replaced deprecated `cgi.escape` by `html.escape`
Goffi <goffi@goffi.org>
parents:
1219
diff
changeset
|
272 """ % html.escape(bg_img, True)) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
273 |
1302
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
274 template_data['blog_items'] = data['blog_items'] = blog_items |
1219
0f0c36992f3c
pages (blog/view, forums/view): fixed encoding of request.args following Python3 port
Goffi <goffi@goffi.org>
parents:
1216
diff
changeset
|
275 if request.args.get(b'reverse') == ['1']: |
1302
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
276 template_data['blog_items'].items.reverse() |
1216 | 277 template_data['items_http_uri'] = items_http_uri = {} |
278 template_data['tags_http_uri'] = tags_http_uri = {} | |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
279 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
280 |
1302
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
281 for item in blog_items['items']: |
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
282 blog_canonical_url = '/'.join([blog_base_url_item, utils.quote(item['id'])]) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
283 if len(blog_canonical_url) > URL_LIMIT_MARK: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
284 blog_url = blog_canonical_url |
1406
cffa3ae4d0aa
pages (blog/view): move URL friendly code to backend tools:
Goffi <goffi@goffi.org>
parents:
1403
diff
changeset
|
285 elif '-' not in item['id']: |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
286 # we add text from title or body at the end of URL |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
287 # to make it more human readable |
1406
cffa3ae4d0aa
pages (blog/view): move URL friendly code to backend tools:
Goffi <goffi@goffi.org>
parents:
1403
diff
changeset
|
288 # we do it only if there is no "-", as a "-" probably means that |
cffa3ae4d0aa
pages (blog/view): move URL friendly code to backend tools:
Goffi <goffi@goffi.org>
parents:
1403
diff
changeset
|
289 # item's id is already user friendly. |
cffa3ae4d0aa
pages (blog/view): move URL friendly code to backend tools:
Goffi <goffi@goffi.org>
parents:
1403
diff
changeset
|
290 # TODO: to be removed, this is only kept for a transition period until |
cffa3ae4d0aa
pages (blog/view): move URL friendly code to backend tools:
Goffi <goffi@goffi.org>
parents:
1403
diff
changeset
|
291 # user friendly item IDs are more common. |
cffa3ae4d0aa
pages (blog/view): move URL friendly code to backend tools:
Goffi <goffi@goffi.org>
parents:
1403
diff
changeset
|
292 text = regex.urlFriendlyText(item.get('title', item['content'])) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
293 if text: |
1216 | 294 blog_url = blog_canonical_url + '/' + text |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
295 else: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
296 blog_url = blog_canonical_url |
1406
cffa3ae4d0aa
pages (blog/view): move URL friendly code to backend tools:
Goffi <goffi@goffi.org>
parents:
1403
diff
changeset
|
297 else: |
cffa3ae4d0aa
pages (blog/view): move URL friendly code to backend tools:
Goffi <goffi@goffi.org>
parents:
1403
diff
changeset
|
298 blog_url = blog_canonical_url |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
299 |
1302
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
300 items_http_uri[item['id']] = self.host.getExtBaseURL(request, blog_url) |
04e7dd6b6f4d
pages (blog, tickets, merge-requests): updated code to handle new serialisation, following backend changes
Goffi <goffi@goffi.org>
parents:
1266
diff
changeset
|
301 for tag in item['tags']: |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
302 if tag not in tags_http_uri: |
1216 | 303 tag_url = '/'.join([blog_base_url_tag, utils.quote(tag)]) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
304 tags_http_uri[tag] = self.host.getExtBaseURL(request, tag_url) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
305 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
306 # if True, page should display a comment box |
1216 | 307 template_data['allow_commenting'] = data.get('allow_commenting', profile_connected) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
308 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
309 # last but not least, we add a xmpp: link to the node |
1216 | 310 uri_args = {'path': service.full()} |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
311 if node: |
1216 | 312 uri_args['node'] = node |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
313 if item_id: |
1216 | 314 uri_args['item'] = item_id |
315 template_data['xmpp_uri'] = uri.buildXMPPUri('pubsub', subtype='microblog', **uri_args) | |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
316 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
317 |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
318 async def on_data_post(self, request): |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
319 profile = self.getProfile(request) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
320 if profile is None: |
1173
0f37b65fe7c2
server: replaced wrong usage of C.HTTP_UNAUTHORIZED by C.HTTP_FORBIDDEN
Goffi <goffi@goffi.org>
parents:
1171
diff
changeset
|
321 self.pageError(request, C.HTTP_FORBIDDEN) |
1216 | 322 type_ = self.getPostedData(request, 'type') |
323 if type_ == 'comment': | |
324 service, node, body = self.getPostedData(request, ('service', 'node', 'body')) | |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
325 |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
326 if not body: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
327 self.pageError(request, C.HTTP_BAD_REQUEST) |
1216 | 328 comment_data = {"content": body} |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
329 try: |
1322
a0954b6610aa
pages: identities are not using `data_objects` anymore:
Goffi <goffi@goffi.org>
parents:
1302
diff
changeset
|
330 await self.host.bridgeCall('mbSend', |
1156
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1145
diff
changeset
|
331 service, |
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1145
diff
changeset
|
332 node, |
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1145
diff
changeset
|
333 data_format.serialise(comment_data), |
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1145
diff
changeset
|
334 profile) |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
335 except Exception as e: |
1216 | 336 if "forbidden" in str(e): |
1077
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
337 self.pageError(request, 401) |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
338 else: |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
339 raise e |
880ea673aaff
blog: moved blog page from /common to /blog:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
340 else: |
1216 | 341 log.warning(_("Unhandled data type: {}").format(type_)) |