diff --git a/Sources/pyOpenRPA/Orchestrator/Server.py b/Sources/pyOpenRPA/Orchestrator/Server.py index 29fe84a3..3f877ad3 100755 --- a/Sources/pyOpenRPA/Orchestrator/Server.py +++ b/Sources/pyOpenRPA/Orchestrator/Server.py @@ -222,13 +222,17 @@ def InitFastAPI(): ServerSettings.SettingsUpdate() BCURLUpdate() -def BCURLUpdate(): +def BCURLUpdate(inExceptionFlagBool:bool=True): for lConnectItemDict in __Orchestrator__.GSettingsGet()["ServerDict"]["URLList"]: if "BCBool" not in lConnectItemDict: if "ResponseFolderPath" in lConnectItemDict: - app.mount(lConnectItemDict["URL"], - StaticFiles(directory=CrossOS.PathStr(lConnectItemDict["ResponseFolderPath"])), - name=lConnectItemDict["URL"].replace('/',"_")) + try: + app.mount(lConnectItemDict["URL"], + StaticFiles(directory=CrossOS.PathStr(lConnectItemDict["ResponseFolderPath"])), + name=lConnectItemDict["URL"].replace('/',"_")) + except: + if inExceptionFlagBool: raise RuntimeError("Fatal error. Bad FolderPath") + else: pass else: if lConnectItemDict.get("MatchType") in ["BeginWith", "EqualCase", "Equal","EqualNoParam"]: if lConnectItemDict.get("UACBool",True): diff --git a/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py b/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py index 85ad8f0c..02029da6 100755 --- a/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py +++ b/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py @@ -1223,13 +1223,14 @@ def WebURLConnectDef(inMethodStr, inURLStr, inMatchTypeStr, inDef, inContentType Server.BCURLUpdate() -def WebURLConnectFolder(inMethodStr, inURLStr, inMatchTypeStr, inFolderPathStr, inGSettings = None, inUACBool = None, inUseCacheBool= False): +def WebURLConnectFolder(inMethodStr, inURLStr, inMatchTypeStr, inFolderPathStr, inExceptionFlagBool=False, inGSettings = None, inUACBool = None, inUseCacheBool= False): """L+,W+: Подключить папку к URL. :param inMethodStr: Метод доступа по URL "GET" || "POST" :param inURLStr: URL адрес. Пример "/index" :param inMatchTypeStr: Тип соответсвия строки URL с inURLStr: "BeginWith" || "Contains" || "Equal" || "EqualCase" || "EqualNoParam" :param inFolderPathStr: Путь к папке на диске, в которой искать файл и возвращать пользователю по HTTP + :param inExceptionFlagBool: Флаг на обработку ошибки. True - показывать ошибку в терминале (остановка инициализации), False - не показывать :param inUACBool: True - Выполнять проверку прав доступа пользователя перед отправкой ответа; False - не выполнять проверку прав доступа пользователя :param inUseCacheBool: True - выполнить кэширование страницы, чтобы в следющих запросах открыть быстрее; False - не кэшировать :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) @@ -1251,7 +1252,7 @@ def WebURLConnectFolder(inMethodStr, inURLStr, inMatchTypeStr, inFolderPathStr, "UseCacheBool": inUseCacheBool } inGSettings["ServerDict"]["URLList"].append(lURLItemDict) - Server.BCURLUpdate() + Server.BCURLUpdate(inExceptionFlagBool) def WebURLConnectFile(inMethodStr, inURLStr, inMatchTypeStr, inFilePathStr, inContentTypeStr=None, inGSettings = None, inUACBool = None, inUseCacheBool = False): diff --git a/changelog.md b/changelog.md index 14edc6dc..67acea22 100755 --- a/changelog.md +++ b/changelog.md @@ -13,6 +13,7 @@ AGT - AGENT - - Utils: Disk - подготовка файлов / папок, если они не обнаружены (полезно при первом запуске, если требуются БД/ Файлы хранилищ) - - Jupyter: запуск из директорий, пути к которым содержат пробелы - - PyOpenRPA: autodocsumm - добавлено к пакетам. +- - Исправлено неправильное поведение оркестратора при авторизации в браузере Firefox. - ОРКЕСТРАТОР - - Исправление совместимости URL путей с некорыми ресурсами для отработки в LINUX - - Поддержка многотысячной аудитории, одновременно работающей в панели управления (async server-data server-log with fastapi) @@ -26,13 +27,15 @@ AGT - AGENT - - Возможность авторизации в формате login@domain - - Переработана система обработки AuthTokenStr==None. Теперь поднимается exception в случаях, когда авторизация производилась, но AuthTokenStr==None - - Добавлена новая функция - Orchestrator.OrchestratorIsCredentialsAsk. Определяет была ли произведена авторизация пользователя +- - WebURLConnectFolder - переработано. Добавлен флаг обработки ошибки, позволяющий продолжить инициализацию оркестратора, если папки не существует +- - Переработана система авторизации. Добавлена форма, появляющаяся при неудачной попытке авторизации. - РОБОТ - - Убрали лишний print из Screen.BoxAnchorRuleCheck - - pyOpenRPA.Robot.UIWeb.BrowserChromeStart - добавлен флаг печати в PDF и директория для сохранения при инициализации браузера - - Добавлена новая функция - pyOpenRPA.Robot.UIWeb.PagePrint. Вызывает окно печати браузера - - pyOpenRPA.Robot.UIWeb.UIOSelectorClick - исправлено. Теперь работает и с XPath, и с CSS - - Добавлена новая функция - pyOpenRPA.Robot.UIWeb.UIOSelectorSetValue. Изменение атрибута value по заданному UIOSelector элемента -- - pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList - Исправлена обработка exceptions. Теперь флаг ловит все исключения +- - pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList - исправлена обработка exceptions. Теперь флаг ловит все исключения [1.3.1] - ОРКЕСТРАТОР