def help(self): """ Пункт меню "помощь". """ cprint(u"\n\n____----******* ПОМОЩЬ ********----____\n", "magenta") print u"В процессе оформления..." print u"В процессе оформления..." print u"В процессе оформления..." print u"В процессе оформления..." print u"В процессе оформления..." cprint(u"\n****----_______________________----****\n", "magenta") raw_input(u"[ENTER для продолжения]") print "\n"
def checkSystemEnvironment(self): """ Проведение проверки на наличие всех необходимых инструметов и условий для работы программы. Возвращает: True/False - результат проверки на совместимость. При ошибке, на консоль выводятся сообщения об недостатках. """ # Проверка версии ОС. try: ("5.1", "5.2", "6.0", "6.1").index(self.checkWindowsVersion()) except Exception: cprint(u"ОШИБКА: ", "red", newline=False) print(u"неподдерживаемая операционная система версии %s" % self.checkWindowsVersion()) return False # Проверка наличия утилиты taskkill.exe. fileNames = ("taskkill.exe",) for item in fileNames: if not self.checkFilePath(item): cprint(u"ОШИБКА: ", "red", newline=False) print(u"не найден необходимый для работы программы файл %s" % item) return False return True
def reglament(self): """ Пункт меню "регламентные работы" """ # Сначала производим сбор информации через метод self.test и если сбор произошол успешный, # продолжаем работу. Иначе завершаем работу с сообщеинем об невозможности проветси регламент. testResult = self.test() if not testResult: cprint(u"\nОШИБКА ПРОВЕДЕНИЯ ТЕСТИРОВАНИЯ: ", "red", newline=False) print u"проведение регламентных работ невозможно\nдо устранения неисправностей, проявившихся при тестировании.\n" else: workList = ( { "name": u"ОЧИСТКА АРХИВА:\n", "print": True, "process": self.workArchiveDelete, "critical": True, }, ) # Запуск процесса регламента: for workProcess in workList: workProcess["process"].writeInfoLine = self.writeInfoLine cprint(u"\n%s\n" % workProcess["name"], "blue", newline=False) if workProcess["print"]: workProcess["process"].print_ = True result = workProcess["process"].execReglament() # Проведение регламента. if not workProcess["print"]: if result: cprint(u"ОК", "green") else: cprint(u"ОШИБКА: ", "red", newline=False) if workProcess["process"].errorMessage: print workProcess["process"].errorMessage else: print u"неописанная ошибка." if not result and workProcess["critical"]: break exit(1)
def test(self): """ Пункт меню "тестирование комьютера" Возвращает: True/False - результат сбора информации. """ workList = ( { "name": u"СБОР ИНФОРМАЦИИ О КОМПЬЮТЕРЕ:\n", # Описание процесса. "print": True, # Выводить информацию о ходе работы на консоль. "process": self.workSystemInfo, # Класс, обрабатывающий задание. "critical": False, # Завершать-ли обработку при некорректном завершении обработки задания. }, { "name": u"ИНФОРМАЦИЯ ОБ АРХИВЕ:\n", "print": True, "process": self.workArchiveDelete, "critical": True, }, ) # Запуск процесса сбора информации: resultAll = True for workProcess in workList: workProcess["process"].writeInfoLine = self.writeInfoLine cprint(u"\n%s\n" % workProcess["name"], "blue", newline=False) if workProcess["print"]: workProcess["process"].print_ = True result = workProcess["process"].readInfo() # Чтение рабочей информации. if not workProcess["print"]: if result: cprint(u"ОК", "green") else: cprint(u"ОШИБКА: ", "red", newline=False) if workProcess["process"].errorMessage: print workProcess["process"].errorMessage else: print u"неописанная ошибка." if not result and workProcess["critical"]: # Если сбой в сборе информации критический - вернуть False. resultAll = False break return resultAll
def writeInfoLine(self, type_, text, title=""): """ Оформление вывода сообщение о текущем действиии рабочего класса (описывает загрушку метода writeInfoLine) Аргументы: type_ - (string) тип сообщения (ok, warning, error, fatal, info) text - текст сообщения title - заголовок сообщения (пишется перед текстом цвета, указанного в type_) """ # Проверка входящих данных: try: ("ok", "warning", "error", "fatal", "info").index(type_) except Exception: raise ValueError(u"Передано некорректное значение параметра type_ - %s" % type_) # Вывод информации на консоль: color = { "ok": "green", "warning": "yellow", "error": "red", "fatal": "red", "info": "" } about = { "ok": u"ОК", "warning": u"ВНИМАНИЕ", "error": u"ОШИБКА", "fatal": u"ФАТАЛЬНАЯ ОШИБКА", "info": "" } if title: cprint(u" " + title + ": ", f=color[type_], newline=False) print text elif type_ == "info": cprint(u" " + text, f=color[type_]) else: cprint(u" " + about[type_] + ": ", f=color[type_], newline=False) print text return None
def mainMenu(self): """ Основное меню программы """ while True: cprint(u"\n\n____----**** ОСНОВНОЕ МЕНЮ ****----____", "magenta") cprint(u"1. ТЕСТИРОВАНИЕ компьютера (без обработки);", "yellow") cprint(u"2. провести РЕГЛАМЕНТНЫЕ работы на компьютере;", "yellow") cprint(u"3. указать компьютера СИНХРОНИЗАЦИИ;", "yellow") cprint(u"4. ПОМОЩЬ;", "yellow") cprint(u"0. ВЫХОД;", "red") cprint(u"****----_______________________----****\n", "magenta") # Обработка ошибок ввода: try: input_ = input(u"ВВОД: ") try: (0, 1, 2, 3).index(input_) except Exception: cprint(u"\nОШИБКА: ", "red", newline=False) print u"необходимо ввести цифру иеню 1-3, или 0 для выхода из программы." time.sleep(1) continue except Exception: cprint(u"\nОШИБКА: ", "red", newline=False) print u"необходимо вводить только цифры номеров элементов меню." time.sleep(1) continue # Обработка элементов меню. if not input_: # Выход из программы. return elif input_ == 1: # Тестирование комьпютера. cprint(u"\n\n____----**** ТЕСТИРОВАНИЕ КОМПЬЮТЕРА ****----____\n", "magenta") self.test() cprint(u"\n****----_________________________________----****\n", "magenta") raw_input(u"[ENTER для продолжения]") elif input_ == 2: # Регламентные работы. cprint(u"\n\n____----**** РЕГЛАМЕНТНЫЕ РАБОТЫ ****----____\n", "magenta") self.reglament() cprint(u"\n****----_________________________________----****\n", "magenta") raw_input(u"[ENTER для продолжения]") elif input_ == 3: # Указать компьютер синхронизации. pass elif input_ == 4: # Помощь. self.help()
except Exception: cprint(u"\nОШИБКА: ", "red", newline=False) print u"необходимо вводить только цифры номеров элементов меню." time.sleep(1) continue # Обработка элементов меню. if not input_: # Выход из программы. return elif input_ == 1: # Тестирование комьпютера. cprint(u"\n\n____----**** ТЕСТИРОВАНИЕ КОМПЬЮТЕРА ****----____\n", "magenta") self.test() cprint(u"\n****----_________________________________----****\n", "magenta") raw_input(u"[ENTER для продолжения]") elif input_ == 2: # Регламентные работы. cprint(u"\n\n____----**** РЕГЛАМЕНТНЫЕ РАБОТЫ ****----____\n", "magenta") self.reglament() cprint(u"\n****----_________________________________----****\n", "magenta") raw_input(u"[ENTER для продолжения]") elif input_ == 3: # Указать компьютер синхронизации. pass elif input_ == 4: # Помощь. self.help() if __name__ == '__main__': m = Menu() cprint(u"Проверка рабочей среды ..... ", newline=False) result = m.checkSystemEnvironment() if result: cprint(u"OK", "green")