Mercurial > libervia-web
diff 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 |
line wrap: on
line diff
--- a/src/pages/tickets/view/page_meta.py Fri Jun 01 13:04:51 2018 +0200 +++ b/src/pages/tickets/view/page_meta.py Fri Jun 01 13:04:57 2018 +0200 @@ -3,7 +3,10 @@ from libervia.server.constants import Const as C from sat.core.i18n import _ +from libervia.server.utils import SubPage +from libervia.server import session_iface from twisted.internet import defer +from twisted.words.protocols.jabber import jid from sat.tools.common import template_xmlui from sat.tools.common import uri from sat.tools.common import data_objects @@ -30,14 +33,15 @@ def prepare_render(self, request): data = self.getRData(request) template_data = request.template_data + session = self.host.getSessionData(request, session_iface.ISATSession) service, node, ticket_id = data.get(u'service', u''), data.get(u'node', u''), data[u'ticket_id'] profile = self.getProfile(request) if profile is None: profile = C.SERVICE_PROFILE - tickets = yield self.host.bridge.ticketsGet(service.full() if service else u'', node, C.NO_LIMIT, [ticket_id], '', {}, profile) - ticket = [template_xmlui.create(self.host, x, ignore=['publisher']) for x in tickets[0]][0] + 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) + ticket = [template_xmlui.create(self.host, x) for x in tickets[0]][0] template_data[u'item'] = ticket comments_uri = ticket.widgets['comments_uri'].value if comments_uri: @@ -54,6 +58,17 @@ template_data[u'comments'] = data_objects.BlogItems(comments) template_data[u'login_url'] = self.getPageRedirectURL(request) + if session.connected: + # we set edition URL only if user is the publisher or the node owner + publisher = jid.JID(ticket.widgets['publisher'].value) + is_publisher = publisher.userhostJID() == session.jid.userhostJID() + affiliation = None + if not is_publisher: + node = node or self.host.ns_map['tickets'] + affiliation = yield self.host.getAffiliation(request, service, node) + if is_publisher or affiliation == 'owner': + template_data[u'url_ticket_edit'] = self.getURLByPath(SubPage('tickets'), service.full(), node or u'@', SubPage('tickets_edit'), ticket_id) + @defer.inlineCallbacks def on_data_post(self, request): type_ = self.getPostedData(request, u'type')