예제 #1
0
파일: web.py 프로젝트: pgm/supervisor
    def render(self):
        supervisord = self.context.supervisord
        form = self.context.form
        logs = []

        if not 'processname' in form:
            tail = 'No process name found'
            processname = None
        else:
            processname = form['processname']
            if not processname:
                tail = 'No process name found'
            else:
                rpcinterface = SupervisorNamespaceRPCInterface(supervisord)
                logs = rpcinterface.getLogNames(processname)
                logs.sort(lambda a, b: -cmp(a['mtime'], b['mtime']))

        root = self.clone()

        title = root.findmeld('title')
        title.content('Logs for process %s' % processname)

        iterator = root.findmeld('tr').repeat(logs)

        now = time.time()

        for tr_element, item in iterator:
            filename = item['filename']
            filename_anchor = tr_element.findmeld('filename_anchor')
            filename_anchor.content(filename)
            filename_anchor.attributes(
                href='log.html?processname=%s&filename=%s' % (
                    urllib.quote(processname), urllib.quote(filename)
                    ))

            mtime = tr_element.findmeld('mtime_text')
            mtime.content(str(now - item['mtime']))

            size = tr_element.findmeld('size_text')
            size.content(str(item['size']))

        return root.write_xhtmlstring()