Mercurial > libervia-web
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_)) |