From 6128a67b20b13b2b5d6a4fdf12d26108943cf183 Mon Sep 17 00:00:00 2001 From: Lev Rusanov <30170278+JDM170@users.noreply.github.com> Date: Fri, 25 Oct 2024 00:49:16 +0700 Subject: [PATCH] Update * Some refactor in main.py, filesio.py * Fix settings.json * Update README.md * Fix indents in .gitmodules Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com> --- .gitmodules | 4 ++-- README.md | 7 ++++++- filesio.py | 34 +++++++++++++++++----------------- main.py | 43 +++++++++++++++++++++---------------------- settings.json | 4 ++-- 5 files changed, 48 insertions(+), 44 deletions(-) diff --git a/.gitmodules b/.gitmodules index 840a0fb..009b0da 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "m_match_name"] - path = m_match_name - url = https://github.com/JDM170/m_match_name + path = m_match_name + url = https://github.com/JDM170/m_match_name diff --git a/README.md b/README.md index 11464d4..738944f 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,12 @@ python main.py --- -Сборка: +Сборка (без UPX): +``` +pyinstaller --clean --console --onefile --name comp_auto_restart main.py +``` + +Сборка (с UPX): ``` pyinstaller --clean --console --onefile --upx-dir=upx\ --name comp_auto_restart main.py ``` diff --git a/filesio.py b/filesio.py index 9584d96..63313c2 100644 --- a/filesio.py +++ b/filesio.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- from json import load, dump, JSONDecodeError -from os.path import exists +from os.path import isfile from os import remove @@ -12,28 +12,28 @@ class FilesIO: self.default_values = default_values def create_default_file(self): - if self.default_values is not None: - if exists(self.file_name): - remove(self.file_name) - with open(self.file_name, encoding="utf-8", mode="w") as f: - dump(self.default_values, f, indent=4, separators=(",", " : ")) + if self.default_values is None: + return + if isfile(self.file_name): + remove(self.file_name) + with open(self.file_name, encoding="utf-8", mode="w") as f: + dump(self.default_values, f, indent=4, separators=(",", " : ")) def check_file_structure(self, file_data): - if self.default_values is not None: - return file_data.keys() == self.default_values.keys() + if self.default_values is None: + return False + return file_data.keys() == self.default_values.keys() def get_data(self): ret_data, err_msg = False, "" + if isfile(self.file_name) is False: + self.create_default_file() try: with open(self.file_name, encoding="utf-8", mode="r") as f: ret_data = load(f) - if not self.check_file_structure(ret_data): - err_msg = "В файле настроек не хватает данных. Пересоздайте файл с настройками." - ret_data = False - except FileNotFoundError: - err_msg = "Файл не найден. Создан новый шаблонный файл." - self.create_default_file() except JSONDecodeError: - err_msg = "Ошибка загрузки файла, проверьте на наличие ошибок." - finally: - return ret_data, err_msg + return False, "Ошибка загрузки файла, проверьте файл на наличие ошибок." + if not self.check_file_structure(ret_data): + ret_data = False + err_msg = "В файле настроек не хватает данных. Удалите или пересоздайте файл с настройками." + return ret_data, err_msg diff --git a/main.py b/main.py index 4712efd..56a2090 100644 --- a/main.py +++ b/main.py @@ -2,7 +2,6 @@ # -*- coding: utf-8 -*- from sys import exit, argv -from os import system, getcwd from subprocess import Popen from filesio import FilesIO from m_match_name.main import MatchIO @@ -24,41 +23,41 @@ default_values = { } } loaded_file = None +is_debug = False -def main(comp_key, is_debug): - global loaded_file +def main(comp_key): + global loaded_file, is_debug list_pc_names = loaded_file.get("pc").get(comp_key) - if list_pc_names is not None: - restart_time = loaded_file.get("restart_time") - restart_message = loaded_file.get("restart_message") - for pc_name in list_pc_names: - formatted_pc_name = matchio.check_pc_name(pc_name) - if formatted_pc_name is not False: - if is_debug is False: - # system("shutdown /m \\\{} /r /f /t 60 /c \"Плановая перезагрузка компьютера через 1 минуту!\"".format(formatted_pc_name)) - Popen("shutdown /m \\\{} /r /f /t {} /c {}".format(formatted_pc_name, restart_time, restart_message)).wait() - sleep(2) - else: - print("shutdown /m \\\{} /r /f /t {} /c {}".format(formatted_pc_name, restart_time, restart_message)) - else: + if list_pc_names is None: print("Попробуйте еще раз выбрать область запуска скрипта!") + exit() + restart_time = loaded_file.get("restart_time") + restart_message = loaded_file.get("restart_message") + for pc_name in list_pc_names: + formatted_pc_name = matchio.check_pc_name(pc_name) + if formatted_pc_name is False: + continue + if is_debug is False: + Popen("shutdown /m \\\{} /r /f /t {} /c {}".format(formatted_pc_name, restart_time, restart_message)).wait() + sleep(2) + else: + print("shutdown /m \\\{} /r /f /t {} /c {}".format(formatted_pc_name, restart_time, restart_message)) if __name__ == "__main__": - print(argv) if len(argv) < 2: print("Укажите номер запускаемой области!\n1 - Кабинеты; 2 - Цех") exit() + if len(argv) == 3: + is_debug = argv[2].strip() == "debug" try: filesio = FilesIO(default_values=default_values) loaded_file, err_msg = filesio.get_data() if loaded_file is False: - raise Exception(err_msg) + print(err_msg) + exit() matchio = MatchIO() - main(argv[1], argv[2].strip() == "debug") - except Exception as exc: - print(exc) - exit() + main(argv[1]) except KeyboardInterrupt: exit() diff --git a/settings.json b/settings.json index 201bf51..d963ad3 100644 --- a/settings.json +++ b/settings.json @@ -2,13 +2,13 @@ "restart_time": 60, "restart_message": "Плановая перезагрузка компьютера через 1 минуту!", "pc" : { - "2" : [ + "1" : [ "IT01", "IT02", "630870MMP01", "R54-630870MMP02" ], - "7" : [ + "2" : [ "PIS09", "PIS10", "630870THE01",