view src/pages/tickets/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 c8cafe316f6f
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}")