Mercurial > libervia-web
annotate src/pages/tickets/new/page_meta.py @ 979:1d558dfb32ca
server: pages redirection:
when using a redirection dict, a new "page" key can be used to redirect to a named page. "args" can be added to specified named arguments to set (will be put in request.args, in addition to existing ones).
The redirection is done dynamically, during the request workflow.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 12 Nov 2017 12:56:46 +0100 |
parents | d0de2a98e852 |
children | a78169c1bf77 |
rev | line source |
---|---|
967 | 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.tools.common import template_xmlui | |
7 from sat.core.log import getLogger | |
8 log = getLogger('pages/ticket') | |
9 """ticket handling pages""" | |
10 | |
973
2e75dc986e03
pages (tickets): URLs for list and new are set in the template for the whole subhierarchy
Goffi <goffi@goffi.org>
parents:
971
diff
changeset
|
11 name = u'tickets_new' |
967 | 12 access = C.PAGES_ACCESS_PROFILE |
13 template = u"ticket/create.html" | |
14 | |
15 | |
16 @defer.inlineCallbacks | |
17 def prepare_render(self, request): | |
18 data = self.getRData(request) | |
973
2e75dc986e03
pages (tickets): URLs for list and new are set in the template for the whole subhierarchy
Goffi <goffi@goffi.org>
parents:
971
diff
changeset
|
19 template_data = request.template_data |
967 | 20 service, node = data.get(u'service', u''), data.get(u'node', u'') |
21 profile = self.getProfile(request) | |
22 schema = yield self.host.bridge.ticketsSchemaGet(service.full(), node, profile) | |
23 data['schema'] = schema | |
24 # following fields are handled in backend | |
976
0f676f09404b
pages (tickets/new): ignore milestone and priority on new ticket (those field should be set by node owner)
Goffi <goffi@goffi.org>
parents:
973
diff
changeset
|
25 ignore = ('reporter', 'created', 'updated', 'comments_uri', 'status', 'milestone', 'priority') |
967 | 26 xmlui_obj = template_xmlui.create(self.host, schema, ignore=ignore) |
971
6e966ef8d69f
page(tickets/new): use string instead of textbox for labels, and use comma to split them
Goffi <goffi@goffi.org>
parents:
970
diff
changeset
|
27 try: |
6e966ef8d69f
page(tickets/new): use string instead of textbox for labels, and use comma to split them
Goffi <goffi@goffi.org>
parents:
970
diff
changeset
|
28 # small trick to get a one line text input instead of the big textarea |
6e966ef8d69f
page(tickets/new): use string instead of textbox for labels, and use comma to split them
Goffi <goffi@goffi.org>
parents:
970
diff
changeset
|
29 xmlui_obj.widgets[u'labels'].type = u'string' |
6e966ef8d69f
page(tickets/new): use string instead of textbox for labels, and use comma to split them
Goffi <goffi@goffi.org>
parents:
970
diff
changeset
|
30 except KeyError: |
6e966ef8d69f
page(tickets/new): use string instead of textbox for labels, and use comma to split them
Goffi <goffi@goffi.org>
parents:
970
diff
changeset
|
31 pass |
973
2e75dc986e03
pages (tickets): URLs for list and new are set in the template for the whole subhierarchy
Goffi <goffi@goffi.org>
parents:
971
diff
changeset
|
32 template_data[u'new_ticket_xmlui'] = xmlui_obj |
967 | 33 |
34 @defer.inlineCallbacks | |
35 def on_data_post(self, request): | |
36 data = self.getRData(request) | |
37 service = data['service'] | |
38 node = data['node'] | |
39 posted_data = self.getAllPostedData(request) | |
977
d0de2a98e852
pages (tickets/new): refuse data if body is not set
Goffi <goffi@goffi.org>
parents:
976
diff
changeset
|
40 if not posted_data['title'] or not posted_data['body']: |
970
bc28b9068f91
page(tickets/new): refuse request if title is not set
Goffi <goffi@goffi.org>
parents:
969
diff
changeset
|
41 self.pageError(request, C.HTTP_BAD_REQUEST) |
971
6e966ef8d69f
page(tickets/new): use string instead of textbox for labels, and use comma to split them
Goffi <goffi@goffi.org>
parents:
970
diff
changeset
|
42 try: |
6e966ef8d69f
page(tickets/new): use string instead of textbox for labels, and use comma to split them
Goffi <goffi@goffi.org>
parents:
970
diff
changeset
|
43 posted_data['labels'] = [l.strip() for l in posted_data['labels'][0].split(',')] |
6e966ef8d69f
page(tickets/new): use string instead of textbox for labels, and use comma to split them
Goffi <goffi@goffi.org>
parents:
970
diff
changeset
|
44 except (KeyError, IndexError): |
6e966ef8d69f
page(tickets/new): use string instead of textbox for labels, and use comma to split them
Goffi <goffi@goffi.org>
parents:
970
diff
changeset
|
45 pass |
967 | 46 profile = self.getProfile(request) |
47 yield self.host.bridge.ticketsSet(service.full(), node, posted_data, u'', u'', {}, profile) | |
48 # we don't want to redirect to creation page on success, but to tickets list | |
968
4d37b23777c3
pages (core, tickets/new): replaced post_redirect_uri mechanism by post_redirect_page:
Goffi <goffi@goffi.org>
parents:
967
diff
changeset
|
49 data['post_redirect_page'] = (self.getPageByName(u'tickets_list'), |
4d37b23777c3
pages (core, tickets/new): replaced post_redirect_uri mechanism by post_redirect_page:
Goffi <goffi@goffi.org>
parents:
967
diff
changeset
|
50 service.full(), |
4d37b23777c3
pages (core, tickets/new): replaced post_redirect_uri mechanism by post_redirect_page:
Goffi <goffi@goffi.org>
parents:
967
diff
changeset
|
51 node or u'@') |