annotate src/pages/g/page_meta.py @ 952:0f309eeef26d

Added robots.txt: robots.txt is added currently in src/browser/public/robots.txt because that's what is served at root with current Pyjamas implementation, this should change when Pyjamas will be removed (for Libervia 0.8). Current version uses "Allow" which is not recognized by all crawlers, but major ones should do.
author Goffi <goffi@goffi.org>
date Thu, 22 Jun 2017 09:09:02 +0200
parents 43df2bf38787
children 5cdd77190a3b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
930
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python2.7
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
3
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
4 from libervia.server.constants import Const as C
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
5 from sat.core.i18n import _
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
6 from twisted.internet import defer
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
7 from libervia.server import session_iface
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
8 from sat.core.log import getLogger
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
9 log = getLogger('pages/g')
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
10
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
11 access = C.PAGES_ACCESS_PUBLIC
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
12 template = u"invitation/welcome.html"
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
13
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
14
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
15 @defer.inlineCallbacks
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
16 def parse_url(self, request):
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
17 """check invitation id in URL and start session if needed
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
18
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
19 if a session already exists for an other guest/profile, it will be purged
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
20 """
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
21 try:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
22 invitation_id = self.nextPath(request)
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
23 except IndexError:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
24 self.pageError(request)
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
25
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
26 sat_session, guest_session = self.host.getSessionData(request, session_iface.ISATSession, session_iface.ISATGuestSession)
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
27 current_id = guest_session.id
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
28
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
29 if current_id is not None and current_id != invitation_id:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
30 log.info(_(u'killing guest session [{old_id}] because it is connecting with an other ID [{new_id}]').format(
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
31 old_id = current_id,
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
32 new_id = invitation_id))
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
33 self.host.purgeSession(request)
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
34 sat_session, guest_session = self.host.getSessionData(request, session_iface.ISATSession, session_iface.ISATGuestSession)
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
35 current_id = None # FIXME: id non mis à zéro ici
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
36 profile = None
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
37
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
38 profile = sat_session.profile
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
39 if profile is not None and current_id is None:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
40 log.info(_(u'killing current profile session [{profile}] because a guest id is used').format(
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
41 profile = profile))
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
42 self.host.purgeSession(request)
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
43 sat_session, guest_session = self.host.getSessionData(request, session_iface.ISATSession, session_iface.ISATGuestSession)
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
44 profile = None
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
45
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
46 if current_id is None:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
47 log.debug(_(u"checking invitation [{id}]").format(id=invitation_id))
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
48 try:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
49 data = yield self.host.bridge.invitationGet(invitation_id)
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
50 except Exception:
938
9be057e23ce6 pages (g): use new constants
Goffi <goffi@goffi.org>
parents: 930
diff changeset
51 self.pageError(request, C.HTTP_UNAUTHORIZED)
930
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
52 else:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
53 guest_session.id = invitation_id
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
54 guest_session.data = data
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
55 else:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
56 data = guest_session.data
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
57
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
58 if profile is None:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
59 log.debug(_(u"connecting profile [{}]").format(profile))
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
60 # we need to connect the profile
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
61 profile = data['guest_profile']
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
62 password = data['password']
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
63 try:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
64 yield self.host.bridge.connect(profile, password, {})
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
65 except Exception as e:
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
66 log.warning(_(u"Can't connect profile: {msg}").format(
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
67 msg=e))
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
68 # FIXME: no good error code correspond
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
69 # maybe use a custom one?
938
9be057e23ce6 pages (g): use new constants
Goffi <goffi@goffi.org>
parents: 930
diff changeset
70 self.pageError(request, code=C.HTTP_SERVICE_UNAVAILABLE)
930
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
71
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
72 log.info(_(u"guest session started, connected with profile [{profile}]".format(
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
73 profile = profile)))
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
74 sat_session.profile = profile
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
75
941
aba7208d9d50 pages (g): guest name is added to template data
Goffi <goffi@goffi.org>
parents: 938
diff changeset
76 # we copy data useful in templates
aba7208d9d50 pages (g): guest name is added to template data
Goffi <goffi@goffi.org>
parents: 938
diff changeset
77 template_data = request.template_data
951
43df2bf38787 pages (g): use language in data for locale
Goffi <goffi@goffi.org>
parents: 945
diff changeset
78 if u'name' in data:
43df2bf38787 pages (g): use language in data for locale
Goffi <goffi@goffi.org>
parents: 945
diff changeset
79 template_data[u'name'] = data[u'name']
43df2bf38787 pages (g): use language in data for locale
Goffi <goffi@goffi.org>
parents: 945
diff changeset
80 if u'language' in data:
43df2bf38787 pages (g): use language in data for locale
Goffi <goffi@goffi.org>
parents: 945
diff changeset
81 template_data[u'locale'] = data[u'language']
941
aba7208d9d50 pages (g): guest name is added to template data
Goffi <goffi@goffi.org>
parents: 938
diff changeset
82
930
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
83
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
84 def prepare_render(self, request):
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
85 template_data = request.template_data
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
86 guest_session = self.host.getSessionData(request, session_iface.ISATGuestSession)
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
87 main_uri = guest_session.data.get('main_uri')
b5490fa65348 pages (g): added g (for guest) page to handle invitations
Goffi <goffi@goffi.org>
parents:
diff changeset
88 template_data[u"include_url"] = self.getPagePathFromURI(main_uri)