Mercurial > libervia-web
comparison src/pages/forums/list/page_meta.py @ 1058:2290b6ec3991
pages (forums): first draft
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 30 Jan 2018 08:15:04 +0100 |
parents | |
children | 2c2b8c08e6c9 |
comparison
equal
deleted
inserted
replaced
1057:50ba8947a6e8 | 1058:2290b6ec3991 |
---|---|
1 #!/usr/bin/env python2.7 | |
2 # -*- coding: utf-8 -*- | |
3 | |
4 from libervia.server.constants import Const as C | |
5 from twisted.internet import defer | |
6 from sat.core.log import getLogger | |
7 from sat.tools.common import uri as xmpp_uri | |
8 log = getLogger('pages/forum') | |
9 import json | |
10 """forum handling pages""" | |
11 | |
12 name = u'forums' | |
13 access = C.PAGES_ACCESS_PUBLIC | |
14 template = u"forum/overview.html" | |
15 | |
16 def parse_url(self, request): | |
17 self.getPathArgs(request, ['service', 'node', 'forum_key'], | |
18 service = u'@jid', | |
19 node = u'@', | |
20 forum_key = u'') | |
21 | |
22 def getLinks(self, forums): | |
23 for forum in forums: | |
24 try: | |
25 uri = forum['uri'] | |
26 except KeyError: | |
27 pass | |
28 else: | |
29 uri = xmpp_uri.parseXMPPUri(uri) | |
30 service = uri[u'path'] | |
31 node = uri[u'node'] | |
32 forum['http_url'] = self.getPageByName(u'forum_topics').getURL(service, node) | |
33 if u'sub-forums' in forum: | |
34 getLinks(self, forum[u'sub-forums']) | |
35 | |
36 @defer.inlineCallbacks | |
37 def prepare_render(self, request): | |
38 data = self.getRData(request) | |
39 template_data = request.template_data | |
40 service, node, key = data[u'service'], data[u'node'], data[u'forum_key'] | |
41 profile = self.getProfile(request) or C.SERVICE_PROFILE | |
42 | |
43 forums_raw = yield self.host.bridgeCall('forumsGet', service.full() if service else u'', node, key, profile) | |
44 forums = json.loads(forums_raw) | |
45 getLinks(self, forums) | |
46 | |
47 template_data[u'forums'] = forums |