Mercurial > libervia-web
diff libervia/web/pages/blog/page_meta.py @ 1518:eb00d593801d
refactoring: rename `libervia` to `libervia.web` + update imports following backend changes
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 02 Jun 2023 16:49:28 +0200 |
parents | libervia/pages/blog/page_meta.py@106bae41f5c8 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libervia/web/pages/blog/page_meta.py Fri Jun 02 16:49:28 2023 +0200 @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 + +from libervia.backend.core.i18n import _ +from libervia.web.server.constants import Const as C +from twisted.words.protocols.jabber import jid +from twisted.internet import defer +from libervia.web.server import session_iface +from libervia.backend.tools.common import data_format +from libervia.backend.core.log import getLogger + +log = getLogger(__name__) + +name = "blog" +access = C.PAGES_ACCESS_PUBLIC +template = "blog/discover.html" + + +async def prepare_render(self, request): + profile = self.get_profile(request) + template_data = request.template_data + if profile is not None: + __, entities_own, entities_roster = await self.host.bridge_call( + "disco_find_by_features", + [], + [("pubsub", "pep")], + True, + False, + True, + True, + True, + profile, + ) + entities = template_data["disco_entities"] = ( + list(entities_own.keys()) + list(entities_roster.keys()) + ) + entities_url = template_data["entities_url"] = {} + identities = self.host.get_session_data( + request, session_iface.IWebSession + ).identities + d_list = {} + for entity_jid_s in entities: + entities_url[entity_jid_s] = self.get_page_by_name("blog_view").get_url( + entity_jid_s + ) + if entity_jid_s not in identities: + d_list[entity_jid_s] = self.host.bridge_call( + "identity_get", + entity_jid_s, + [], + True, + profile) + identities_data = await defer.DeferredList(d_list.values()) + entities_idx = list(d_list.keys()) + for idx, (success, identity_raw) in enumerate(identities_data): + entity_jid_s = entities_idx[idx] + if not success: + log.warning(_("Can't retrieve identity of {entity}") + .format(entity=entity_jid_s)) + else: + identities[entity_jid_s] = data_format.deserialise(identity_raw) + + template_data["url_blog_edit"] = self.get_sub_page_url(request, "blog_edit") + + +def on_data_post(self, request): + jid_str = self.get_posted_data(request, "jid") + try: + jid_ = jid.JID(jid_str) + except RuntimeError: + self.page_error(request, C.HTTP_BAD_REQUEST) + url = self.get_page_by_name("blog_view").get_url(jid_.full()) + self.http_redirect(request, url)