Merge remote-tracking branch 'origin/pr/236'
* origin/pr/236: Better error handling for opening VM settings in Qube Manager
This commit is contained in:
		
						commit
						2b69bf5599
					
				| @ -1042,43 +1042,51 @@ class VmManagerWindow(ui_qubemanager.Ui_VmManagerWindow, QtWidgets.QMainWindow): | |||||||
|                         "ERROR: {1}").format(vm.name, ex)) |                         "ERROR: {1}").format(vm.name, ex)) | ||||||
|                 return |                 return | ||||||
| 
 | 
 | ||||||
|  |     def open_settings(self, vm, tab='basic'): | ||||||
|  |         try: | ||||||
|  |             with common_threads.busy_cursor(): | ||||||
|  |                 settings_window = settings.VMSettingsWindow( | ||||||
|  |                     vm, self.qt_app, tab) | ||||||
|  |             settings_window.exec_() | ||||||
|  |         except exc.QubesException as ex: | ||||||
|  |             QtWidgets.QMessageBox.warning( | ||||||
|  |                 self, | ||||||
|  |                 self.tr("Qube settings unavailable"), | ||||||
|  |                 self.tr( | ||||||
|  |                     "Qube settings cannot be opened. The qube might have " | ||||||
|  |                     "been removed or unavailable due to policy settings." | ||||||
|  |                     "\nError: {}".format(str(ex)))) | ||||||
|  |             return | ||||||
|  | 
 | ||||||
|  |         vm_deleted = False | ||||||
|  | 
 | ||||||
|  |         try: | ||||||
|  |             # the VM might not exist after running Settings - it might | ||||||
|  |             # have been cloned or removed | ||||||
|  |             self.vms_in_table[vm.qid].update() | ||||||
|  |         except exc.QubesException: | ||||||
|  |             vm_deleted = True | ||||||
|  | 
 | ||||||
|  |         if vm_deleted: | ||||||
|  |             for row in self.vms_in_table: | ||||||
|  |                 try: | ||||||
|  |                     self.vms_in_table[row].update() | ||||||
|  |                 except exc.QubesException: | ||||||
|  |                     pass | ||||||
|  | 
 | ||||||
|     # noinspection PyArgumentList |     # noinspection PyArgumentList | ||||||
|     @QtCore.pyqtSlot(name='on_action_settings_triggered') |     @QtCore.pyqtSlot(name='on_action_settings_triggered') | ||||||
|     def action_settings_triggered(self): |     def action_settings_triggered(self): | ||||||
|         vm = self.get_selected_vm() |         vm = self.get_selected_vm() | ||||||
|         if vm: |         if vm: | ||||||
|             with common_threads.busy_cursor(): |             self.open_settings(vm, "basic") | ||||||
|                 settings_window = settings.VMSettingsWindow( |  | ||||||
|                     vm, self.qt_app, "basic") |  | ||||||
|             settings_window.exec_() |  | ||||||
| 
 |  | ||||||
|             vm_deleted = False |  | ||||||
| 
 |  | ||||||
|             try: |  | ||||||
|                 # the VM might not exist after running Settings - it might |  | ||||||
|                 # have been cloned or removed |  | ||||||
|                 self.vms_in_table[vm.qid].update() |  | ||||||
|             except exc.QubesException: |  | ||||||
|                 # TODO: this will be replaced by proper signal handling once |  | ||||||
|                 # settings are migrated to AdminAPI |  | ||||||
|                 vm_deleted = True |  | ||||||
| 
 |  | ||||||
|             if vm_deleted: |  | ||||||
|                 for row in self.vms_in_table: |  | ||||||
|                     try: |  | ||||||
|                         self.vms_in_table[row].update() |  | ||||||
|                     except exc.QubesException: |  | ||||||
|                         pass |  | ||||||
| 
 | 
 | ||||||
|     # noinspection PyArgumentList |     # noinspection PyArgumentList | ||||||
|     @QtCore.pyqtSlot(name='on_action_appmenus_triggered') |     @QtCore.pyqtSlot(name='on_action_appmenus_triggered') | ||||||
|     def action_appmenus_triggered(self): |     def action_appmenus_triggered(self): | ||||||
|         vm = self.get_selected_vm() |         vm = self.get_selected_vm() | ||||||
|         if vm: |         if vm: | ||||||
|             with common_threads.busy_cursor(): |             self.open_settings(vm, "applications") | ||||||
|                 settings_window = settings.VMSettingsWindow( |  | ||||||
|                     vm, self.qt_app, "applications") |  | ||||||
|             settings_window.exec_() |  | ||||||
| 
 | 
 | ||||||
|     # noinspection PyArgumentList |     # noinspection PyArgumentList | ||||||
|     @QtCore.pyqtSlot(name='on_action_updatevm_triggered') |     @QtCore.pyqtSlot(name='on_action_updatevm_triggered') | ||||||
| @ -1136,11 +1144,9 @@ class VmManagerWindow(ui_qubemanager.Ui_VmManagerWindow, QtWidgets.QMainWindow): | |||||||
|     # noinspection PyArgumentList |     # noinspection PyArgumentList | ||||||
|     @QtCore.pyqtSlot(name='on_action_editfwrules_triggered') |     @QtCore.pyqtSlot(name='on_action_editfwrules_triggered') | ||||||
|     def action_editfwrules_triggered(self): |     def action_editfwrules_triggered(self): | ||||||
|         with common_threads.busy_cursor(): |         vm = self.get_selected_vm() | ||||||
|             vm = self.get_selected_vm() |         if vm: | ||||||
|             settings_window = settings.VMSettingsWindow(vm, self.qt_app, |             self.open_settings(vm, "firewall") | ||||||
|                                                         "firewall") |  | ||||||
|         settings_window.exec_() |  | ||||||
| 
 | 
 | ||||||
|     # noinspection PyArgumentList |     # noinspection PyArgumentList | ||||||
|     @QtCore.pyqtSlot(name='on_action_global_settings_triggered') |     @QtCore.pyqtSlot(name='on_action_global_settings_triggered') | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marek Marczykowski-Górecki
						Marek Marczykowski-Górecki