view src/pages/tickets/page_meta.py @ 978:c8cafe316f6f

pages: removed trailing_slash option: this option is used for relative URLs, but it seems more reasonable to build absolute URL from the server, so templates are not dependants of the way the pages hierarchy is done.
author Goffi <goffi@goffi.org>
date Sun, 12 Nov 2017 12:51:56 +0100
parents 2e75dc986e03
children 97cce8c1e96a
line wrap: on
line source

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

from libervia.server.constants import Const as C
from sat.core.i18n import _
from twisted.internet import defer
from twisted.words.protocols.jabber import jid
from sat.tools.common import template_xmlui
from sat.tools.common import data_objects
from sat.core.log import getLogger
log = getLogger('pages/ticket')
"""ticket handling pages"""

name = u'tickets_list'
access = C.PAGES_ACCESS_PUBLIC
template = u"ticket/overview.html"


def parse_url(self, request):
    try:
        service = self.nextPath(request)
    except IndexError:
        service = u''
    else:
        if not service or service == u'@':
            service = u''

    if service:
        try:
            service = jid.JID(service)
        except Exception:
            log.warning(_(u"bad service entered: {}").format(service))
            self.pageError(request, C.HTTP_BAD_REQUEST)

    try:
        node = self.nextPath(request)
    except IndexError:
        node = u''
    else:
        if not node or node == u'@':
            node = u''

    data = self.getRData(request)
    data['service'] = service
    data['node'] = node

    template_data = request.template_data
    template_data[u'url_tickets_list'] = self.getPageByName('tickets_list').getURL(service.full(), node or u'@')
    template_data[u'url_tickets_new'] = u'/' + ('/'.join(request.prepath + ['new']).decode('utf-8'))

@defer.inlineCallbacks
def prepare_render(self, request):
    data = self.getRData(request)
    template_data = request.template_data
    service, node = data.get(u'service', u''), data.get(u'node', u'')
    profile = self.getProfile(request) or C.SERVICE_PROFILE

    tickets = yield self.host.bridge.ticketsGet(service.full() if service else u'', node, C.NO_LIMIT, [], '', {}, profile)
    tickets = [template_xmlui.create(self.host, x) for x in tickets[0]]
    template_data[u'tickets'] = tickets
    template_data[u'on_ticket_click'] = data_objects.OnClick(url="view/{item.id}")