Exemple #1
0
    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
Exemple #2
0
 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)
Exemple #3
0
 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)
Exemple #4
0
 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)
     )
Exemple #5
0
 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)
Exemple #6
0
    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
Exemple #7
0
 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)
Exemple #8
0
    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
Exemple #9
0
    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
Exemple #10
0
    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