Mercurial > libervia-web
annotate libervia/server/blog.py @ 1231:b9a8049ca1ff
bin (libervia): look for twistd3 first:
`twistd3` is now looked first, for the same reason as for backend (see backend commit
0b6d56a8f7e3).
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 27 Dec 2019 13:35:27 +0100 |
parents | b2d067339de3 |
children | 987595a254b0 |
rev | line source |
---|---|
10 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
4 # Libervia: a Salut à Toi frontend |
1144 | 5 # Copyright (C) 2011-2019 Jérôme Poisson <goffi@goffi.org> |
818 | 6 # Copyright (C) 2013-2016 Adrien Cossa <souliane@mailoo.org> |
10 | 7 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
8 # This program is free software: you can redistribute it and/or modify |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
9 # it under the terms of the GNU Affero General Public License as published by |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
10 # the Free Software Foundation, either version 3 of the License, or |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
11 # (at your option) any later version. |
10 | 12 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
13 # This program is distributed in the hope that it will be useful, |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
16 # GNU Affero General Public License for more details. |
10 | 17 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
18 # You should have received a copy of the GNU Affero General Public License |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
19 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
10 | 20 |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
487
diff
changeset
|
21 from sat.core.i18n import _, D_ |
847
330db23d4a44
server (blog): call fixXHTMLLinks on XHTML content
souliane <souliane@mailoo.org>
parents:
831
diff
changeset
|
22 from sat_frontends.tools.strings import addURLToText, fixXHTMLLinks |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
23 from sat.core.log import getLogger |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
24 |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
25 log = getLogger(__name__) |
898
2d15b484ca33
blog, browser: updated imports to reflect renaming of common.py to common/data_format.py
Goffi <goffi@goffi.org>
parents:
896
diff
changeset
|
26 from sat.tools.common import data_format |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
27 from sat.tools import xml_tools |
728
9d35d75566fb
server_side (blog): clean error message when unknown profile is requested
souliane <souliane@mailoo.org>
parents:
727
diff
changeset
|
28 from dbus.exceptions import DBusException |
388
893451e35686
server_side: display blog banner if it is defined
souliane <souliane@mailoo.org>
parents:
375
diff
changeset
|
29 from twisted.internet import defer |
10 | 30 from twisted.web import server |
31 from twisted.web.resource import Resource | |
32 from twisted.words.protocols.jabber.jid import JID | |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
33 from twisted.words.xish import domish |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
34 from jinja2 import Environment, PackageLoader |
10 | 35 from datetime import datetime |
388
893451e35686
server_side: display blog banner if it is defined
souliane <souliane@mailoo.org>
parents:
375
diff
changeset
|
36 import re |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
37 import os |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
38 import sys |
1216 | 39 import urllib.request, urllib.parse, urllib.error |
229
e632f77c4219
bridge: asyncGetParamA takes a security_limit argument
souliane <souliane@mailoo.org>
parents:
228
diff
changeset
|
40 |
588
c8cca1a373dd
server_side: static blog: convert \n in raw text message to <br/>
souliane <souliane@mailoo.org>
parents:
586
diff
changeset
|
41 from libervia.server.html_tools import sanitizeHtml, convertNewLinesToXHTML |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
446
diff
changeset
|
42 from libervia.server.constants import Const as C |
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
446
diff
changeset
|
43 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
44 NS_ATOM = "http://www.w3.org/2005/Atom" |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
45 PARAMS_TO_GET = ( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
46 C.STATIC_BLOG_PARAM_TITLE, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
47 C.STATIC_BLOG_PARAM_BANNER, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
48 C.STATIC_BLOG_PARAM_KEYWORDS, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
49 C.STATIC_BLOG_PARAM_DESCRIPTION, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
50 ) |
854 | 51 re_strip_empty_div = re.compile(r"<div ?/>|<div> *?</div>") |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
52 |
950
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
53 # TODO: check disco features and use max_items when RSM is not available |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
54 # FIXME: change navigation links handling, this is is fragile |
950
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
55 # XXX: this page will disappear, LiberviaPage will be used instead |
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
56 # TODO: delete this page and create a compatibility page for links |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
57 |
827
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
58 |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
59 def getDefaultQueryData(request): |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
60 """Return query data which must be present in all links |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
61 |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
62 @param request(twisted.web.http.Request): request instance comming from render |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
63 @return (dict): a dict with values as expected by urllib.urlencode |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
64 """ |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
65 default_query_data = {} |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
66 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
67 default_query_data["tag"] = request.extra_dict[ |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
68 "mam_filter_{}".format(C.MAM_FILTER_CATEGORY) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
69 ].encode("utf-8") |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
70 except KeyError: |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
71 pass |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
72 return default_query_data |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
73 |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
74 |
827
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
75 def _quote(value): |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
76 """Quote a value for use in url |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
77 |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
78 @param value(unicode): value to quote |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
79 @return (str): quoted value |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
80 """ |
1216 | 81 return urllib.parse.quote(value.encode("utf-8"), "") |
827
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
82 |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
83 |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
84 def _unquote(quoted_value): |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
85 """Unquote a value coming from url |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
86 |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
87 @param unquote_value(str): value to unquote |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
88 @return (unicode): unquoted value |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
89 """ |
1216 | 90 assert not isinstance(quoted_value, str) |
91 return urllib.parse.unquote(quoted_value).decode("utf-8") | |
827
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
92 |
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
93 |
893
298fbe562060
blog: escape "&" when encoding URL, so they can be used without escaping in the HTML template
Goffi <goffi@goffi.org>
parents:
892
diff
changeset
|
94 def _urlencode(query): |
298fbe562060
blog: escape "&" when encoding URL, so they can be used without escaping in the HTML template
Goffi <goffi@goffi.org>
parents:
892
diff
changeset
|
95 """Same as urllib.urlencode, but use '&' instead of '&'""" |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
96 return "&".join( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
97 [ |
1216 | 98 "{}={}".format(urllib.parse.quote_plus(str(k)), urllib.parse.quote_plus(str(v))) |
99 for k, v in query.items() | |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
100 ] |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
101 ) |
893
298fbe562060
blog: escape "&" when encoding URL, so they can be used without escaping in the HTML template
Goffi <goffi@goffi.org>
parents:
892
diff
changeset
|
102 |
298fbe562060
blog: escape "&" when encoding URL, so they can be used without escaping in the HTML template
Goffi <goffi@goffi.org>
parents:
892
diff
changeset
|
103 |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
104 class TemplateProcessor(object): |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
105 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
106 THEME = "default" |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
107 |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
108 def __init__(self, host): |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
109 self.host = host |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
110 |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
111 # add Libervia's themes directory to the python path |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
112 sys.path.append(os.path.dirname(os.path.normpath(self.host.themes_dir))) |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
113 themes = os.path.basename(os.path.normpath(self.host.themes_dir)) |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
114 self.env = Environment(loader=PackageLoader(themes, self.THEME)) |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
115 |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
116 def useTemplate(self, request, tpl, data=None): |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
117 theme_url = os.path.join("/", C.THEMES_URL, self.THEME) |
10 | 118 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
119 data_ = { |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
120 "images": os.path.join(theme_url, "images"), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
121 "styles": os.path.join(theme_url, "styles"), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
122 } |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
123 if data: |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
124 data_.update(data) |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
125 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
126 template = self.env.get_template("{}.html".format(tpl)) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
127 return template.render(**data_).encode("utf-8") |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
128 |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
129 |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
130 class MicroBlog(Resource, TemplateProcessor): |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
131 isLeaf = True |
10 | 132 |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
229
diff
changeset
|
133 def __init__(self, host): |
10 | 134 self.host = host |
135 Resource.__init__(self) | |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
136 TemplateProcessor.__init__(self, host) |
484
ae86b32b959c
server side (blog): manage our own avatars cache because existing entity data are not updated
souliane <souliane@mailoo.org>
parents:
483
diff
changeset
|
137 self.avatars_cache = {} |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
138 |
950
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
139 def _avatarPathToUrl(self, avatar, request, bare_jid_s): |
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
140 filename = os.path.basename(avatar) |
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
141 avatar_url = os.path.join(self.host.service_cache_url, filename) |
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
142 self.avatars_cache[bare_jid_s] = avatar_url |
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
143 return avatar_url |
746
25984ca4aef2
server side: special handling of Connection/JabberID and Connection/autoconnect parameter which has needed by QuickApp but restricted by security limit
Goffi <goffi@goffi.org>
parents:
743
diff
changeset
|
144 |
950
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
145 def getAvatarURL(self, pub_jid, request): |
727
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
146 """Return avatar of a jid if in cache, else ask for it. |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
147 |
727
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
148 @param pub_jid (JID): publisher JID |
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
149 @return: deferred avatar URL (unicode) |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
150 """ |
727
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
151 bare_jid_s = pub_jid.userhost() |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
152 try: |
727
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
153 url = self.avatars_cache[bare_jid_s] |
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
154 except KeyError: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
155 self.avatars_cache[ |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
156 bare_jid_s |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
157 ] = "" # avoid to request the vcard several times |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
158 d = self.host.bridgeCall( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
159 "avatarGet", bare_jid_s, False, False, C.SERVICE_PROFILE |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
160 ) |
950
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
161 d.addCallback(self._avatarPathToUrl, request, bare_jid_s) |
727
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
162 return d |
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
163 return defer.succeed(url if url else C.DEFAULT_AVATAR_URL) |
10 | 164 |
165 def render_GET(self, request): | |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
166 if not request.postpath or len(request.postpath) > 2: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
167 return self.useTemplate( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
168 request, "static_blog_error", {"message": "You must indicate a nickname"} |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
169 ) |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
170 |
827
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
171 prof_requested = _unquote(request.postpath[0]) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
172 |
728
9d35d75566fb
server_side (blog): clean error message when unknown profile is requested
souliane <souliane@mailoo.org>
parents:
727
diff
changeset
|
173 try: |
915
e9e9d9d893a8
server: renamed getProfileName to profileNameGet following core change and new conventions.
Goffi <goffi@goffi.org>
parents:
914
diff
changeset
|
174 prof_found = self.host.bridge.profileNameGet(prof_requested) |
728
9d35d75566fb
server_side (blog): clean error message when unknown profile is requested
souliane <souliane@mailoo.org>
parents:
727
diff
changeset
|
175 except DBusException: |
9d35d75566fb
server_side (blog): clean error message when unknown profile is requested
souliane <souliane@mailoo.org>
parents:
727
diff
changeset
|
176 prof_found = None |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
177 if not prof_found or prof_found == C.SERVICE_PROFILE: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
178 return self.useTemplate( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
179 request, "static_blog_error", {"message": "Invalid nickname"} |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
180 ) |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
181 |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
182 d = defer.Deferred() |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
183 # TODO: jid caching |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
184 self.host.bridge.asyncGetParamA( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
185 "JabberID", |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
186 "Connection", |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
187 "value", |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
188 profile_key=prof_found, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
189 callback=d.callback, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
190 errback=d.errback, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
191 ) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
192 d.addCallback(self.render_gotJID, request, prof_found) |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
193 return server.NOT_DONE_YET |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
194 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
195 def render_gotJID(self, pub_jid_s, request, profile): |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
196 pub_jid = JID(pub_jid_s) |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
197 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
198 request.extra_dict = {} # will be used for RSM and MAM |
708
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
199 self.parseURLParams(request) |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
200 if request.item_id: |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
201 # FIXME: this part seems useless |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
202 # we want a specific item |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
203 # item_ids = [request.item_id] |
825
a3e888ac4964
server (blog): removed another max_items
Goffi <goffi@goffi.org>
parents:
824
diff
changeset
|
204 # max_items = 1 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
205 max_items = C.NO_LIMIT # FIXME |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
206 else: |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
207 # max_items = int(request.extra_dict['rsm_max']) # FIXME |
954
7892f1a1e2cf
server (blog): temporary fix for atom feed:
Goffi <goffi@goffi.org>
parents:
950
diff
changeset
|
208 max_items = C.NO_LIMIT |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
209 # TODO: use max_items only when RSM is not available |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
487
diff
changeset
|
210 |
708
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
211 if request.atom: |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
212 request.extra_dict.update(request.mam_extra) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
213 self.getAtom( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
214 pub_jid, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
215 max_items, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
216 request.extra_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
217 request.extra_comments_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
218 request, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
219 profile, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
220 ) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
221 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
222 elif request.item_id: |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
223 # we can't merge mam_extra now because we'll use item_ids |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
224 self.getItemById( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
225 pub_jid, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
226 request.item_id, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
227 request.extra_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
228 request.extra_comments_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
229 request, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
230 profile, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
231 ) |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
232 else: |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
233 request.extra_dict.update(request.mam_extra) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
234 self.getItems( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
235 pub_jid, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
236 max_items, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
237 request.extra_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
238 request.extra_comments_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
239 request, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
240 profile, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
241 ) |
746
25984ca4aef2
server side: special handling of Connection/JabberID and Connection/autoconnect parameter which has needed by QuickApp but restricted by security limit
Goffi <goffi@goffi.org>
parents:
743
diff
changeset
|
242 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
243 ## URL parsing |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
244 |
708
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
245 def parseURLParams(self, request): |
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
246 """Parse the request URL parameters. |
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
247 |
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
248 @param request: HTTP request |
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
249 """ |
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
250 if len(request.postpath) > 1: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
251 if request.postpath[1] == "atom.xml": # return the atom feed |
708
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
252 request.atom = True |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
253 request.item_id = None |
708
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
254 else: |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
255 request.atom = False |
827
f1fc7245b910
server (blog): moved _quote and _unquote to module functions, and use them in BlogMessage.url
Goffi <goffi@goffi.org>
parents:
826
diff
changeset
|
256 request.item_id = _unquote(request.postpath[1]) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
257 else: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
258 request.item_id = None |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
259 request.atom = False |
708
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
260 |
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
261 self.parseURLParamsRSM(request) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
262 # XXX: request.display_single is True when only one blog post is visible |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
263 request.display_single = (request.item_id is not None) or int( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
264 request.extra_dict["rsm_max"] |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
265 ) == 1 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
266 self.parseURLParamsCommentsRSM(request) |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
267 self.parseURLParamsMAM(request) |
708
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
268 |
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
269 def parseURLParamsRSM(self, request): |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
270 """Parse RSM request data from the URL parameters for main items |
708
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
271 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
272 fill request.extra_dict accordingly |
708
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
273 @param request: HTTP request |
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
274 """ |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
275 if request.item_id: # XXX: item_id and RSM are not compatible |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
276 return |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
277 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
278 rsm_max = int(request.args["max"][0]) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
279 if rsm_max > C.STATIC_RSM_MAX_LIMIT: |
1216 | 280 log.warning("Request with rsm_max over limit ({})".format(rsm_max)) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
281 rsm_max = C.STATIC_RSM_MAX_LIMIT |
1216 | 282 request.extra_dict["rsm_max"] = str(rsm_max) |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
283 except (ValueError, KeyError): |
1216 | 284 request.extra_dict["rsm_max"] = str(C.STATIC_RSM_MAX_DEFAULT) |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
285 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
286 request.extra_dict["rsm_index"] = request.args["index"][0] |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
287 except (ValueError, KeyError): |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
288 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
289 request.extra_dict["rsm_before"] = request.args["before"][0].decode( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
290 "utf-8" |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
291 ) |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
292 except KeyError: |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
293 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
294 request.extra_dict["rsm_after"] = request.args["after"][0].decode( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
295 "utf-8" |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
296 ) |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
297 except KeyError: |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
298 pass |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
299 |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
300 def parseURLParamsCommentsRSM(self, request): |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
301 """Parse RSM request data from the URL parameters for comments |
746
25984ca4aef2
server side: special handling of Connection/JabberID and Connection/autoconnect parameter which has needed by QuickApp but restricted by security limit
Goffi <goffi@goffi.org>
parents:
743
diff
changeset
|
302 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
303 fill request.extra_dict accordingly |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
304 @param request: HTTP request |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
305 """ |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
306 request.extra_comments_dict = {} |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
307 if request.display_single: |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
308 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
309 rsm_max = int(request.args["comments_max"][0]) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
310 if rsm_max > C.STATIC_RSM_MAX_LIMIT: |
1216 | 311 log.warning("Request with rsm_max over limit ({})".format(rsm_max)) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
312 rsm_max = C.STATIC_RSM_MAX_LIMIT |
1216 | 313 request.extra_comments_dict["rsm_max"] = str(rsm_max) |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
314 except (ValueError, KeyError): |
1216 | 315 request.extra_comments_dict["rsm_max"] = str( |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
316 C.STATIC_RSM_MAX_COMMENTS_DEFAULT |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
317 ) |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
318 else: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
319 request.extra_comments_dict["rsm_max"] = "0" |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
320 |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
321 def parseURLParamsMAM(self, request): |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
322 """Parse MAM request data from the URL parameters for main items |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
323 |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
324 fill request.extra_dict accordingly |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
325 @param request: HTTP request |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
326 """ |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
327 # XXX: we use a separate dict for MAM as the filters are not used |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
328 # when display_single is set (because it then use item_ids which |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
329 # can't be used with MAM), but it is still used in this case |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
330 # for navigation links. |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
331 request.mam_extra = {} |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
332 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
333 request.mam_extra[ |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
334 "mam_filter_{}".format(C.MAM_FILTER_CATEGORY) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
335 ] = request.args["tag"][0].decode("utf-8") |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
336 except KeyError: |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
337 pass |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
338 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
339 ## Items retrieval |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
340 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
341 def getItemById( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
342 self, pub_jid, item_id, extra_dict, extra_comments_dict, request, profile |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
343 ): |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
344 """ |
746
25984ca4aef2
server side: special handling of Connection/JabberID and Connection/autoconnect parameter which has needed by QuickApp but restricted by security limit
Goffi <goffi@goffi.org>
parents:
743
diff
changeset
|
345 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
346 @param pub_jid (jid.JID): publisher JID |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
347 @param item_id(unicode): ID of the item to retrieve |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
348 @param extra_dict (dict): extra configuration for initial items only |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
349 @param extra_comments_dict (dict): extra configuration for comments only |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
350 @param request: HTTP request |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
351 @param profile |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
352 """ |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
353 |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
354 def gotItems(items): |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
355 items, metadata = items |
1156
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1144
diff
changeset
|
356 items = [data_format.deserialise(i) for i in items] |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
357 item = items[0] # assume there's only one item |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
358 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
359 def gotMetadata(result): |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
360 dummy, rsm_metadata = result |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
361 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
362 metadata["rsm_count"] = rsm_metadata["rsm_count"] |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
363 except KeyError: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
364 pass |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
365 try: |
1216 | 366 metadata["rsm_index"] = str(int(rsm_metadata["rsm_index"]) - 1) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
367 except KeyError: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
368 pass |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
369 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
370 metadata["rsm_first"] = metadata["rsm_last"] = item["id"] |
746
25984ca4aef2
server side: special handling of Connection/JabberID and Connection/autoconnect parameter which has needed by QuickApp but restricted by security limit
Goffi <goffi@goffi.org>
parents:
743
diff
changeset
|
371 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
372 def gotComments(comments): |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
373 # at this point we can merge mam dict |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
374 request.extra_dict.update(request.mam_extra) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
375 # build the items as self.getItems would do it (and as self.renderHTML expects them to be) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
376 comments = [ |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
377 ( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
378 item["comments_service"], |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
379 item["comments_node"], |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
380 "", |
1156
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1144
diff
changeset
|
381 [data_format.deserialise(c) for c in comments[0]], |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
382 comments[1], |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
383 ) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
384 ] |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
385 self.renderHTML( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
386 [(item, comments)], metadata, request, pub_jid, profile |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
387 ) |
10 | 388 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
389 # get the comments |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
390 # max_comments = int(extra_comments_dict['rsm_max']) # FIXME |
954
7892f1a1e2cf
server (blog): temporary fix for atom feed:
Goffi <goffi@goffi.org>
parents:
950
diff
changeset
|
391 max_comments = C.NO_LIMIT |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
392 # TODO: use max_comments only when RSM is not available |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
393 self.host.bridge.mbGet( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
394 item["comments_service"], |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
395 item["comments_node"], |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
396 max_comments, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
397 [], |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
398 extra_comments_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
399 C.SERVICE_PROFILE, |
826
70939916dc80
server (blog): added unhandler errback in getItemById
Goffi <goffi@goffi.org>
parents:
825
diff
changeset
|
400 callback=gotComments, |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
401 errback=lambda failure: self.renderError(failure, request, pub_jid), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
402 ) |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
403 |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
404 # XXX: retrieve RSM information related to the main item. We can't do it while |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
405 # retrieving the item, because item_ids and rsm should not be used together. |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
406 self.host.bridge.mbGet( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
407 pub_jid.userhost(), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
408 "", |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
409 0, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
410 [], |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
411 {"rsm_max": "1", "rsm_after": item["id"]}, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
412 C.SERVICE_PROFILE, |
826
70939916dc80
server (blog): added unhandler errback in getItemById
Goffi <goffi@goffi.org>
parents:
825
diff
changeset
|
413 callback=gotMetadata, |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
414 errback=lambda failure: self.renderError(failure, request, pub_jid), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
415 ) |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
416 |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
417 # get the main item |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
418 self.host.bridge.mbGet( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
419 pub_jid.userhost(), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
420 "", |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
421 0, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
422 [item_id], |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
423 extra_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
424 C.SERVICE_PROFILE, |
826
70939916dc80
server (blog): added unhandler errback in getItemById
Goffi <goffi@goffi.org>
parents:
825
diff
changeset
|
425 callback=gotItems, |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
426 errback=lambda failure: self.renderError(failure, request, pub_jid), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
427 ) |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
428 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
429 def getItems( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
430 self, pub_jid, max_items, extra_dict, extra_comments_dict, request, profile |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
431 ): |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
432 """ |
746
25984ca4aef2
server side: special handling of Connection/JabberID and Connection/autoconnect parameter which has needed by QuickApp but restricted by security limit
Goffi <goffi@goffi.org>
parents:
743
diff
changeset
|
433 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
434 @param pub_jid (jid.JID): publisher JID |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
435 @param max_items(int): maximum number of item to get, C.NO_LIMIT for no limit |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
436 @param extra_dict (dict): extra configuration for initial items only |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
437 @param extra_comments_dict (dict): extra configuration for comments only |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
438 @param request: HTTP request |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
439 @param profile |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
440 """ |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
441 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
442 def getResultCb(data, rt_session): |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
443 remaining, results = data |
824
d990ae5612df
server (blog): better handling of mbGetFromManyWithCommentsRTResult in getItems
Goffi <goffi@goffi.org>
parents:
823
diff
changeset
|
444 # we have requested one node only |
d990ae5612df
server (blog): better handling of mbGetFromManyWithCommentsRTResult in getItems
Goffi <goffi@goffi.org>
parents:
823
diff
changeset
|
445 assert remaining == 0 |
d990ae5612df
server (blog): better handling of mbGetFromManyWithCommentsRTResult in getItems
Goffi <goffi@goffi.org>
parents:
823
diff
changeset
|
446 assert len(results) == 1 |
d990ae5612df
server (blog): better handling of mbGetFromManyWithCommentsRTResult in getItems
Goffi <goffi@goffi.org>
parents:
823
diff
changeset
|
447 service, node, failure, items, metadata = results[0] |
1160
1276452c0d32
server (legacy blog): fixed items deserialisation
Goffi <goffi@goffi.org>
parents:
1156
diff
changeset
|
448 items = [(data_format.deserialise(i), m) for i,m in items] |
824
d990ae5612df
server (blog): better handling of mbGetFromManyWithCommentsRTResult in getItems
Goffi <goffi@goffi.org>
parents:
823
diff
changeset
|
449 if failure: |
d990ae5612df
server (blog): better handling of mbGetFromManyWithCommentsRTResult in getItems
Goffi <goffi@goffi.org>
parents:
823
diff
changeset
|
450 self.renderError(failure, request, pub_jid) |
d990ae5612df
server (blog): better handling of mbGetFromManyWithCommentsRTResult in getItems
Goffi <goffi@goffi.org>
parents:
823
diff
changeset
|
451 else: |
d990ae5612df
server (blog): better handling of mbGetFromManyWithCommentsRTResult in getItems
Goffi <goffi@goffi.org>
parents:
823
diff
changeset
|
452 self.renderHTML(items, metadata, request, pub_jid, profile) |
746
25984ca4aef2
server side: special handling of Connection/JabberID and Connection/autoconnect parameter which has needed by QuickApp but restricted by security limit
Goffi <goffi@goffi.org>
parents:
743
diff
changeset
|
453 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
454 def getResult(rt_session): |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
455 self.host.bridge.mbGetFromManyWithCommentsRTResult( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
456 rt_session, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
457 C.SERVICE_PROFILE, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
458 callback=lambda data: getResultCb(data, rt_session), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
459 errback=lambda failure: self.renderError(failure, request, pub_jid), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
460 ) |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
461 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
462 # max_comments = int(extra_comments_dict['rsm_max']) # FIXME |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
463 max_comments = 0 |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
464 # TODO: use max_comments only when RSM is not available |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
465 self.host.bridge.mbGetFromManyWithComments( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
466 C.JID, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
467 [pub_jid.userhost()], |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
468 max_items, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
469 max_comments, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
470 extra_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
471 extra_comments_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
472 C.SERVICE_PROFILE, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
473 callback=getResult, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
474 ) |
746
25984ca4aef2
server side: special handling of Connection/JabberID and Connection/autoconnect parameter which has needed by QuickApp but restricted by security limit
Goffi <goffi@goffi.org>
parents:
743
diff
changeset
|
475 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
476 def getAtom( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
477 self, pub_jid, max_items, extra_dict, extra_comments_dict, request, profile |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
478 ): |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
479 """ |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
480 |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
481 @param pub_jid (jid.JID): publisher JID |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
482 @param max_items(int): maximum number of item to get, C.NO_LIMIT for no limit |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
483 @param extra_dict (dict): extra configuration for initial items only |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
484 @param extra_comments_dict (dict): extra configuration for comments only |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
485 @param request: HTTP request |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
486 @param profile |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
487 """ |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
488 |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
489 def gotItems(data): |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
490 # Generate a clean atom feed with uri linking to this blog |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
491 # from microblog data |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
492 items, metadata = data |
1156
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1144
diff
changeset
|
493 items = [data_format.deserialise(i) for i in items] |
1216 | 494 feed_elt = domish.Element((NS_ATOM, "feed")) |
495 title = _("{user}'s blog").format(user=profile) | |
496 feed_elt.addElement("title", content=title) | |
884
763da94ba28b
blog (atom): base_url_ext can now only specify scheme, or netloc, or path, it will be used to complete data coming from request's path
Goffi <goffi@goffi.org>
parents:
882
diff
changeset
|
497 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
498 base_blog_url = self.host.getExtBaseURL( |
1216 | 499 request, "blog/{user}".format(user=profile) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
500 ) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
501 |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
502 # atom link |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
503 link_feed_elt = feed_elt.addElement("link") |
1216 | 504 link_feed_elt["href"] = "{base}/atom.xml".format(base=base_blog_url) |
505 link_feed_elt["type"] = "application/atom+xml" | |
506 link_feed_elt["rel"] = "self" | |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
507 |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
508 # blog link |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
509 link_blog_elt = feed_elt.addElement("link") |
1216 | 510 link_blog_elt["rel"] = "alternate" |
511 link_blog_elt["type"] = "text/html" | |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
512 link_blog_elt["href"] = base_blog_url |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
513 |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
514 # blog link XMPP uri |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
515 blog_xmpp_uri = metadata["uri"] |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
516 link_blog_elt = feed_elt.addElement("link") |
1216 | 517 link_blog_elt["rel"] = "alternate" |
518 link_blog_elt["type"] = "application/atom+xml" | |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
519 link_blog_elt["href"] = blog_xmpp_uri |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
520 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
521 feed_elt.addElement("id", content=_quote(blog_xmpp_uri)) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
522 updated_unix = max([float(item["updated"]) for item in items]) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
523 updated_dt = datetime.fromtimestamp(updated_unix) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
524 feed_elt.addElement( |
1216 | 525 "updated", content="{}Z".format(updated_dt.isoformat("T")) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
526 ) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
527 |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
528 for item in items: |
1216 | 529 entry_elt = feed_elt.addElement("entry") |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
530 |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
531 # Title |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
532 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
533 title = item["title"] |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
534 except KeyError: |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
535 # for microblog (without title), we use an abstract of content as title |
1216 | 536 title = "{}…".format(" ".join(item["content"][:70].split())) |
537 entry_elt.addElement("title", content=title) | |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
538 |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
539 # HTTP link |
1216 | 540 http_link_elt = entry_elt.addElement("link") |
541 http_link_elt["rel"] = "alternate" | |
542 http_link_elt["type"] = "text/html" | |
543 http_link_elt["href"] = "{base}/{quoted_id}".format( | |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
544 base=base_blog_url, quoted_id=_quote(item["id"]) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
545 ) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
546 # XMPP link |
1216 | 547 xmpp_link_elt = entry_elt.addElement("link") |
548 xmpp_link_elt["rel"] = "alternate" | |
549 xmpp_link_elt["type"] = "application/atom+xml" | |
550 xmpp_link_elt["href"] = "{blog_uri};item={item_id}".format( | |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
551 blog_uri=blog_xmpp_uri, item_id=item["id"] |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
552 ) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
553 |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
554 # date metadata |
1216 | 555 entry_elt.addElement("id", content=item["atom_id"]) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
556 updated = datetime.fromtimestamp(float(item["updated"])) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
557 entry_elt.addElement( |
1216 | 558 "updated", content="{}Z".format(updated.isoformat("T")) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
559 ) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
560 published = datetime.fromtimestamp(float(item["published"])) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
561 entry_elt.addElement( |
1216 | 562 "published", content="{}Z".format(published.isoformat("T")) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
563 ) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
564 |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
565 # author metadata |
1216 | 566 author_elt = entry_elt.addElement("author") |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
567 author_elt.addElement("name", content=item.get("author", profile)) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
568 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
569 author_elt.addElement( |
1216 | 570 "uri", content="xmpp:{}".format(item["author_jid"]) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
571 ) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
572 except KeyError: |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
573 pass |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
574 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
575 author_elt.addElement("email", content=item["author_email"]) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
576 except KeyError: |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
577 pass |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
578 |
899
bc3a3e804a7a
blog(atom): added categories (tags) in Atom feed
Goffi <goffi@goffi.org>
parents:
898
diff
changeset
|
579 # categories |
1156
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1144
diff
changeset
|
580 for tag in item.get('tags', []): |
1216 | 581 category_elt = entry_elt.addElement("category") |
899
bc3a3e804a7a
blog(atom): added categories (tags) in Atom feed
Goffi <goffi@goffi.org>
parents:
898
diff
changeset
|
582 category_elt["term"] = tag |
bc3a3e804a7a
blog(atom): added categories (tags) in Atom feed
Goffi <goffi@goffi.org>
parents:
898
diff
changeset
|
583 |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
584 # content |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
585 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
586 content_xhtml = item["content_xhtml"] |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
587 except KeyError: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
588 content_elt = entry_elt.addElement("content", content="content") |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
589 content_elt["type"] = "text" |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
590 else: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
591 content_elt = entry_elt.addElement("content") |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
592 content_elt["type"] = "xhtml" |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
593 content_elt.addChild( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
594 xml_tools.ElementParser()(content_xhtml, namespace=C.NS_XHTML) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
595 ) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
596 |
1216 | 597 atom_feed = '<?xml version="1.0" encoding="utf-8"?>\n{}'.format( |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
598 feed_elt.toXml() |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
599 ) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
600 self.renderAtomFeed(atom_feed, request), |
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
601 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
602 self.host.bridge.mbGet( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
603 pub_jid.userhost(), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
604 "", |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
605 max_items, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
606 [], |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
607 extra_dict, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
608 C.SERVICE_PROFILE, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
609 callback=gotItems, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
610 ) |
879
2e0e9cf9efb4
blog (atom feed): fixed atom handling:
Goffi <goffi@goffi.org>
parents:
855
diff
changeset
|
611 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
612 ## rendering |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
613 |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
614 def _updateDict(self, value, dict_, key): |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
615 dict_[key] = value |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
616 |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
617 def _getImageParams(self, options, key, default, alt): |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
618 """regexp from http://answers.oreilly.com/topic/280-how-to-validate-urls-with-regular-expressions/""" |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
619 url = options[key] if key in options else "" |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
620 regexp = ( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
621 r"^(https?|ftp)://[a-z0-9-]+(\.[a-z0-9-]+)+(/[\w-]+)*/[\w-]+\.(gif|png|jpg)$" |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
622 ) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
623 if re.match(regexp, url): |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
624 url = url |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
625 else: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
626 url = default |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
627 return BlogImage(url, alt) |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
628 |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
629 def renderError(self, failure, request, pub_jid): |
891
14e611e38b67
server (blog): set HTTP status code to 500 on renderError
Goffi <goffi@goffi.org>
parents:
890
diff
changeset
|
630 request.setResponseCode(500) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
631 request.write( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
632 self.useTemplate( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
633 request, "static_blog_error", {"message": "Can't access requested data"} |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
634 ) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
635 ) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
636 request.finish() |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
637 |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
638 def renderHTML(self, items, metadata, request, pub_jid, profile): |
441
63017904c4d4
server_side: static blog retrieve page's title, meta description and keywords from the parameters
souliane <souliane@mailoo.org>
parents:
436
diff
changeset
|
639 """Retrieve the user parameters before actually rendering the static blog |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
487
diff
changeset
|
640 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
641 @param items(list[tuple(dict, list)]): same as in self._renderHTML |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
642 @param metadata(dict): original node metadata |
389
2d782349b88a
server_side: display blog comments when you click on a main item header or title
souliane <souliane@mailoo.org>
parents:
388
diff
changeset
|
643 @param request: HTTP request |
727
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
644 @param pub_jid (JID): publisher JID |
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
645 @param profile (unicode): %(doc_profile)s |
389
2d782349b88a
server_side: display blog comments when you click on a main item header or title
souliane <souliane@mailoo.org>
parents:
388
diff
changeset
|
646 """ |
441
63017904c4d4
server_side: static blog retrieve page's title, meta description and keywords from the parameters
souliane <souliane@mailoo.org>
parents:
436
diff
changeset
|
647 d_list = [] |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
648 options = {} |
441
63017904c4d4
server_side: static blog retrieve page's title, meta description and keywords from the parameters
souliane <souliane@mailoo.org>
parents:
436
diff
changeset
|
649 |
950
67a59552f3e3
server (blog): fixed avatars handling, there is now a well-known URL to SERVICE_PROFILE cache
Goffi <goffi@goffi.org>
parents:
916
diff
changeset
|
650 d = self.getAvatarURL(pub_jid, request) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
651 d.addCallback(self._updateDict, options, "avatar") |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
652 d.addErrback(self.renderError, request, pub_jid) |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
653 d_list.append(d) |
441
63017904c4d4
server_side: static blog retrieve page's title, meta description and keywords from the parameters
souliane <souliane@mailoo.org>
parents:
436
diff
changeset
|
654 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
655 for param_name in PARAMS_TO_GET: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
656 d = defer.Deferred() |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
657 self.host.bridge.asyncGetParamA( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
658 param_name, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
659 C.STATIC_BLOG_KEY, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
660 "value", |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
661 C.SERVER_SECURITY_LIMIT, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
662 profile, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
663 callback=d.callback, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
664 errback=d.errback, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
665 ) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
666 d.addCallback(self._updateDict, options, param_name) |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
667 d.addErrback(self.renderError, request, pub_jid) |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
668 d_list.append(d) |
441
63017904c4d4
server_side: static blog retrieve page's title, meta description and keywords from the parameters
souliane <souliane@mailoo.org>
parents:
436
diff
changeset
|
669 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
670 dlist_d = defer.DeferredList(d_list) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
671 dlist_d.addCallback( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
672 lambda dummy: self._renderHTML(items, metadata, options, request, pub_jid) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
673 ) |
388
893451e35686
server_side: display blog banner if it is defined
souliane <souliane@mailoo.org>
parents:
375
diff
changeset
|
674 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
675 def _renderHTML(self, items, metadata, options, request, pub_jid): |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
676 """Actually render the static blog. |
746
25984ca4aef2
server side: special handling of Connection/JabberID and Connection/autoconnect parameter which has needed by QuickApp but restricted by security limit
Goffi <goffi@goffi.org>
parents:
743
diff
changeset
|
677 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
678 If mblog_data is a list of dict, we are missing the comments items so we just |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
679 display the main items. If mblog_data is a list of couple, each couple is |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
680 associating a main item data with the list of its comments, so we render all. |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
681 @param items(list[tuple(dict, list)]): list of 2-tuple with |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
682 - item(dict): item microblog data |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
683 - comments_list(list[tuple]): list of 5-tuple with |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
684 - service (unicode): pubsub service where the comments node is |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
685 - node (unicode): comments node |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
686 - failure (unicode): empty in case of success, else error message |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
687 - comments(list[dict]): list of microblog data |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
688 - comments_metadata(dict): metadata of the comment node |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
689 @param metadata(dict): original node metadata |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
690 @param options: dict defining the blog's parameters |
388
893451e35686
server_side: display blog banner if it is defined
souliane <souliane@mailoo.org>
parents:
375
diff
changeset
|
691 @param request: the HTTP request |
727
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
692 @param pub_jid (JID): publisher JID |
388
893451e35686
server_side: display blog banner if it is defined
souliane <souliane@mailoo.org>
parents:
375
diff
changeset
|
693 """ |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
694 if not isinstance(options, dict): |
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
695 options = {} |
727
3bd097380da7
server side (blog): fixes displaying the avatar
souliane <souliane@mailoo.org>
parents:
726
diff
changeset
|
696 user = sanitizeHtml(pub_jid.user) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
697 base_url = os.path.join("/blog/", user) |
441
63017904c4d4
server_side: static blog retrieve page's title, meta description and keywords from the parameters
souliane <souliane@mailoo.org>
parents:
436
diff
changeset
|
698 |
483
0bbbef1d53a8
server side (blog): use user's avatar a the blog's favicon + small refactorization
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
699 def getOption(key): |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
700 return sanitizeHtml(options[key]) if key in options else "" |
441
63017904c4d4
server_side: static blog retrieve page's title, meta description and keywords from the parameters
souliane <souliane@mailoo.org>
parents:
436
diff
changeset
|
701 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
702 avatar = os.path.normpath("/{}".format(getOption("avatar"))) |
702
d94feb0d849e
server_side: give a better look to the static blog
souliane <souliane@mailoo.org>
parents:
694
diff
changeset
|
703 title = getOption(C.STATIC_BLOG_PARAM_TITLE) or user |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
704 query_data = _urlencode(getDefaultQueryData(request)).decode("utf-8") |
880
ccbad50e1426
blog, themes(default): added <link> element referencing xmpp: uri of the item
Goffi <goffi@goffi.org>
parents:
879
diff
changeset
|
705 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
706 xmpp_uri = metadata["uri"] |
880
ccbad50e1426
blog, themes(default): added <link> element referencing xmpp: uri of the item
Goffi <goffi@goffi.org>
parents:
879
diff
changeset
|
707 if len(items) == 1: |
ccbad50e1426
blog, themes(default): added <link> element referencing xmpp: uri of the item
Goffi <goffi@goffi.org>
parents:
879
diff
changeset
|
708 # FIXME: that's really not a good way to get item id |
ccbad50e1426
blog, themes(default): added <link> element referencing xmpp: uri of the item
Goffi <goffi@goffi.org>
parents:
879
diff
changeset
|
709 # this must be changed after static blog refactorisation |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
710 item_id = items[0][0]["id"] |
1216 | 711 xmpp_uri += ";item={}".format(_quote(item_id)) |
880
ccbad50e1426
blog, themes(default): added <link> element referencing xmpp: uri of the item
Goffi <goffi@goffi.org>
parents:
879
diff
changeset
|
712 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
713 data = { |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
714 "url_base": base_url, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
715 "xmpp_uri": xmpp_uri, |
1216 | 716 "url_query": "?{}".format(query_data) if query_data else "", |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
717 "keywords": getOption(C.STATIC_BLOG_PARAM_KEYWORDS), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
718 "description": getOption(C.STATIC_BLOG_PARAM_DESCRIPTION), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
719 "title": title, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
720 "favicon": avatar, |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
721 "banner_img": self._getImageParams( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
722 options, C.STATIC_BLOG_PARAM_BANNER, avatar, title |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
723 ), |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
724 } |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
487
diff
changeset
|
725 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
726 data["navlinks"] = NavigationLinks(request, items, metadata, base_url) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
727 data["messages"] = [] |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
728 for item in items: |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
729 item, comments_list = item |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
730 comments, comments_count = [], 0 |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
731 for node_comments in comments_list: |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
732 comments.extend(node_comments[3]) |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
733 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
734 comments_count += int(node_comments[4]["rsm_count"]) |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
735 except KeyError: |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
736 pass |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
737 data["messages"].append( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
738 BlogMessage(request, base_url, item, comments, comments_count) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
739 ) |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
487
diff
changeset
|
740 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
741 request.write(self.useTemplate(request, "static_blog", data)) |
10 | 742 request.finish() |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
229
diff
changeset
|
743 |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
744 def renderAtomFeed(self, feed, request): |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
745 request.write(feed.encode("utf-8")) |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
746 request.finish() |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
747 |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
748 |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
749 class NavigationLinks(object): |
880
ccbad50e1426
blog, themes(default): added <link> element referencing xmpp: uri of the item
Goffi <goffi@goffi.org>
parents:
879
diff
changeset
|
750 def __init__(self, request, items, metadata, base_url): |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
751 """Build the navigation links. |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
752 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
753 @param items (list): list of items |
880
ccbad50e1426
blog, themes(default): added <link> element referencing xmpp: uri of the item
Goffi <goffi@goffi.org>
parents:
879
diff
changeset
|
754 @param metadata (dict): rsm data |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
755 @param base_url (unicode): the base URL for this user's blog |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
756 @return: dict |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
757 """ |
880
ccbad50e1426
blog, themes(default): added <link> element referencing xmpp: uri of the item
Goffi <goffi@goffi.org>
parents:
879
diff
changeset
|
758 # FIXME: this code must be refactorized, it is fragile |
ccbad50e1426
blog, themes(default): added <link> element referencing xmpp: uri of the item
Goffi <goffi@goffi.org>
parents:
879
diff
changeset
|
759 # and difficult to maintain |
ccbad50e1426
blog, themes(default): added <link> element referencing xmpp: uri of the item
Goffi <goffi@goffi.org>
parents:
879
diff
changeset
|
760 |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
761 # query data which must be present in all links |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
762 default_query_data = getDefaultQueryData(request) |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
763 |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
764 # which links we need to display |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
765 if request.display_single: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
766 links = ("later_message", "older_message") |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
767 # key must exist when using the template |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
768 self.later_messages = self.older_messages = "" |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
769 else: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
770 links = ("later_messages", "older_messages") |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
771 self.later_message = self.older_message = "" |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
772 |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
773 # now we set the links according to RSM |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
774 for key in links: |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
775 query_data = default_query_data.copy() |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
776 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
777 if key.startswith("later_message"): |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
778 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
779 index = int(metadata["rsm_index"]) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
780 except (KeyError, ValueError): |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
781 pass |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
782 else: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
783 if index == 0: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
784 # we don't show this link on first page |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
785 setattr(self, key, "") |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
786 continue |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
787 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
788 query_data["before"] = metadata["rsm_first"].encode("utf-8") |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
789 except KeyError: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
790 pass |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
791 else: |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
792 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
793 index = int(metadata["rsm_index"]) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
794 count = int(metadata.get("rsm_count")) |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
795 except (KeyError, ValueError): |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
796 # XXX: if we don't have index or count, we can't know if we |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
797 # are on the last page or not |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
798 pass |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
799 else: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
800 # if we have index, we don't show the after link |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
801 # on the last page |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
802 if index + len(items) >= count: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
803 setattr(self, key, "") |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
804 continue |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
805 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
806 query_data["after"] = metadata["rsm_last"].encode("utf-8") |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
807 except KeyError: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
808 pass |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
809 |
708
e9a6cbb924e6
server_side: fixes static blog navigation links
souliane <souliane@mailoo.org>
parents:
705
diff
changeset
|
810 if request.display_single: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
811 query_data["max"] = 1 |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
812 |
893
298fbe562060
blog: escape "&" when encoding URL, so they can be used without escaping in the HTML template
Goffi <goffi@goffi.org>
parents:
892
diff
changeset
|
813 link = "{}?{}".format(base_url, _urlencode(query_data)) |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
814 setattr(self, key, BlogLink(link, key, key.replace("_", " "))) |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
815 |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
816 |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
817 class BlogImage(object): |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
818 def __init__(self, url_, alt): |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
819 self.url = url_ |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
820 self.alt = alt |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
821 |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
822 |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
823 class BlogLink(object): |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
824 def __init__(self, url_, style, text): |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
825 self.url = url_ |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
826 self.style = style |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
827 self.text = text |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
828 |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
829 |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
830 class BlogMessage(object): |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
831 def __init__(self, request, base_url, entry, comments=None, comments_count=0): |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
832 """ |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
833 |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
834 @param request: HTTP request |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
835 @param base_url (unicode): the base URL |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
836 @param entry(dict): item microblog data |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
837 @param comments(list[dict]): list of microblog data |
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
838 @param comments_count (int): total number of comments |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
839 """ |
854 | 840 if comments is None: |
841 comments = [] | |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
842 timestamp = float(entry.get("published", 0)) |
746
25984ca4aef2
server side: special handling of Connection/JabberID and Connection/autoconnect parameter which has needed by QuickApp but restricted by security limit
Goffi <goffi@goffi.org>
parents:
743
diff
changeset
|
843 |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
844 # FIXME: for now we assume that the comments' depth is only 1 |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
845 is_comment = not entry.get("comments", False) |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
846 |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
847 self.date = datetime.fromtimestamp(timestamp) |
725
c1abaa91a121
server (blog): update to the new mechanism in XEP-0277 + improvement:
souliane <souliane@mailoo.org>
parents:
717
diff
changeset
|
848 self.type = "comment" if is_comment else "main_item" |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
849 self.style = "mblog_comment" if is_comment else "" |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
850 self.content = self.getText(entry, "content") |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
851 |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
852 if is_comment: |
1216 | 853 self.author = _("from {}").format(entry["author"]) |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
854 else: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
855 self.author = " " |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
856 self.url = "{}/{}".format(base_url, _quote(entry["id"])) |
828
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
857 query_data = getDefaultQueryData(request) |
0c824ebe9d87
server (blog): implemented tag/category filtering:
Goffi <goffi@goffi.org>
parents:
827
diff
changeset
|
858 if query_data: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
859 self.url += "?{}".format(_urlencode(query_data)) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
860 self.title = self.getText(entry, "title") |
1156
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1144
diff
changeset
|
861 self.tags = [sanitizeHtml(tag) for tag in entry.get('tags', [])] |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
862 |
1216 | 863 count_text = lambda count: D_("comments") if count > 1 else D_("comment") |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
864 |
1216 | 865 self.comments_text = "{} {}".format( |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
866 comments_count, count_text(comments_count) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
867 ) |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
868 |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
869 delta = comments_count - len(comments) |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
870 if request.display_single and delta > 0: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
871 prev_url = "{}?{}".format( |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
872 self.url, _urlencode({"comments_max": comments_count}) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
873 ) |
1216 | 874 prev_text = D_("show {count} previous {comments}").format( |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
875 count=delta, comments=count_text(delta) |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
876 ) |
712
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
877 self.all_comments_link = BlogLink(prev_url, "comments_link", prev_text) |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
878 |
bf562fb9c273
server_side: use Jinja2 template engine for static blog
souliane <souliane@mailoo.org>
parents:
708
diff
changeset
|
879 if comments: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
880 self.comments = [ |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
881 BlogMessage(request, base_url, comment) for comment in comments |
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
882 ] |
704
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
883 |
5319110a862c
server_side: static blog uses the default template
souliane <souliane@mailoo.org>
parents:
702
diff
changeset
|
884 def getText(self, entry, key): |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
885 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
886 xhtml = entry["{}_xhtml".format(key)] |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
887 except KeyError: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
888 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1054
diff
changeset
|
889 processor = addURLToText if key.startswith("content") else sanitizeHtml |
823
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
890 return convertNewLinesToXHTML(processor(entry[key])) |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
891 except KeyError: |
027139763511
server (blog): cleaning & improvments:
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
892 return None |
854 | 893 else: |
894 # FIXME: empty <div /> elements provoke rendering issue | |
895 # this regex is a temporary workadound, need more investigation | |
896 xhtml = re_strip_empty_div.sub("", xhtml) | |
897 return fixXHTMLLinks(xhtml) |