Mercurial > libervia-web
view libervia/web/pages/events/rsvp/page_meta.py @ 1590:1d464c72ac12
pages (events): fix URL generation for RSVP pages.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 10 Dec 2023 11:01:19 +0100 |
parents | 4ecae80d6d39 |
children |
line wrap: on
line source
#!/usr/bin/env python3 from libervia.web.server.constants import Const as C from libervia.backend.core.i18n import _, D_ from twisted.internet import defer from twisted.words.protocols.jabber import jid from libervia.backend.core.log import getLogger from libervia.backend.tools.common.template import safe import time import html """creation of new events""" name = "event_rsvp" label = D_("Event Invitation") access = C.PAGES_ACCESS_PROFILE template = "event/invitation.html" log = getLogger(__name__) def parse_url(self, request): self.get_path_args( request, ("event_service", "event_node", "event_id"), min_args=2, event_service="@jid", event_id="", ) async def prepare_render(self, request): template_data = request.template_data data = self.get_r_data(request) profile = self.get_profile(request) ## Event ## event_service = data["event_service"] event_node = data["event_node"] event_id = data["event_id"] event_timestamp, event_data = await self.host.bridge_call( "events_get", event_service.userhost() if event_service else "", event_node, [event_id], "", profile, ) try: background_image = event_data.pop("background-image") except KeyError: pass else: template_data["dynamic_style"] = safe( """ html { background-image: url("%s"); background-size: 15em; } """ % html.escape(background_image, True) ) template_data["event"] = event_data event_invitee_data = await self.host.bridge_call( "event_invitee_get", event_data["invitees_service"], event_data["invitees_node"], [], "", profile, ) template_data["invitee"] = event_invitee_data template_data["days_left"] = int((event_timestamp - time.time()) / (60 * 60 * 24)) ## Blog ## data["service"] = jid.JID(event_data["blog_service"]) data["node"] = event_data["blog_node"] data["allow_commenting"] = "simple" # we now need blog items, using blog common page # this will fill the "items" template data blog_page = self.get_page_by_name("blog_view") await blog_page.prepare_render(self, request) async def on_data_post(self, request): type_ = self.get_posted_data(request, "type") if type_ == "comment": blog_page = self.get_page_by_name("blog_view") await blog_page.on_data_post(self, request) elif type_ == "attendance": profile = self.get_profile(request) service, node, attend, guests = self.get_posted_data( request, ("service", "node", "attend", "guests") ) data = {"attend": attend, "guests": guests} await self.host.bridge_call("event_invitee_set", service, node, data, profile) else: log.warning(_("Unhandled data type: {}").format(type_))