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 )