def run(self): diff = time() - self.last_ack if self.max_idle < diff: diff = timedelta(seconds=diff) self.error("Stop %s: no answer since %s" % (self, fuzzyTimedelta(diff))) self.stop() return try: result = self.callService() result.addCallback(self.sendData) result.addErrback(self.sendError) return result except Exception, err: self.writeError(err, "Error in %s" % self) self.stop()
def fill(self): sessions = self.client.call('session', 'list') cookie = self.client.getCookie() self.checkboxes = [] self.sessions = [session for session in sessions if ('cookie' not in session) or (session['cookie'] != cookie)] if not sessions: return False self.sessions.sort(key=lambda session: session['idle']) table = self.ui.session_table table.setRowCount(len(self.sessions)) for row, session in enumerate(self.sessions): user = session['user'] creation = fuzzyDatetime(parseDatetime(session['creation'])) idle = timedelta(seconds=session['idle']) idle = fuzzyTimedelta(idle) if 'login' in user: login = user['login'] else: login = u"<%s>" % tr("anonymous") application = user['client_name'] application = APPLICATION_NAME.get(application, application) if 'client_release' in user: application += ' (%s)' % (user['client_release'],) columns = ( login, user['host'], application, creation, idle) checkbox = QCheckBox(self) if 'cookie' not in session: checkbox.setEnabled(False) self.connect(checkbox, SIGNAL("toggled(bool)"), self.toggleSession) table.setCellWidget(row, 0, checkbox) self.checkboxes.append(checkbox) for column, text in enumerate(columns): table.setItem(row, 1 + column, QTableWidgetItem(text)) table.resizeColumnsToContents() self.ui.destroy_button.setEnabled(False)