def _on_query_tooltip(self, widget, x, y, kbd_ctx, tooltip): """Handle a tooltip creation request.""" tip_context = self.suite_treeview.get_tooltip_context(x, y, kbd_ctx) if tip_context is None: self._prev_tooltip_location_id = None return False x, y = self.suite_treeview.convert_widget_to_bin_window_coords(x, y) path, column, cell_x, cell_y = self.suite_treeview.get_path_at_pos(x, y) model = self.suite_treeview.get_model() iter_ = model.get_iter(path) parent_iter = model.iter_parent(iter_) if parent_iter is None: host = model.get_value(iter_, 0) suite = model.get_value(iter_, 1) child_row_number = None else: host = model.get_value(parent_iter, 0) suite = model.get_value(parent_iter, 1) child_row_number = path[-1] suite_update_time = model.get_value(iter_, 4) location_id = (host, suite, suite_update_time, column.get_title(), child_row_number) if location_id != self._prev_tooltip_location_id: self._prev_tooltip_location_id = location_id tooltip.set_text(None) return False if column.get_title() in ["Host", "Suite"]: tooltip.set_text(suite + " - " + host) return True if column.get_title() == "Updated": suite_update_point = get_timepoint_from_seconds_since_unix_epoch(suite_update_time) if self.updater.last_update_time is not None and suite_update_time != int(self.updater.last_update_time): retrieval_point = get_timepoint_from_seconds_since_unix_epoch(int(self.updater.last_update_time)) text = "Last changed at %s\n" % suite_update_point text += "Last scanned at %s" % retrieval_point else: # An older suite (or before any updates are made?) text = "Last scanned at %s" % suite_update_point tooltip.set_text(text) return True if column.get_title() != "Status": tooltip.set_text(None) return False state_texts = [] status_column_info = 6 state_text = model.get_value(iter_, status_column_info) if state_text is None: tooltip.set_text(None) return False info = re.findall(r"\D+\d+", state_text) for status_number in info: status, number = status_number.rsplit(" ", 1) state_texts.append(number + " " + status.strip()) text = "Tasks: " + ", ".join(state_texts) tooltip.set_text(text) return True
def _set_cell_text_time(self, column, cell, model, iter_): suite_update_time = model.get_value(iter_, 4) time_point = get_timepoint_from_seconds_since_unix_epoch(suite_update_time) time_point.set_time_zone_to_local() current_time = time.time() current_point = get_timepoint_from_seconds_since_unix_epoch(current_time) if str(time_point).split("T")[0] == str(current_point).split("T")[0]: time_string = str(time_point).split("T")[1] else: time_string = str(time_point) is_stopped = model.get_value(iter_, 2) cell.set_property("sensitive", not is_stopped) cell.set_property("text", time_string)
def _set_cell_text_time(self, column, cell, model, iter_): suite_update_time = model.get_value(iter_, 4) time_point = get_timepoint_from_seconds_since_unix_epoch( suite_update_time) time_point.set_time_zone_to_local() current_time = time.time() current_point = ( get_timepoint_from_seconds_since_unix_epoch(current_time)) if str(time_point).split("T")[0] == str(current_point).split("T")[0]: time_string = str(time_point).split("T")[1] else: time_string = str(time_point) is_stopped = model.get_value(iter_, 2) cell.set_property("sensitive", not is_stopped) cell.set_property("text", time_string)
def _render(self, all_revs=0, data=None, filters=None, s=None): """Render return data with a template.""" if data: for item in data: suite_id = SuiteId.from_idx_branch_revision( item["idx"], item["branch"], item["revision"]) item["href"] = suite_id.to_web() item["date"] = str(get_timepoint_from_seconds_since_unix_epoch( item["date"])) tmpl = self.props["template_env"].get_template("prefix-index.html") self.write(tmpl.render( title=self.props["title"], host=self.props["host_name"], rose_version=self.props["rose_version"], script="/static", service_root=self.service_root, prefix=self.prefix, prefix_source_url=self.source_url, known_keys=self.dao.get_known_keys(), query_operators=self.dao.get_query_operators(), all_revs=all_revs, filters=filters, s=s, data=data) )
def _set_cell_text_time(self, column, cell, model, iter_): update_time = model.get_value(iter_, 4) time_point = get_timepoint_from_seconds_since_unix_epoch(update_time) time_point.set_time_zone_to_local() time_string = str(time_point).split("T")[1] is_stopped = model.get_value(iter_, 2) cell.set_property("sensitive", not is_stopped) cell.set_property("text", time_string)
def _on_query_tooltip(self, widget, x, y, kbd_ctx, tooltip): """Handle a tooltip creation request.""" tip_context = self.suite_treeview.get_tooltip_context(x, y, kbd_ctx) if tip_context is None: self._prev_tooltip_location_id = None return False x, y = self.suite_treeview.convert_widget_to_bin_window_coords(x, y) path, column, cell_x, cell_y = self.suite_treeview.get_path_at_pos( x, y) model = self.suite_treeview.get_model() iter_ = model.get_iter(path) host = model.get_value(iter_, 0) suite = model.get_value(iter_, 1) update_time = model.get_value(iter_, 4) location_id = (host, suite, update_time, column.get_title()) if location_id != self._prev_tooltip_location_id: self._prev_tooltip_location_id = location_id tooltip.set_text(None) return False if column.get_title() in ["Host", "Suite"]: tooltip.set_text(suite + " - " + host) return True if column.get_title() == "Updated": time_point = get_timepoint_from_seconds_since_unix_epoch( update_time) tooltip.set_text("Info retrieved at " + str(time_point)) return True if column.get_title() != "Status": tooltip.set_text(None) return False state_texts = [] for i in range(5, 25): state_text = model.get_value(iter_, i) if state_text is None: break status, number = state_text.rsplit(" ", 1) state_texts.append(number + " " + status) text = "Tasks: " + ", ".join(state_texts) tooltip.set_text(text) return True
def _render(self, all_revs=0, data=None, filters=None, s=None): """Render return data with a template.""" if data: for item in data: suite_id = SuiteId.from_idx_branch_revision( item["idx"], item["branch"], item["revision"]) item["href"] = suite_id.to_web() item["date"] = str( get_timepoint_from_seconds_since_unix_epoch(item["date"])) tmpl = self.props["template_env"].get_template("prefix-index.html") return tmpl.render(title=self.props["title"], host=self.props["host_name"], rose_version=self.props["rose_version"], script=cherrypy.request.script_name, prefix=self.prefix, prefix_source_url=self.source_url, known_keys=self.dao.get_known_keys(), query_operators=self.dao.get_query_operators(), all_revs=all_revs, filters=filters, s=s, data=data)
def _on_query_tooltip(self, widget, x, y, kbd_ctx, tooltip): """Handle a tooltip creation request.""" tip_context = self.suite_treeview.get_tooltip_context(x, y, kbd_ctx) if tip_context is None: self._prev_tooltip_location_id = None return False x, y = self.suite_treeview.convert_widget_to_bin_window_coords(x, y) path, column, cell_x, cell_y = (self.suite_treeview.get_path_at_pos( x, y)) model = self.suite_treeview.get_model() iter_ = model.get_iter(path) parent_iter = model.iter_parent(iter_) if parent_iter is None: host = model.get_value(iter_, 0) suite = model.get_value(iter_, 1) child_row_number = None else: host = model.get_value(parent_iter, 0) suite = model.get_value(parent_iter, 1) child_row_number = path[-1] suite_update_time = model.get_value(iter_, 4) location_id = (host, suite, suite_update_time, column.get_title(), child_row_number) if location_id != self._prev_tooltip_location_id: self._prev_tooltip_location_id = location_id tooltip.set_text(None) return False if column.get_title() in ["Host", "Suite"]: tooltip.set_text(suite + " - " + host) return True if column.get_title() == "Updated": suite_update_point = get_timepoint_from_seconds_since_unix_epoch( suite_update_time) if (self.updater.last_update_time is not None and suite_update_time != int(self.updater.last_update_time)): retrieval_point = get_timepoint_from_seconds_since_unix_epoch( int(self.updater.last_update_time)) text = "Last changed at %s\n" % suite_update_point text += "Last scanned at %s" % retrieval_point else: # An older suite (or before any updates are made?) text = "Last scanned at %s" % suite_update_point tooltip.set_text(text) return True if column.get_title() != "Status": tooltip.set_text(None) return False state_texts = [] status_column_info = 6 state_text = model.get_value(iter_, status_column_info) if state_text is None: tooltip.set_text(None) return False info = re.findall('\D+\d+', state_text) for status_number in info: status, number = status_number.rsplit(" ", 1) state_texts.append(number + " " + status.strip()) text = "Tasks: " + ", ".join(state_texts) tooltip.set_text(text) return True
def _on_query_tooltip(self, widget, x, y, kbd_ctx, tooltip): """Handle a tooltip creation request.""" tip_context = self.suite_treeview.get_tooltip_context(x, y, kbd_ctx) if tip_context is None: self._prev_tooltip_location_id = None return False x, y = self.suite_treeview.convert_widget_to_bin_window_coords(x, y) path, column, cell_x, cell_y = (self.suite_treeview.get_path_at_pos( x, y)) model = self.suite_treeview.get_model() iter_ = model.get_iter(path) parent_iter = model.iter_parent(iter_) if parent_iter is None: host = model.get_value(iter_, 0) suite = model.get_value(iter_, 1) child_row_number = None else: host = model.get_value(parent_iter, 0) suite = model.get_value(parent_iter, 1) child_row_number = path[-1] suite_update_time = model.get_value(iter_, 4) location_id = (host, suite, suite_update_time, column.get_title(), child_row_number) if location_id != self._prev_tooltip_location_id: self._prev_tooltip_location_id = location_id tooltip.set_text(None) return False if column.get_title() in ["Host", "Suite"]: tooltip.set_text(suite + " - " + host) return True if column.get_title() == "Updated": suite_update_point = get_timepoint_from_seconds_since_unix_epoch( suite_update_time) if (self.updater.last_update_time is not None and suite_update_time != int(self.updater.last_update_time)): retrieval_point = get_timepoint_from_seconds_since_unix_epoch( int(self.updater.last_update_time)) text = "Last changed at %s\n" % suite_update_point text += "Last scanned at %s" % retrieval_point else: # An older suite (or before any updates are made?) text = "Last scanned at %s" % suite_update_point tooltip.set_text(text) return True if column.get_title() != "Status": tooltip.set_text(None) return False # Generate text for the number of tasks in each state state_texts = [] status_column_info = 6 state_text = model.get_value(iter_, status_column_info) if state_text is None: tooltip.set_text(None) return False info = re.findall(r'\D+\d+', state_text) for status_number in info: status, number = status_number.rsplit(" ", 1) state_texts.append(number + " " + status.strip()) tooltip_prefix = ("<span foreground=\"#777777\">Tasks: " + ", ".join(state_texts) + "</span>") # If hovering over a status indicator set tooltip to show most recent # tasks. dot_offset, dot_width = tuple( column.cell_get_position(column.get_cell_renderers()[1])) cell_index = (cell_x - dot_offset) // dot_width if cell_index >= 0: # NOTE: TreeViewColumn.get_cell_renderers() does not allways return # cell renderers for the correct row. info = re.findall(r'\D+\d+', model.get(iter_, 6)[0]) if cell_index >= len(info): return False state = info[cell_index].strip().split(' ')[0] point_string = model.get(iter_, 5)[0] tasks = self.updater.get_last_n_tasks(suite, host, state, point_string) tooltip.set_markup(tooltip_prefix + ( '\n<b>Recent {state} tasks</b>' '\n{tasks}').format(state=state, tasks='\n'.join(tasks))) return True # Set the tooltip to a generic status for this suite. tooltip.set_markup(tooltip_prefix) return True
def _on_query_tooltip(self, widget, x, y, kbd_ctx, tooltip): """Handle a tooltip creation request.""" tip_context = self.suite_treeview.get_tooltip_context(x, y, kbd_ctx) if tip_context is None: self._prev_tooltip_location_id = None return False x, y = self.suite_treeview.convert_widget_to_bin_window_coords(x, y) path, column, cell_x, cell_y = ( self.suite_treeview.get_path_at_pos(x, y)) model = self.suite_treeview.get_model() iter_ = model.get_iter(path) parent_iter = model.iter_parent(iter_) if parent_iter is None: host = model.get_value(iter_, 0) suite = model.get_value(iter_, 1) child_row_number = None else: host = model.get_value(parent_iter, 0) suite = model.get_value(parent_iter, 1) child_row_number = path[-1] suite_update_time = model.get_value(iter_, 4) location_id = (host, suite, suite_update_time, column.get_title(), child_row_number) if location_id != self._prev_tooltip_location_id: self._prev_tooltip_location_id = location_id tooltip.set_text(None) return False if column.get_title() in ["Host", "Suite"]: tooltip.set_text(suite + " - " + host) return True if column.get_title() == "Updated": suite_update_point = get_timepoint_from_seconds_since_unix_epoch( suite_update_time) if (self.updater.last_update_time is not None and suite_update_time != int(self.updater.last_update_time)): retrieval_point = get_timepoint_from_seconds_since_unix_epoch( int(self.updater.last_update_time)) text = "Last changed at %s\n" % suite_update_point text += "Last scanned at %s" % retrieval_point else: # An older suite (or before any updates are made?) text = "Last scanned at %s" % suite_update_point tooltip.set_text(text) return True if column.get_title() != "Status": tooltip.set_text(None) return False # Generate text for the number of tasks in each state state_texts = [] status_column_info = 6 state_text = model.get_value(iter_, status_column_info) if state_text is None: tooltip.set_text(None) return False info = re.findall(r'\D+\d+', state_text) for status_number in info: status, number = status_number.rsplit(" ", 1) state_texts.append(number + " " + status.strip()) tooltip_prefix = ( "<span foreground=\"#777777\">Tasks: " + ", ".join(state_texts) + "</span>" ) # If hovering over a status indicator set tooltip to show most recent # tasks. dot_offset, dot_width = tuple(column.cell_get_position( column.get_cell_renderers()[1])) cell_index = (cell_x - dot_offset) // dot_width if cell_index >= 0: # NOTE: TreeViewColumn.get_cell_renderers() does not allways return # cell renderers for the correct row. info = re.findall(r'\D+\d+', model.get(iter_, 6)[0]) if cell_index >= len(info): return False state = info[cell_index].strip().split(' ')[0] point_string = model.get(iter_, 5)[0] tasks = self.updater.get_last_n_tasks( suite, host, state, point_string) tooltip.set_markup( tooltip_prefix + ('\n<b>Recent {state} tasks</b>' '\n{tasks}').format(state=state, tasks='\n'.join(tasks))) return True # Set the tooltip to a generic status for this suite. tooltip.set_markup(tooltip_prefix) return True