Mercurial > libervia-web
comparison libervia/pages/merge-requests/edit/page_meta.py @ 1378:e3e303a30a74
pages (tickets): renamed "tickets" to "lists":
"lists" is more generic, and tickets is actually a specific kind of list.
/!\ "tickets_trackers_json" option has been renamed to "lists_directory_json".
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 28 Jan 2021 18:51:44 +0100 |
parents | 04e7dd6b6f4d |
children | 0f9409b831f7 |
comparison
equal
deleted
inserted
replaced
1377:46ce79eac754 | 1378:e3e303a30a74 |
---|---|
1 #!/usr/bin/env python3 | 1 #!/usr/bin/env python3 |
2 | 2 |
3 | 3 |
4 from libervia.server.constants import Const as C | 4 from libervia.server.constants import Const as C |
5 from sat.core.i18n import _ | 5 from sat.core.i18n import _ |
6 from twisted.internet import defer | |
7 from sat.tools.common import template_xmlui | 6 from sat.tools.common import template_xmlui |
8 from sat.tools.common import data_format | 7 from sat.tools.common import data_format |
9 from sat.core.log import getLogger | 8 from sat.core.log import getLogger |
10 | 9 |
11 """merge-requests edition""" | 10 """merge-requests edition""" |
18 | 17 |
19 def parse_url(self, request): | 18 def parse_url(self, request): |
20 try: | 19 try: |
21 item_id = self.nextPath(request) | 20 item_id = self.nextPath(request) |
22 except IndexError: | 21 except IndexError: |
23 log.warning(_("no ticket id specified")) | 22 log.warning(_("no list item id specified")) |
24 self.pageError(request, C.HTTP_BAD_REQUEST) | 23 self.pageError(request, C.HTTP_BAD_REQUEST) |
25 | 24 |
26 data = self.getRData(request) | 25 data = self.getRData(request) |
27 data["ticket_id"] = item_id | 26 data["list_item_id"] = item_id |
28 | 27 |
29 | 28 |
30 async def prepare_render(self, request): | 29 async def prepare_render(self, request): |
31 data = self.getRData(request) | 30 data = self.getRData(request) |
32 template_data = request.template_data | 31 template_data = request.template_data |
33 service, node, ticket_id = ( | 32 service, node, list_item_id = ( |
34 data.get("service", ""), | 33 data.get("service", ""), |
35 data.get("node", ""), | 34 data.get("node", ""), |
36 data["ticket_id"], | 35 data["list_item_id"], |
37 ) | 36 ) |
38 profile = self.getProfile(request) | 37 profile = self.getProfile(request) |
39 | 38 |
40 ignore = ( | 39 ignore = ( |
41 "publisher", | 40 "publisher", |
52 await self.host.bridgeCall( | 51 await self.host.bridgeCall( |
53 "mergeRequestsGet", | 52 "mergeRequestsGet", |
54 service.full() if service else "", | 53 service.full() if service else "", |
55 node, | 54 node, |
56 C.NO_LIMIT, | 55 C.NO_LIMIT, |
57 [ticket_id], | 56 [list_item_id], |
58 "", | 57 "", |
59 {}, | 58 {}, |
60 profile, | 59 profile, |
61 ) | 60 ) |
62 ) | 61 ) |
63 ticket = template_xmlui.create(self.host, merge_requests['items'][0], ignore=ignore) | 62 list_item = template_xmlui.create( |
63 self.host, merge_requests['items'][0], ignore=ignore | |
64 ) | |
64 | 65 |
65 try: | 66 try: |
66 # small trick to get a one line text input instead of the big textarea | 67 # small trick to get a one line text input instead of the big textarea |
67 ticket.widgets["labels"].type = "string" | 68 list_item.widgets["labels"].type = "string" |
68 ticket.widgets["labels"].value = ticket.widgets["labels"].value.replace( | 69 list_item.widgets["labels"].value = list_item.widgets["labels"].value.replace( |
69 "\n", ", " | 70 "\n", ", " |
70 ) | 71 ) |
71 except KeyError: | 72 except KeyError: |
72 pass | 73 pass |
73 | 74 |
74 # same as tickets_edit | 75 # same as list_edit |
75 wid = ticket.widgets['body'] | 76 wid = list_item.widgets['body'] |
76 if wid.type == "xhtmlbox": | 77 if wid.type == "xhtmlbox": |
77 wid.type = "textbox" | 78 wid.type = "textbox" |
78 wid.value = await self.host.bridgeCall( | 79 wid.value = await self.host.bridgeCall( |
79 "syntaxConvert", wid.value, C.SYNTAX_XHTML, "markdown", | 80 "syntaxConvert", wid.value, C.SYNTAX_XHTML, "markdown", |
80 False, profile) | 81 False, profile) |
81 | 82 |
82 template_data["new_ticket_xmlui"] = ticket | 83 template_data["new_list_item_xmlui"] = list_item |
83 | 84 |
84 | 85 |
85 async def on_data_post(self, request): | 86 async def on_data_post(self, request): |
86 data = self.getRData(request) | 87 data = self.getRData(request) |
87 service = data["service"] | 88 service = data["service"] |
88 node = data["node"] | 89 node = data["node"] |
89 ticket_id = data["ticket_id"] | 90 list_item_id = data["list_item_id"] |
90 posted_data = self.getAllPostedData(request) | 91 posted_data = self.getAllPostedData(request) |
91 if not posted_data["title"] or not posted_data["body"]: | 92 if not posted_data["title"] or not posted_data["body"]: |
92 self.pageError(request, C.HTTP_BAD_REQUEST) | 93 self.pageError(request, C.HTTP_BAD_REQUEST) |
93 try: | 94 try: |
94 posted_data["labels"] = [l.strip() for l in posted_data["labels"][0].split(",")] | 95 posted_data["labels"] = [l.strip() for l in posted_data["labels"][0].split(",")] |
110 node, | 111 node, |
111 "", | 112 "", |
112 "auto", | 113 "auto", |
113 posted_data, | 114 posted_data, |
114 "", | 115 "", |
115 ticket_id, | 116 list_item_id, |
116 data_format.serialise(extra), | 117 data_format.serialise(extra), |
117 profile, | 118 profile, |
118 ) | 119 ) |
119 # we don't want to redirect to edit page on success, but to tickets list | 120 # we don't want to redirect to edit page on success, but to list overview |
120 data["post_redirect_page"] = ( | 121 data["post_redirect_page"] = ( |
121 self.getPageByName("merge-requests"), | 122 self.getPageByName("merge-requests"), |
122 service.full(), | 123 service.full(), |
123 node or "@", | 124 node or "@", |
124 ) | 125 ) |