comparison libervia/pages/forums/list/page_meta.py @ 1427:eaf36fffcbdb

pages (forums): better breadcrumbs
author Goffi <goffi@goffi.org>
date Sat, 01 May 2021 19:05:16 +0200
parents f511f8fbbf8a
children 106bae41f5c8
comparison
equal deleted inserted replaced
1426:4cf2b73e63aa 1427:eaf36fffcbdb
1 #!/usr/bin/env python3 1 #!/usr/bin/env python3
2 2
3
4 from libervia.server.constants import Const as C 3 from libervia.server.constants import Const as C
5 from twisted.internet import defer
6 from sat.core.log import getLogger 4 from sat.core.log import getLogger
7 from sat.core.i18n import _ 5 from sat.core.i18n import _
8 from sat.tools.common import uri as xmpp_uri 6 from sat.tools.common import uri as xmpp_uri
9 7
10 log = getLogger(__name__) 8 log = getLogger(__name__)
25 node="@", 23 node="@",
26 forum_key="", 24 forum_key="",
27 ) 25 )
28 26
29 27
28 def add_breadcrumb(self, request, breadcrumbs):
29 # we don't want breadcrumbs here as long as there is no forum discovery
30 # because it will be the landing page for forums activity until then
31 pass
32
33
30 def getLinks(self, forums): 34 def getLinks(self, forums):
31 for forum in forums: 35 for forum in forums:
32 try: 36 try:
33 uri = forum["uri"] 37 uri = forum["uri"]
34 except KeyError: 38 except KeyError:
40 forum["http_url"] = self.getPageByName("forum_topics").getURL(service, node) 44 forum["http_url"] = self.getPageByName("forum_topics").getURL(service, node)
41 if "sub-forums" in forum: 45 if "sub-forums" in forum:
42 getLinks(self, forum["sub-forums"]) 46 getLinks(self, forum["sub-forums"])
43 47
44 48
45 @defer.inlineCallbacks 49 async def prepare_render(self, request):
46 def prepare_render(self, request):
47 data = self.getRData(request) 50 data = self.getRData(request)
48 template_data = request.template_data 51 template_data = request.template_data
49 service, node, key = data["service"], data["node"], data["forum_key"] 52 service, node, key = data["service"], data["node"], data["forum_key"]
50 profile = self.getProfile(request) or C.SERVICE_PROFILE 53 profile = self.getProfile(request) or C.SERVICE_PROFILE
51 54
52 try: 55 try:
53 forums_raw = yield self.host.bridgeCall( 56 forums_raw = await self.host.bridgeCall(
54 "forumsGet", service.full() if service else "", node, key, profile 57 "forumsGet", service.full() if service else "", node, key, profile
55 ) 58 )
56 except Exception as e: 59 except Exception as e:
57 log.warning(_("Can't retrieve forums: {msg}").format(msg=e)) 60 log.warning(_("Can't retrieve forums: {msg}").format(msg=e))
58 forums = [] 61 forums = []