Skip to content

Commit

Permalink
Allow user to display host in synthesis from problems view
Browse files Browse the repository at this point in the history
Ref #259
  • Loading branch information
algorys committed Mar 12, 2018
1 parent 98e8e25 commit 2e6267d
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 13 deletions.
22 changes: 16 additions & 6 deletions alignak_app/qobjects/alignak/problems.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ def __init__(self, parent=None):
self.problem_table = ProblemsQTableWidget()
self.problems_title = QLabel()
self.actions_widget = ActionsQWidget()
self.host_btn = QPushButton()
self.spy_btn = QPushButton()
self.spy_widget = None

Expand Down Expand Up @@ -100,6 +101,7 @@ def update_action_buttons(self):
self.spy_btn.setEnabled(
bool(host_id not in self.spy_widget.spy_list_widget.spied_hosts)
)
self.host_btn.setEnabled(True)

def get_problems_widget_title(self):
"""
Expand All @@ -116,7 +118,7 @@ def get_problems_widget_title(self):
self.problems_title.setObjectName('itemtitle')
layout_title.addWidget(self.problems_title)

layout_title.addWidget(self.get_spy_widget())
layout_title.addWidget(self.get_btn_widget())

self.actions_widget.initialize(None)
self.actions_widget.acknowledge_btn.setEnabled(False)
Expand All @@ -131,25 +133,33 @@ def get_problems_widget_title(self):

return widget_title

def get_spy_widget(self):
def get_btn_widget(self):
"""
Return QWidget with spy QPushButton
Return QWidget with spy and host synthesis QPushButtons
:return: widget with spy button
:return: widget with spy and host button
:rtype: QWidget
"""

widget_btn = QWidget()
layout_btn = QVBoxLayout()
layout_btn = QHBoxLayout()
widget_btn.setLayout(layout_btn)

self.host_btn.setIcon(QIcon(settings.get_image('host')))
self.host_btn.setFixedSize(80, 20)
self.host_btn.setEnabled(False)
self.host_btn.setToolTip(_('See current item in synthesis view ?'))
layout_btn.addWidget(self.host_btn)

self.spy_btn.setIcon(QIcon(settings.get_image('spy')))
self.spy_btn.setFixedSize(80, 20)
self.spy_btn.setEnabled(False)
self.spy_btn.setToolTip(_('Spy current host ?'))
self.spy_btn.clicked.connect(self.add_spied_host)

layout_btn.addWidget(self.spy_btn)
layout_btn.setAlignment(self.spy_btn, Qt.AlignCenter)

layout_btn.setAlignment(Qt.AlignCenter)

return widget_btn

Expand Down
2 changes: 2 additions & 0 deletions alignak_app/qobjects/alignak/problems_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ def get_output_tableitem(item):
:rtype: QTableWidgetItem
"""

if not item.data['ls_output']:
item.data['ls_output'] = 'n\\a'
tableitem = AppQTableWidgetItem(item.data['ls_output'])
tableitem.add_backend_item(item)

Expand Down
46 changes: 39 additions & 7 deletions alignak_app/qobjects/panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ def __init__(self, parent=None):
self.dashboard_widget = DashboardQWidget()
self.host_widget = HostQWidget()
self.services_widget = ServicesQWidget()
self.problems_widget = ProblemsQWidget()
self.spy_text = {True: _("Spy Host"), False: _("Host spied!")}
self.spy_widget = SpyQWidget()
self.spy_button = QPushButton(self.spy_text[True])
Expand All @@ -91,10 +92,10 @@ def initialize(self):
self.tab_widget.setTabToolTip(0, _('See a synthesis view of a host'))

# Problems
problems_widget = ProblemsQWidget()
problems_widget.initialize(self.spy_widget)
self.problems_widget.initialize(self.spy_widget)
self.problems_widget.host_btn.clicked.connect(self.display_host)
self.tab_widget.addTab(
problems_widget,
self.problems_widget,
_('Problems (%d)') % len(data_manager.get_problems()['problems'])
)
self.tab_widget.setTabToolTip(1, _('See the problems found in the backend'))
Expand Down Expand Up @@ -241,15 +242,17 @@ def display_host(self):
"""

if self.line_search.text() in self.hostnames_list:
hostname = self.define_hostname()

if hostname in self.hostnames_list:
# Update linesearch if needed
hostnames_list = data_manager.get_all_hostnames()
if hostnames_list != self.hostnames_list:
self.create_line_search(hostnames_list)

# Set spy button enable or not
not_spied = bool(
data_manager.get_item('host', 'name', self.line_search.text()).item_id not in
data_manager.get_item('host', 'name', hostname).item_id not in
self.spy_widget.spy_list_widget.spied_hosts
)
self.spy_button.setEnabled(not_spied)
Expand All @@ -261,9 +264,9 @@ def display_host(self):
# Update QWidgets
self.dashboard_widget.update_dashboard()
self.dashboard_widget.show()
self.host_widget.update_host(self.line_search.text())
self.host_widget.update_host(hostname)
self.host_widget.show()
self.services_widget.set_data(self.line_search.text())
self.services_widget.set_data(hostname)
self.services_widget.update_widget()
self.services_widget.show()
else:
Expand All @@ -279,6 +282,34 @@ def display_host(self):
self.spy_button.style().unpolish(self.spy_button)
self.spy_button.style().polish(self.spy_button)

def define_hostname(self):
"""
Define hostname to display, depends of sender object
:return: the hostname to display
:rtype: str
"""

if isinstance(self.sender(), QPushButton):
# From Problems QWidget
item = self.problems_widget.problem_table.currentItem().item
if 'service' in item.item_type:
hostname = data_manager.get_item('host', item.data['host']).name
else:
hostname = item.name

if hostname in self.hostnames_list:
self.line_search.setText(hostname)
self.tab_widget.setCurrentIndex(0)
elif isinstance(self.sender(), QLineEdit):
# From QLineEdit
hostname = self.line_search.text()
else:
# From Drag & Drop
hostname = self.line_search.text()

return hostname

def dragMoveEvent(self, event): # pragma: no cover
"""
Override dragMoveEvent.
Expand Down Expand Up @@ -309,6 +340,7 @@ def dropEvent(self, event): # pragma: no cover
logger.debug('... with current item: %s', event.source().currentItem())

self.line_search.setText(host.name)
self.tab_widget.setCurrentIndex(0)
self.display_host()

def dragEnterEvent(self, event):
Expand Down

0 comments on commit 2e6267d

Please sign in to comment.