From 89b208bc44b0aea2ece91209a2967b166cd09293 Mon Sep 17 00:00:00 2001 From: Akos Date: Tue, 29 Aug 2023 01:23:26 +0200 Subject: [PATCH 1/5] no egg-info --- analogic/analogic.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/analogic/analogic.py b/analogic/analogic.py index b61e0230..e3a811d7 100644 --- a/analogic/analogic.py +++ b/analogic/analogic.py @@ -272,6 +272,7 @@ def _register_extension_components(app, extension_name, files): issubclass(obj, AuthenticationProvider): app.register_authentication_provider(name, extension_name) + if inspect.isclass(obj) and \ not inspect.isabstract(obj) and \ issubclass(obj, Condition): @@ -300,7 +301,7 @@ def _load_module(app, check_prefix, module_dir_name, modules_dir, register_func) module_dir = os.path.join(modules_dir, module_dir_name) if os.path.isdir(module_dir) and module_dir_name != '.git' and module_dir_name != 'tests' and ( check_prefix is False or ( - module_dir_name.startswith(ALLOWED_EXTENSION_PREFIX) and not module_dir_name.endswith('dist-info'))): + module_dir_name.startswith(ALLOWED_EXTENSION_PREFIX) and not module_dir_name.endswith('dist-info') and not module_dir_name.endswith('egg-info'))): # workaround to handle repeating names in module path if module_dir_name == modules_dir.rsplit('/', 1)[-1]: From 1a845c63ea747606066af146a3859ca7ba99042b Mon Sep 17 00:00:00 2001 From: Akos Date: Tue, 29 Aug 2023 07:34:46 +0200 Subject: [PATCH 2/5] More logging and safety checks around app and extension registration --- analogic/analogic.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/analogic/analogic.py b/analogic/analogic.py index e3a811d7..a8ac7249 100644 --- a/analogic/analogic.py +++ b/analogic/analogic.py @@ -249,7 +249,6 @@ def _append_extension_dir_to_path(app, modules_dir_name): def _register_extension(app, extension_dir, extension_dir_name, modules): _register_extension_components(app, extension_dir_name, modules) - _register_extension_assets(app, extension_dir) @@ -269,16 +268,22 @@ def _register_extension_components(app, extension_name, files): for name, obj in inspect.getmembers(sys.modules[module]): if inspect.isclass(obj) and \ not inspect.isabstract(obj) and \ - issubclass(obj, AuthenticationProvider): + issubclass(obj, AuthenticationProvider) and \ + app.authentication_providers.get(name) is None: + logging.getLogger(__name__).info('Registering authentication provider ' + extension_name + "." + name) app.register_authentication_provider(name, extension_name) if inspect.isclass(obj) and \ not inspect.isabstract(obj) and \ - issubclass(obj, Condition): + issubclass(obj, Condition) and \ + app.conditions.get(name) is None: + logging.getLogger(__name__).info('Registering condition ' + extension_name + "." + name) app.register_condition(name, extension_name) + if isinstance(obj, AnalogicEndpoint): + logging.getLogger(__name__).info('Registering analogic endpoing ' + name) app.register_analogic_endpoint(obj) @@ -314,7 +319,6 @@ def _load_module(app, check_prefix, module_dir_name, modules_dir, register_func) def _register_application(app, application_dir, application_name, files): - _register_extension_components(app, application_name, files) assets_extra = _fast_scan_dir(application_dir + "/static/assets/extra", ['.css', '.js'])[1] app.register_extension_assets(assets_extra) @@ -327,8 +331,9 @@ def _register_application(app, application_dir, application_name, files): continue for name, obj in inspect.getmembers(sys.modules[module]): - if isinstance(obj, Blueprint): + if isinstance(obj, Blueprint) and app.analogic_applications.get(obj.name) is None: app.register_application(application_dir=application_dir, blueprint=obj) + logging.getLogger(__name__).info('Registering application ' + application_name + " with blueprint " + name) def _fast_scan_dir(directory, ext): From a97a87da58f04bba92e7886da0c5b12c0438ae6a Mon Sep 17 00:00:00 2001 From: Akos Date: Tue, 29 Aug 2023 10:20:41 +0200 Subject: [PATCH 3/5] Bumping verison to 4.1.9-dev0 --- analogic/version.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analogic/version.config b/analogic/version.config index a7c00da3..b2e16aef 100644 --- a/analogic/version.config +++ b/analogic/version.config @@ -1 +1 @@ -4.1.8 +4.1.9-dev0 From 392d77adcb7f59e1cb9be8b185c13ead802ff518 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oravecz=20Tam=C3=A1s?= Date: Tue, 29 Aug 2023 11:16:51 +0200 Subject: [PATCH 4/5] assets_extra_dir fix --- analogic/analogic.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/analogic/analogic.py b/analogic/analogic.py index a8ac7249..7fc5dbba 100644 --- a/analogic/analogic.py +++ b/analogic/analogic.py @@ -320,8 +320,10 @@ def _load_module(app, check_prefix, module_dir_name, modules_dir, register_func) def _register_application(app, application_dir, application_name, files): _register_extension_components(app, application_name, files) - assets_extra = _fast_scan_dir(application_dir + "/static/assets/extra", ['.css', '.js'])[1] - app.register_extension_assets(assets_extra) + assets_extra_dir = os.path.join(application_dir, 'static', 'assets', 'extra') + if os.path.exists(assets_extra_dir): + assets_extra = _fast_scan_dir(assets_extra_dir, ['.css', '.js'])[1] + app.register_extension_assets(assets_extra) for file in files: module = application_name + '.' + file From 969ff3f42ab810b6ee1362f46a1fd84105839f27 Mon Sep 17 00:00:00 2001 From: Akos Date: Tue, 29 Aug 2023 13:14:55 +0200 Subject: [PATCH 5/5] Adding repeating name support --- analogic/analogic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analogic/analogic.py b/analogic/analogic.py index 7fc5dbba..011dbc3b 100644 --- a/analogic/analogic.py +++ b/analogic/analogic.py @@ -309,7 +309,7 @@ def _load_module(app, check_prefix, module_dir_name, modules_dir, register_func) module_dir_name.startswith(ALLOWED_EXTENSION_PREFIX) and not module_dir_name.endswith('dist-info') and not module_dir_name.endswith('egg-info'))): # workaround to handle repeating names in module path - if module_dir_name == modules_dir.rsplit('/', 1)[-1]: + if module_dir_name == modules_dir.rsplit('/', 1)[-1] or module_dir_name == modules_dir.rsplit('\\', 1)[-1]: module_dir_name = module_dir_name + '.' + module_dir_name files = resources.contents(module_dir_name)