class MachinesColumn(WidgetWrap):

    """Shows machines or a link to MAAS to add more"""

    def __init__(self, display_controller, placement_controller,
                 placement_view):
        self.display_controller = display_controller
        self.placement_controller = placement_controller
        self.placement_view = placement_view
        w = self.build_widgets()
        super().__init__(w)
        self.update()

    def selectable(self):
        return True

    def build_widgets(self):
        self.machines_list = MachinesList(self.placement_controller,
                                          self.display_controller,
                                          None,
                                          show_hardware=True,
                                          show_assignments=False,
                                          show_placeholders=False,
                                          show_only_ready=True,
                                          title_widgets=[])

        self.machines_list.update()

        self.machines_list_pile = Pile([self.machines_list,
                                        Divider()])

        return self.machines_list_pile

    def update(self):
        self.machines_list.update()
        maasinfo = self.placement_controller.maasinfo
        empty_maas_msg = ("There are no available machines.\n"
                          "Open {} to add machines to "
                          "'{}':".format(maasinfo['server_name'],
                                         maasinfo['server_hostname']))

        self.empty_maas_widgets = Pile([Text([('error_icon',
                                               "\N{WARNING SIGN} "),
                                              empty_maas_msg],
                                             align='center')])

        # 2 machines is the subordinate placeholder + juju default:
        opts = self.machines_list_pile.options()
        if len(self.placement_controller.machines()) == 2:
            self.machines_list_pile.contents[0] = (self.empty_maas_widgets,
                                                   opts)
        else:
            self.machines_list_pile.contents[0] = (self.machines_list,
                                                   opts)

    def clear_selections(self):
        for mw in self.machines_list.machine_widgets:
            mw.is_selected = False

    def focus_prev_or_top(self):
        self.update()
        try:
            self.machines_list_pile.focus_position = 0
            self.machines_list.focus_prev_or_top()
        except IndexError:
            log.debug("caught indexerror in machinesColumn focus_prev_or_top")
            pass
示例#2
0
class MachinesColumn(WidgetWrap):
    """Shows machines or a link to MAAS to add more"""
    def __init__(self, display_controller, placement_controller,
                 placement_view):
        self.display_controller = display_controller
        self.placement_controller = placement_controller
        self.placement_view = placement_view
        w = self.build_widgets()
        super().__init__(w)
        self.update()

    def selectable(self):
        return True

    def build_widgets(self):
        self.machines_list = MachinesList(self.placement_controller,
                                          self.display_controller,
                                          None,
                                          show_hardware=True,
                                          show_assignments=False,
                                          show_placeholders=False,
                                          show_only_ready=True,
                                          title_widgets=[])

        self.machines_list.update()

        self.machines_list_pile = Pile([self.machines_list, Divider()])

        return self.machines_list_pile

    def update(self):
        self.machines_list.update()
        maasinfo = self.placement_controller.maasinfo
        empty_maas_msg = ("There are no available machines.\n"
                          "Open {} to add machines to "
                          "'{}':".format(maasinfo['server_name'],
                                         maasinfo['server_hostname']))

        self.empty_maas_widgets = Pile([
            Text([('error_icon', "\N{WARNING SIGN} "), empty_maas_msg],
                 align='center')
        ])

        # 2 machines is the subordinate placeholder + juju default:
        opts = self.machines_list_pile.options()
        if len(self.placement_controller.machines()) == 2:
            self.machines_list_pile.contents[0] = (self.empty_maas_widgets,
                                                   opts)
        else:
            self.machines_list_pile.contents[0] = (self.machines_list, opts)

    def clear_selections(self):
        for mw in self.machines_list.machine_widgets:
            mw.is_selected = False

    def focus_prev_or_top(self):
        self.update()
        try:
            self.machines_list_pile.focus_position = 0
            self.machines_list.focus_prev_or_top()
        except IndexError:
            log.debug("caught indexerror in machinesColumn focus_prev_or_top")
            pass