NPS Managed не переключает формы - PullRequest
0 голосов
/ 21 мая 2019

Когда в одном из моих модулей возникает ошибка, я спрашиваю, не хочет ли пользователь попробовать запустить метод снова. Если они выбирают «Да», всплывающее окно очищается, и метод запускается снова. Если они выбирают «Нет», предполагается, что исключение NPSManaged.switchForm ('MAIN') возвращается на главный экран, но форма не меняется.

Я удалил его из цикла while. Я также попытался установить атрибут редактирования формы в false перед изменением формы. Я вставил оператор print () перед switchForm, чтобы гарантировать выполнение блока кода.

class RunAnsible(ns.Form):

...
    def errorHandling(self, function, *args):
        while True:
            try:
                function(*args)
                break
            except RunError:
                unreachable = ns.notify_yes_no('Run Error', title="Ansible Error - Run Error", form_color='DANGER', editw=1)
                if unreachable == True:
                    self.display()
                else:
                    self.parentApp.switchForm('MAIN')
            except FailedError:
                unreachable = ns.notify_yes_no('Failed Error', title="Ansible Error - Failed", form_color='DANGER', wrap=True, editw=1)
                if unreachable == True:
                    self.display()
                else:
                    self.parentApp.switchForm('MAIN')
            # If an UnreachableError is raised, pop up a notification asking if the IP is correct
            except UnreachableError:
                runAgain = ns.notify_yes_no('Host was unreachable. Would you like to try and run again?', title='Host Unreachable', form_color='DANGER', editw=1)
                if runAgain == True:
                    self.display()
                else:
                    self.parentApp.switchForm('MAIN')
            except TimeoutError:
                ns.notify_wait(message='Timeout Error Raised')
            except UnknownError:
                unreachable = ns.notify_yes_no('Unknown Error', title="Ansible Error - Unknown", form_color='DANGER', wrap=True, editw=1)
                if unreachable == True:
                    self.display()
                else:
                    self.parentApp.switchForm('MAIN')

Если метод в начале цикла while вызывает исключение, он обрабатывается npyscreen, вызывающим окно уведомления. Если notify_yes_no возвращает false, NPSManagedApp должен перейти в форму MAIN.

...