Mercurial > libervia-web
annotate libervia/pages/forums/topics/page_meta.py @ 1239:f511f8fbbf8a
fixed shebangs
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 29 Jan 2020 10:06:01 +0100 |
parents | b2d067339de3 |
children | 8aff742d0dd0 |
rev | line source |
---|---|
1216 | 1 #!/usr/bin/env python3 |
1239 | 2 |
1058 | 3 |
4 from libervia.server.constants import Const as C | |
5 from twisted.internet import defer | |
6 from sat.core.i18n import _ | |
7 from sat.core.log import getLogger | |
8 from sat.tools.common import uri as xmpp_uri | |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1058
diff
changeset
|
9 |
1145
29eb15062416
pages: set __name__ for imported pages
Goffi <goffi@goffi.org>
parents:
1124
diff
changeset
|
10 log = getLogger(__name__) |
1058 | 11 |
1216 | 12 name = "forum_topics" |
1058 | 13 access = C.PAGES_ACCESS_PUBLIC |
1216 | 14 template = "forum/view_topics.html" |
1058 | 15 |
16 | |
17 def parse_url(self, request): | |
1216 | 18 self.getPathArgs(request, ["service", "node"], 2, service="jid") |
1058 | 19 |
20 | |
21 @defer.inlineCallbacks | |
22 def prepare_render(self, request): | |
23 profile = self.getProfile(request) or C.SERVICE_PROFILE | |
24 data = self.getRData(request) | |
1216 | 25 service, node = data["service"], data["node"] |
26 request.template_data.update({"service": service, "node": node}) | |
1058 | 27 template_data = request.template_data |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1058
diff
changeset
|
28 topics, metadata = yield self.host.bridgeCall( |
1216 | 29 "forumTopicsGet", service.full(), node, {}, profile |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1058
diff
changeset
|
30 ) |
1216 | 31 template_data["identities"] = identities = {} |
1058 | 32 for topic in topics: |
1216 | 33 parsed_uri = xmpp_uri.parseXMPPUri(topic["uri"]) |
34 author = topic["author"] | |
35 topic["http_uri"] = self.getPageByName("forum_view").getURL( | |
36 parsed_uri["path"], parsed_uri["node"] | |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1058
diff
changeset
|
37 ) |
1058 | 38 if author not in identities: |
1216 | 39 identities[topic["author"]] = yield self.host.bridgeCall( |
40 "identityGet", author, profile | |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1058
diff
changeset
|
41 ) |
1216 | 42 template_data["topics"] = topics |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1058
diff
changeset
|
43 |
1058 | 44 |
45 @defer.inlineCallbacks | |
46 def on_data_post(self, request): | |
47 profile = self.getProfile(request) | |
48 if profile is None: | |
1173
0f37b65fe7c2
server: replaced wrong usage of C.HTTP_UNAUTHORIZED by C.HTTP_FORBIDDEN
Goffi <goffi@goffi.org>
parents:
1145
diff
changeset
|
49 self.pageError(request, C.HTTP_FORBIDDEN) |
1216 | 50 type_ = self.getPostedData(request, "type") |
51 if type_ == "new_topic": | |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1058
diff
changeset
|
52 service, node, title, body = self.getPostedData( |
1216 | 53 request, ("service", "node", "title", "body") |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1058
diff
changeset
|
54 ) |
1058 | 55 |
56 if not title or not body: | |
57 self.pageError(request, C.HTTP_BAD_REQUEST) | |
1216 | 58 topic_data = {"title": title, "content": body} |
1058 | 59 try: |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1058
diff
changeset
|
60 yield self.host.bridgeCall( |
1216 | 61 "forumTopicCreate", service, node, topic_data, profile |
1113
cdd389ef97bc
server: code style reformatting using black
Goffi <goffi@goffi.org>
parents:
1058
diff
changeset
|
62 ) |
1058 | 63 except Exception as e: |
1216 | 64 if "forbidden" in str(e): |
1058 | 65 self.pageError(request, 401) |
66 else: | |
67 raise e | |
68 else: | |
1216 | 69 log.warning(_("Unhandled data type: {}").format(type_)) |