annotate libervia/server/pages_tools.py @ 1128:6414fd795df4

server, pages: multi-sites refactoring: Libervia is now handling external sites (i.e. other sites than Libervia official site). The external site are declared in sites_path_public_dict (in [DEFAULT] section) which is read by template engine, then they are linked to virtual host with vhosts_dict (linking host name to site name) in [libervia] section. Sites are only instanced once, so adding an alias is just a matter of mapping the alias host name in vhosts_dict with the same site name. menu_json and url_redirections_dict can now accept keys named after site name, which will be linked to the data for the site. Data for default site can still be keyed at first level. Libervia official pages are added to external site (if pages are not overriden), allowing to call pages of the framework and to have facilities like login handling. Deprecated url_redirections_profile option has been removed.
author Goffi <goffi@goffi.org>
date Fri, 14 Sep 2018 21:41:28 +0200
parents 28e3eb3bb217
children 2af117bfe6cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1068
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/python
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
3
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # Libervia: a Salut à Toi frontend
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
5 # Copyright (C) 2011-2018 Jérôme Poisson <goffi@goffi.org>
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
6
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
11
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
16
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
19
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 """Helper methods for common operations on pages"""
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
21
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from sat.core.i18n import _
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from libervia.server.constants import Const as C
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 from twisted.internet import defer
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
25 from sat.core.log import getLogger
1113
cdd389ef97bc server: code style reformatting using black
Goffi <goffi@goffi.org>
parents: 1068
diff changeset
26
1068
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
27 log = getLogger(__name__)
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
28 from sat.tools.common import data_objects
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
29
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
30
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 def commentsDataToObjects(comments_data):
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
32 return data_objects.BlogItems(comments_data)
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
33
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
34
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
35 def retrieveComments(self, service, node, profile, pass_exceptions=True):
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 """Retrieve comments from server and convert them to data objects
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
37
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 @param service(unicode): service holding the comments
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 @param node(unicode): node to retrieve
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 @param profile(unicode): profile of the user willing to find comments
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 @param pass_exceptions(bool): if True bridge exceptions will be ignored but logged
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 else exception will be raised
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 """
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 try:
1113
cdd389ef97bc server: code style reformatting using black
Goffi <goffi@goffi.org>
parents: 1068
diff changeset
45 d = self.host.bridgeCall(u"mbGet", service, node, C.NO_LIMIT, [], {}, profile)
1068
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 except Exception as e:
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
47 if not pass_exceptions:
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
48 raise e
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 else:
1113
cdd389ef97bc server: code style reformatting using black
Goffi <goffi@goffi.org>
parents: 1068
diff changeset
50 log.warning(
cdd389ef97bc server: code style reformatting using black
Goffi <goffi@goffi.org>
parents: 1068
diff changeset
51 _(u"Can't get comments at {node} (service: {service}): {msg}").format(
cdd389ef97bc server: code style reformatting using black
Goffi <goffi@goffi.org>
parents: 1068
diff changeset
52 service=service, node=node, msg=e
cdd389ef97bc server: code style reformatting using black
Goffi <goffi@goffi.org>
parents: 1068
diff changeset
53 )
cdd389ef97bc server: code style reformatting using black
Goffi <goffi@goffi.org>
parents: 1068
diff changeset
54 )
1068
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 return defer.succeed([])
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
56
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
57 d.addCallback(commentsDataToObjects)
5e809a49971c pages: new pages_tools module:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 return d