Mercurial > libervia-web
annotate libervia/server/blog.py @ 1346:cda5537c71d6
browser (photos/album): videos integrations:
videos can now be added to an album, the alternative media player is then used to display
them. Slides options are used to remove pagination and slidebar from slideshow (they don't
play well with media player), and video are reset when its slide is exited.
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 25 Aug 2020 08:31:56 +0200 |
parents | f511f8fbbf8a |
children | 822bd0139769 |
rev | line source |
---|---|
1239 | 1 #!/usr/bin/env python3 |
2 | |
10 | 3 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
331
diff
changeset
|
4 # Libervia: a Salut à Toi frontend |
1237 | 5 # Copyright (C) 2011-2020 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): |
1238
f55056bb67d4
replaced former use of "dummy" by "__"
Goffi <goffi@goffi.org>
parents:
1237
diff
changeset
|
360 __, rsm_metadata = result |
823
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( |
1238
f55056bb67d4
replaced former use of "dummy" by "__"
Goffi <goffi@goffi.org>
parents:
1237
diff
changeset
|
672 lambda __: self._renderHTML(items, metadata, options, request, pub_jid) |
1113
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) |