comparison src/pages/tickets/view/page_meta.py @ 1095:7d5633ccbaf2

merge-requests (view), tickets (view): fill "url_ticket_edit" when logged user is publisher of ticket, or node owner.
author Goffi <goffi@goffi.org>
date Fri, 01 Jun 2018 13:04:57 +0200
parents 1c09f41e2f52
children 01e95ec9df9e
comparison
equal deleted inserted replaced
1094:8a270f32de81 1095:7d5633ccbaf2
1 #!/usr/bin/env python2.7 1 #!/usr/bin/env python2.7
2 # -*- coding: utf-8 -*- 2 # -*- coding: utf-8 -*-
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 libervia.server.utils import SubPage
7 from libervia.server import session_iface
6 from twisted.internet import defer 8 from twisted.internet import defer
9 from twisted.words.protocols.jabber import jid
7 from sat.tools.common import template_xmlui 10 from sat.tools.common import template_xmlui
8 from sat.tools.common import uri 11 from sat.tools.common import uri
9 from sat.tools.common import data_objects 12 from sat.tools.common import data_objects
10 from sat.core.log import getLogger 13 from sat.core.log import getLogger
11 log = getLogger('pages/tickets/view') 14 log = getLogger('pages/tickets/view')
28 31
29 @defer.inlineCallbacks 32 @defer.inlineCallbacks
30 def prepare_render(self, request): 33 def prepare_render(self, request):
31 data = self.getRData(request) 34 data = self.getRData(request)
32 template_data = request.template_data 35 template_data = request.template_data
36 session = self.host.getSessionData(request, session_iface.ISATSession)
33 service, node, ticket_id = data.get(u'service', u''), data.get(u'node', u''), data[u'ticket_id'] 37 service, node, ticket_id = data.get(u'service', u''), data.get(u'node', u''), data[u'ticket_id']
34 profile = self.getProfile(request) 38 profile = self.getProfile(request)
35 39
36 if profile is None: 40 if profile is None:
37 profile = C.SERVICE_PROFILE 41 profile = C.SERVICE_PROFILE
38 42
39 tickets = yield self.host.bridge.ticketsGet(service.full() if service else u'', node, C.NO_LIMIT, [ticket_id], '', {}, profile) 43 tickets = yield self.host.bridge.ticketsGet(service.full() if service else u'', node, C.NO_LIMIT, [ticket_id], '', {'labels_as_list': C.BOOL_TRUE}, profile)
40 ticket = [template_xmlui.create(self.host, x, ignore=['publisher']) for x in tickets[0]][0] 44 ticket = [template_xmlui.create(self.host, x) for x in tickets[0]][0]
41 template_data[u'item'] = ticket 45 template_data[u'item'] = ticket
42 comments_uri = ticket.widgets['comments_uri'].value 46 comments_uri = ticket.widgets['comments_uri'].value
43 if comments_uri: 47 if comments_uri:
44 uri_data = uri.parseXMPPUri(comments_uri) 48 uri_data = uri.parseXMPPUri(comments_uri)
45 template_data['comments_node'] = comments_node = uri_data['node'] 49 template_data['comments_node'] = comments_node = uri_data['node']
52 profile) 56 profile)
53 57
54 template_data[u'comments'] = data_objects.BlogItems(comments) 58 template_data[u'comments'] = data_objects.BlogItems(comments)
55 template_data[u'login_url'] = self.getPageRedirectURL(request) 59 template_data[u'login_url'] = self.getPageRedirectURL(request)
56 60
61 if session.connected:
62 # we set edition URL only if user is the publisher or the node owner
63 publisher = jid.JID(ticket.widgets['publisher'].value)
64 is_publisher = publisher.userhostJID() == session.jid.userhostJID()
65 affiliation = None
66 if not is_publisher:
67 node = node or self.host.ns_map['tickets']
68 affiliation = yield self.host.getAffiliation(request, service, node)
69 if is_publisher or affiliation == 'owner':
70 template_data[u'url_ticket_edit'] = self.getURLByPath(SubPage('tickets'), service.full(), node or u'@', SubPage('tickets_edit'), ticket_id)
71
57 @defer.inlineCallbacks 72 @defer.inlineCallbacks
58 def on_data_post(self, request): 73 def on_data_post(self, request):
59 type_ = self.getPostedData(request, u'type') 74 type_ = self.getPostedData(request, u'type')
60 if type_ == u'comment': 75 if type_ == u'comment':
61 blog_page = self.getPageByName(u'blog_view') 76 blog_page = self.getPageByName(u'blog_view')