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()