comparison src/pages/events/rsvp/page_meta.py @ 1111:4d1c4bd4931a

pages (events): added root, admin, new, rsvp and view pages
author Goffi <goffi@goffi.org>
date Thu, 21 Jun 2018 01:19:57 +0200
parents
children cdd389ef97bc
comparison
equal deleted inserted replaced
1110:045e8bdaed4f 1111:4d1c4bd4931a
1 #!/usr/bin/env python2.7
2 # -*- coding: utf-8 -*-
3
4 from libervia.server.constants import Const as C
5 from sat.core.i18n import _
6 from twisted.internet import defer
7 from twisted.words.protocols.jabber import jid
8 from sat.core.log import getLogger
9 from sat.tools.common.template import safe
10 import time
11 import cgi
12 """creation of new events"""
13
14 name = u'event_rsvp'
15 access = C.PAGES_ACCESS_PROFILE
16 template = u"event/invitation.html"
17 log = getLogger(u'pages/' + name)
18
19
20 def parse_url(self, request):
21 self.getPathArgs(request, ("event_service", "event_node", "event_id"), min_args=2, event_service="@jid", event_id='')
22
23 @defer.inlineCallbacks
24 def prepare_render(self, request):
25 template_data = request.template_data
26 data = self.getRData(request)
27 profile = self.getProfile(request)
28
29 ## Event ##
30
31 event_service = data['event_service']
32 event_node = data[u'event_node']
33 event_id = data[u'event_id']
34 event_timestamp, event_data = yield self.host.bridgeCall(u"eventGet",
35 event_service.userhost() if event_service else '',
36 event_node,
37 event_id,
38 profile)
39 try:
40 background_image = event_data.pop('background-image')
41 except KeyError:
42 pass
43 else:
44 template_data['dynamic_style'] = safe(u"""
45 html {
46 background-image: url("%s");
47 background-size: 15em;
48 }
49 """ % cgi.escape(background_image, True))
50 template_data['event'] = event_data
51 event_invitee_data = yield self.host.bridgeCall(
52 u"eventInviteeGet",
53 event_data['invitees_service'],
54 event_data['invitees_node'],
55 profile)
56 template_data['invitee'] = event_invitee_data
57 template_data['days_left'] = int((event_timestamp - time.time()) / (60 * 60 * 24))
58
59 ## Blog ##
60
61 data[u'service'] = jid.JID(event_data[u'blog_service'])
62 data[u'node'] = event_data[u'blog_node']
63 data[u'allow_commenting'] = u'simple'
64
65 # we now need blog items, using blog common page
66 # this will fill the "items" template data
67 blog_page = self.getPageByName(u'blog_view')
68 yield blog_page.prepare_render(self, request)
69
70 @defer.inlineCallbacks
71 def on_data_post(self, request):
72 type_ = self.getPostedData(request, u'type')
73 if type_ == u'comment':
74 blog_page = self.getPageByName(u'blog_view')
75 yield blog_page.on_data_post(self, request)
76 elif type_ == u'attendance':
77 profile = self.getProfile(request)
78 service, node, attend, guests = self.getPostedData(request, (u'service', u'node', u'attend', u'guests'))
79 data = {u'attend': attend,
80 u'guests': guests}
81 yield self.host.bridgeCall(u"eventInviteeSet", service, node, data, profile)
82 else:
83 log.warning(_(u"Unhandled data type: {}").format(type_))