From 68c136a16f3253bf432867b1c237c9ee357e4a17 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 3 Mar 2021 10:47:52 +0100 Subject: [PATCH 001/228] Refactored code --- .gitignore | 1 + .idea/sh_common_py_lib.iml | 13 +- .idea/workspace.xml | 288 +++++++++++++++--- src/build.json | 66 ---- src/{tests/publish_test => cpl}/__init__.py | 0 .../application}/__init__.py | 0 src/cpl/application/application_abc.py | 32 ++ src/cpl/application/application_host.py | 42 +++ src/cpl/application/application_host_abc.py | 23 ++ src/cpl/application/application_runtime.py | 38 +++ .../application/application_runtime_abc.py | 34 +++ src/cpl/application/startup_abc.py | 20 ++ .../configuration}/__init__.py | 0 src/cpl/configuration/configuration.py | 118 +++++++ src/cpl/configuration/configuration_abc.py | 31 ++ .../configuration/configuration_model_abc.py} | 4 +- .../configuration_variable_name.py | 0 .../utils_test => cpl/console}/__init__.py | 0 .../model => cpl/console}/background_color.py | 0 src/cpl/console/console.py | 205 +++++++++++++ .../model => cpl/console}/foreground_color.py | 0 src/cpl/database/__init__.py | 0 src/cpl/database/connection/__init__.py | 0 .../connection/database_connection.py | 58 ++++ .../connection/database_connection_abc.py | 21 ++ src/cpl/database/context/__init__.py | 0 src/cpl/database/context/database_context.py | 50 +++ .../database/context/database_context_abc.py | 21 ++ src/cpl/database/database_model.py | 3 + src/cpl/database/database_settings.py | 90 ++++++ src/cpl/database/database_settings_name.py | 11 + src/cpl/dependency_injection/__init__.py | 0 .../dependency_injection}/provide_state.py | 0 src/cpl/dependency_injection/service_abc.py | 7 + .../dependency_injection/service_provider.py | 95 ++++++ .../service_provider_base.py | 33 ++ src/cpl/environment/__init__.py | 0 src/cpl/environment/environment_abc.py | 43 +++ .../environment}/environment_name.py | 0 src/cpl/environment/hosting_environment.py | 52 ++++ src/cpl/logging/__init__.py | 0 src/cpl/logging/logger.py | 195 ++++++++++++ src/cpl/logging/logger_abc.py | 31 ++ .../model => cpl/logging}/logging_level.py | 0 src/cpl/logging/logging_settings.py | 62 ++++ .../logging}/logging_settings_name.py | 0 src/cpl/mailing/__init__.py | 0 .../mailing/model => cpl/mailing}/email.py | 0 src/cpl/mailing/email_client.py | 70 +++++ src/cpl/mailing/email_client_abc.py | 17 ++ src/cpl/mailing/email_client_settings.py | 59 ++++ .../mailing}/email_client_settings_name.py | 0 src/cpl/time/__init__.py | 0 src/cpl/time/time_format_settings.py | 61 ++++ .../time}/time_format_settings_names.py | 0 src/cpl/utils/__init__.py | 0 .../utils/credential_manager.py | 0 src/cpl_cli/__init__.py | 0 src/sh_edraft/cli/__init__.py | 25 -- src/sh_edraft/cli/command/__init__.py | 25 -- src/sh_edraft/cli/command/base/__init__.py | 26 -- .../cli/command/base/command_base.py | 15 - src/sh_edraft/cli/cpl_cli/__init__.py | 26 -- src/sh_edraft/cli/cpl_cli/cli.py | 42 --- .../cli/cpl_cli/commands/__init__.py | 28 -- .../cli/cpl_cli/commands/build/__init__.py | 27 -- .../cli/cpl_cli/commands/build/app.py | 47 --- .../cli/cpl_cli/commands/build/build.py | 23 -- src/sh_edraft/cli/cpl_cli/commands/help.py | 27 -- src/sh_edraft/cli/cpl_cli/commands/new.py | 97 ------ .../cli/cpl_cli/commands/publish/__init__.py | 27 -- .../cli/cpl_cli/commands/publish/app.py | 48 --- .../cli/cpl_cli/commands/publish/publish.py | 23 -- src/sh_edraft/cli/cpl_cli/commands/version.py | 42 --- .../cli/cpl_cli/templates/app/__init__.txt | 1 - .../cli/cpl_cli/templates/app/build.json | 22 -- .../cli/cpl_cli/templates/app/main.txt | 8 - .../cli/cpl_cli/templates/app/program.txt | 43 --- .../cli/cpl_cli/templates/class/class.txt | 4 - .../cpl_cli/templates/configmodel/model.txt | 20 -- .../cli/cpl_cli/templates/enum/enum.txt | 6 - .../cli/cpl_cli/templates/service/service.txt | 6 - src/sh_edraft/cli/interpreter/__init__.py | 26 -- src/sh_edraft/cli/interpreter/interpreter.py | 33 -- src/sh_edraft/publishing/__init__.py | 26 -- src/sh_edraft/publishing/base/__init__.py | 26 -- src/sh_edraft/publishing/model/__init__.py | 29 -- src/tests/Application.py | 45 +++ src/tests/Startup.py | 52 ++++ src/tests/__init__.py | 25 -- src/tests/appsettings.development.json | 8 + src/tests/appsettings.edrafts-lapi.json | 43 +++ src/tests/appsettings.edrafts-pc.json | 9 + src/tests/cpl.json | 0 src/tests/main.py | 8 + src/tests_dev/db/city.py | 14 - src/tests_dev/db/user.py | 18 -- src/tests_dev/db/user_repo.py | 23 -- src/tests_dev/db/user_repo_base.py | 10 - {src => src_old}/MANIFEST.in | 0 {src => src_old}/setup.py | 0 {src => src_old}/sh_edraft/__init__.py | 0 {src => src_old}/sh_edraft/coding/__init__.py | 0 .../sh_edraft/coding/model/__init__.py | 0 .../sh_edraft/coding/model/version.py | 0 .../sh_edraft/coding/model/version_enum.py | 0 .../sh_edraft/configuration/__init__.py | 0 .../sh_edraft/configuration/base/__init__.py | 0 .../configuration/base/configuration_base.py | 0 .../base/configuration_model_base.py | 0 .../sh_edraft/configuration/configuration.py | 0 .../sh_edraft/configuration/model/__init__.py | 0 .../model/configuration_variable_name.py | 12 + .../sh_edraft/console/__init__.py | 0 {src => src_old}/sh_edraft/console/console.py | 0 .../sh_edraft/console/model/__init__.py | 0 .../console/model/background_color.py | 14 + .../console/model/foreground_color.py | 14 + .../sh_edraft/database/__init__.py | 0 .../sh_edraft/database/connection/__init__.py | 0 .../database/connection/base/__init__.py | 0 .../base/database_connection_base.py | 0 .../connection/database_connection.py | 0 .../sh_edraft/database/context/__init__.py | 0 .../database/context/base/__init__.py | 0 .../context/base/database_context_base.py | 0 .../database/context/database_context.py | 0 .../sh_edraft/database/model/__init__.py | 0 .../database/model/database_settings.py | 0 .../database/model/database_settings_name.py | 0 .../sh_edraft/database/model/dbmodel.py | 0 .../sh_edraft/environment/__init__.py | 0 .../sh_edraft/environment/base/__init__.py | 0 .../environment/base/environment_base.py | 0 .../environment/hosting_environment.py | 0 .../sh_edraft/environment/model/__init__.py | 0 .../environment/model/environment_name.py | 9 + .../sh_edraft/hosting/__init__.py | 0 .../sh_edraft/hosting/application_host.py | 0 .../sh_edraft/hosting/application_runtime.py | 0 .../sh_edraft/hosting/base/__init__.py | 0 .../hosting/base/application_base.py | 0 .../hosting/base/application_host_base.py | 0 .../hosting/base/application_runtime_base.py | 0 .../sh_edraft/hosting/model/__init__.py | 0 .../sh_edraft/logging/__init__.py | 0 .../sh_edraft/logging/base/__init__.py | 0 .../sh_edraft/logging/base/logger_base.py | 0 {src => src_old}/sh_edraft/logging/logger.py | 0 .../sh_edraft/logging/model/__init__.py | 0 .../sh_edraft/logging/model/logging_level.py | 12 + .../logging/model/logging_settings.py | 0 .../logging/model/logging_settings_name.py | 9 + .../sh_edraft/mailing/__init__.py | 0 .../sh_edraft/mailing/base/__init__.py | 0 .../mailing/base/email_client_base.py | 0 .../sh_edraft/mailing/email_client.py | 0 .../sh_edraft/mailing/model/__init__.py | 0 src_old/sh_edraft/mailing/model/email.py | 86 ++++++ .../mailing/model/email_client_settings.py | 0 .../model/email_client_settings_name.py | 9 + .../sh_edraft/publish/base/publisher_base.py | 0 .../publish/model/publish_settings_model.py | 0 .../publish/model/publish_settings_name.py | 0 .../sh_edraft/publish/model/template.py | 0 .../sh_edraft/publish/model/template_enum.py | 0 .../sh_edraft/publish/publisher.py | 0 .../sh_edraft/service/__init__.py | 0 .../sh_edraft/service/base/__init__.py | 0 .../sh_edraft/service/base/service_base.py | 0 .../sh_edraft/service/providing/__init__.py | 0 .../service/providing/base/__init__.py | 0 .../providing/base/service_provider_base.py | 0 .../service/providing/model/__init__.py | 0 .../service/providing/model/provide_state.py | 18 ++ .../service/providing/service_provider.py | 0 {src => src_old}/sh_edraft/time/__init__.py | 0 .../sh_edraft/time/model/__init__.py | 0 .../time/model/time_format_settings.py | 0 .../time/model/time_format_settings_names.py | 9 + {src => src_old}/sh_edraft/utils/__init__.py | 0 src_old/sh_edraft/utils/credential_manager.py | 17 ++ .../db => src_old/tests}/__init__.py | 4 +- src_old/tests/appsettings.edrafts-lapi.json | 20 ++ src_old/tests/appsettings.edrafts-pc.json | 20 ++ .../tests}/appsettings.json | 0 .../tests/appsettings.testing.json | 0 {src => src_old}/tests/build.json | 0 src_old/tests/publish_test/__init__.py | 0 .../tests/publish_test/publisher_test.py | 0 src_old/tests/service_test/__init__.py | 0 .../tests/service_test/provider_test.py | 0 {src => src_old}/tests/setup.py | 0 src_old/tests/time_test/__init__.py | 0 .../time_test/time_format_settings_test.py | 0 src_old/tests/utils_test/__init__.py | 0 .../utils_test/credential_manager_test.py | 0 {src => src_old}/tests_dev/__init__.py | 0 src_old/tests_dev/app.py | 2 + .../tests_dev/appsettings.development.json | 0 .../tests_dev/appsettings.edrafts-lapi.json | 0 .../tests_dev/appsettings.edrafts-pc.json | 0 src_old/tests_dev/appsettings.json | 15 + {src => src_old}/tests_dev/main.py | 0 {src => src_old}/tests_dev/program.py | 0 205 files changed, 2207 insertions(+), 1010 deletions(-) delete mode 100644 src/build.json rename src/{tests/publish_test => cpl}/__init__.py (100%) rename src/{tests/service_test => cpl/application}/__init__.py (100%) create mode 100644 src/cpl/application/application_abc.py create mode 100644 src/cpl/application/application_host.py create mode 100644 src/cpl/application/application_host_abc.py create mode 100644 src/cpl/application/application_runtime.py create mode 100644 src/cpl/application/application_runtime_abc.py create mode 100644 src/cpl/application/startup_abc.py rename src/{tests/time_test => cpl/configuration}/__init__.py (100%) create mode 100644 src/cpl/configuration/configuration.py create mode 100644 src/cpl/configuration/configuration_abc.py rename src/{sh_edraft/cli/cpl_cli/templates/base/base.txt => cpl/configuration/configuration_model_abc.py} (57%) rename src/{sh_edraft/configuration/model => cpl/configuration}/configuration_variable_name.py (100%) rename src/{tests/utils_test => cpl/console}/__init__.py (100%) rename src/{sh_edraft/console/model => cpl/console}/background_color.py (100%) create mode 100644 src/cpl/console/console.py rename src/{sh_edraft/console/model => cpl/console}/foreground_color.py (100%) create mode 100644 src/cpl/database/__init__.py create mode 100644 src/cpl/database/connection/__init__.py create mode 100644 src/cpl/database/connection/database_connection.py create mode 100644 src/cpl/database/connection/database_connection_abc.py create mode 100644 src/cpl/database/context/__init__.py create mode 100644 src/cpl/database/context/database_context.py create mode 100644 src/cpl/database/context/database_context_abc.py create mode 100644 src/cpl/database/database_model.py create mode 100644 src/cpl/database/database_settings.py create mode 100644 src/cpl/database/database_settings_name.py create mode 100644 src/cpl/dependency_injection/__init__.py rename src/{sh_edraft/service/providing/model => cpl/dependency_injection}/provide_state.py (100%) create mode 100644 src/cpl/dependency_injection/service_abc.py create mode 100644 src/cpl/dependency_injection/service_provider.py create mode 100644 src/cpl/dependency_injection/service_provider_base.py create mode 100644 src/cpl/environment/__init__.py create mode 100644 src/cpl/environment/environment_abc.py rename src/{sh_edraft/environment/model => cpl/environment}/environment_name.py (100%) create mode 100644 src/cpl/environment/hosting_environment.py create mode 100644 src/cpl/logging/__init__.py create mode 100644 src/cpl/logging/logger.py create mode 100644 src/cpl/logging/logger_abc.py rename src/{sh_edraft/logging/model => cpl/logging}/logging_level.py (100%) create mode 100644 src/cpl/logging/logging_settings.py rename src/{sh_edraft/logging/model => cpl/logging}/logging_settings_name.py (100%) create mode 100644 src/cpl/mailing/__init__.py rename src/{sh_edraft/mailing/model => cpl/mailing}/email.py (100%) create mode 100644 src/cpl/mailing/email_client.py create mode 100644 src/cpl/mailing/email_client_abc.py create mode 100644 src/cpl/mailing/email_client_settings.py rename src/{sh_edraft/mailing/model => cpl/mailing}/email_client_settings_name.py (100%) create mode 100644 src/cpl/time/__init__.py create mode 100644 src/cpl/time/time_format_settings.py rename src/{sh_edraft/time/model => cpl/time}/time_format_settings_names.py (100%) create mode 100644 src/cpl/utils/__init__.py rename src/{sh_edraft => cpl}/utils/credential_manager.py (100%) create mode 100644 src/cpl_cli/__init__.py delete mode 100644 src/sh_edraft/cli/__init__.py delete mode 100644 src/sh_edraft/cli/command/__init__.py delete mode 100644 src/sh_edraft/cli/command/base/__init__.py delete mode 100644 src/sh_edraft/cli/command/base/command_base.py delete mode 100644 src/sh_edraft/cli/cpl_cli/__init__.py delete mode 100644 src/sh_edraft/cli/cpl_cli/cli.py delete mode 100644 src/sh_edraft/cli/cpl_cli/commands/__init__.py delete mode 100644 src/sh_edraft/cli/cpl_cli/commands/build/__init__.py delete mode 100644 src/sh_edraft/cli/cpl_cli/commands/build/app.py delete mode 100644 src/sh_edraft/cli/cpl_cli/commands/build/build.py delete mode 100644 src/sh_edraft/cli/cpl_cli/commands/help.py delete mode 100644 src/sh_edraft/cli/cpl_cli/commands/new.py delete mode 100644 src/sh_edraft/cli/cpl_cli/commands/publish/__init__.py delete mode 100644 src/sh_edraft/cli/cpl_cli/commands/publish/app.py delete mode 100644 src/sh_edraft/cli/cpl_cli/commands/publish/publish.py delete mode 100644 src/sh_edraft/cli/cpl_cli/commands/version.py delete mode 100644 src/sh_edraft/cli/cpl_cli/templates/app/__init__.txt delete mode 100644 src/sh_edraft/cli/cpl_cli/templates/app/build.json delete mode 100644 src/sh_edraft/cli/cpl_cli/templates/app/main.txt delete mode 100644 src/sh_edraft/cli/cpl_cli/templates/app/program.txt delete mode 100644 src/sh_edraft/cli/cpl_cli/templates/class/class.txt delete mode 100644 src/sh_edraft/cli/cpl_cli/templates/configmodel/model.txt delete mode 100644 src/sh_edraft/cli/cpl_cli/templates/enum/enum.txt delete mode 100644 src/sh_edraft/cli/cpl_cli/templates/service/service.txt delete mode 100644 src/sh_edraft/cli/interpreter/__init__.py delete mode 100644 src/sh_edraft/cli/interpreter/interpreter.py delete mode 100644 src/sh_edraft/publishing/__init__.py delete mode 100644 src/sh_edraft/publishing/base/__init__.py delete mode 100644 src/sh_edraft/publishing/model/__init__.py create mode 100644 src/tests/Application.py create mode 100644 src/tests/Startup.py create mode 100644 src/tests/appsettings.development.json create mode 100644 src/tests/cpl.json create mode 100644 src/tests/main.py delete mode 100644 src/tests_dev/db/city.py delete mode 100644 src/tests_dev/db/user.py delete mode 100644 src/tests_dev/db/user_repo.py delete mode 100644 src/tests_dev/db/user_repo_base.py rename {src => src_old}/MANIFEST.in (100%) rename {src => src_old}/setup.py (100%) rename {src => src_old}/sh_edraft/__init__.py (100%) rename {src => src_old}/sh_edraft/coding/__init__.py (100%) rename {src => src_old}/sh_edraft/coding/model/__init__.py (100%) rename {src => src_old}/sh_edraft/coding/model/version.py (100%) rename {src => src_old}/sh_edraft/coding/model/version_enum.py (100%) rename {src => src_old}/sh_edraft/configuration/__init__.py (100%) rename {src => src_old}/sh_edraft/configuration/base/__init__.py (100%) rename {src => src_old}/sh_edraft/configuration/base/configuration_base.py (100%) rename {src => src_old}/sh_edraft/configuration/base/configuration_model_base.py (100%) rename {src => src_old}/sh_edraft/configuration/configuration.py (100%) rename {src => src_old}/sh_edraft/configuration/model/__init__.py (100%) create mode 100644 src_old/sh_edraft/configuration/model/configuration_variable_name.py rename {src => src_old}/sh_edraft/console/__init__.py (100%) rename {src => src_old}/sh_edraft/console/console.py (100%) rename {src => src_old}/sh_edraft/console/model/__init__.py (100%) create mode 100644 src_old/sh_edraft/console/model/background_color.py create mode 100644 src_old/sh_edraft/console/model/foreground_color.py rename {src => src_old}/sh_edraft/database/__init__.py (100%) rename {src => src_old}/sh_edraft/database/connection/__init__.py (100%) rename {src => src_old}/sh_edraft/database/connection/base/__init__.py (100%) rename {src => src_old}/sh_edraft/database/connection/base/database_connection_base.py (100%) rename {src => src_old}/sh_edraft/database/connection/database_connection.py (100%) rename {src => src_old}/sh_edraft/database/context/__init__.py (100%) rename {src => src_old}/sh_edraft/database/context/base/__init__.py (100%) rename {src => src_old}/sh_edraft/database/context/base/database_context_base.py (100%) rename {src => src_old}/sh_edraft/database/context/database_context.py (100%) rename {src => src_old}/sh_edraft/database/model/__init__.py (100%) rename {src => src_old}/sh_edraft/database/model/database_settings.py (100%) rename {src => src_old}/sh_edraft/database/model/database_settings_name.py (100%) rename {src => src_old}/sh_edraft/database/model/dbmodel.py (100%) rename {src => src_old}/sh_edraft/environment/__init__.py (100%) rename {src => src_old}/sh_edraft/environment/base/__init__.py (100%) rename {src => src_old}/sh_edraft/environment/base/environment_base.py (100%) rename {src => src_old}/sh_edraft/environment/hosting_environment.py (100%) rename {src => src_old}/sh_edraft/environment/model/__init__.py (100%) create mode 100644 src_old/sh_edraft/environment/model/environment_name.py rename {src => src_old}/sh_edraft/hosting/__init__.py (100%) rename {src => src_old}/sh_edraft/hosting/application_host.py (100%) rename {src => src_old}/sh_edraft/hosting/application_runtime.py (100%) rename {src => src_old}/sh_edraft/hosting/base/__init__.py (100%) rename {src => src_old}/sh_edraft/hosting/base/application_base.py (100%) rename {src => src_old}/sh_edraft/hosting/base/application_host_base.py (100%) rename {src => src_old}/sh_edraft/hosting/base/application_runtime_base.py (100%) rename {src => src_old}/sh_edraft/hosting/model/__init__.py (100%) rename {src => src_old}/sh_edraft/logging/__init__.py (100%) rename {src => src_old}/sh_edraft/logging/base/__init__.py (100%) rename {src => src_old}/sh_edraft/logging/base/logger_base.py (100%) rename {src => src_old}/sh_edraft/logging/logger.py (100%) rename {src => src_old}/sh_edraft/logging/model/__init__.py (100%) create mode 100644 src_old/sh_edraft/logging/model/logging_level.py rename {src => src_old}/sh_edraft/logging/model/logging_settings.py (100%) create mode 100644 src_old/sh_edraft/logging/model/logging_settings_name.py rename {src => src_old}/sh_edraft/mailing/__init__.py (100%) rename {src => src_old}/sh_edraft/mailing/base/__init__.py (100%) rename {src => src_old}/sh_edraft/mailing/base/email_client_base.py (100%) rename {src => src_old}/sh_edraft/mailing/email_client.py (100%) rename {src => src_old}/sh_edraft/mailing/model/__init__.py (100%) create mode 100644 src_old/sh_edraft/mailing/model/email.py rename {src => src_old}/sh_edraft/mailing/model/email_client_settings.py (100%) create mode 100644 src_old/sh_edraft/mailing/model/email_client_settings_name.py rename {src => src_old}/sh_edraft/publish/base/publisher_base.py (100%) rename {src => src_old}/sh_edraft/publish/model/publish_settings_model.py (100%) rename {src => src_old}/sh_edraft/publish/model/publish_settings_name.py (100%) rename {src => src_old}/sh_edraft/publish/model/template.py (100%) rename {src => src_old}/sh_edraft/publish/model/template_enum.py (100%) rename {src => src_old}/sh_edraft/publish/publisher.py (100%) rename {src => src_old}/sh_edraft/service/__init__.py (100%) rename {src => src_old}/sh_edraft/service/base/__init__.py (100%) rename {src => src_old}/sh_edraft/service/base/service_base.py (100%) rename {src => src_old}/sh_edraft/service/providing/__init__.py (100%) rename {src => src_old}/sh_edraft/service/providing/base/__init__.py (100%) rename {src => src_old}/sh_edraft/service/providing/base/service_provider_base.py (100%) rename {src => src_old}/sh_edraft/service/providing/model/__init__.py (100%) create mode 100644 src_old/sh_edraft/service/providing/model/provide_state.py rename {src => src_old}/sh_edraft/service/providing/service_provider.py (100%) rename {src => src_old}/sh_edraft/time/__init__.py (100%) rename {src => src_old}/sh_edraft/time/model/__init__.py (100%) rename {src => src_old}/sh_edraft/time/model/time_format_settings.py (100%) create mode 100644 src_old/sh_edraft/time/model/time_format_settings_names.py rename {src => src_old}/sh_edraft/utils/__init__.py (100%) create mode 100644 src_old/sh_edraft/utils/credential_manager.py rename {src/tests_dev/db => src_old/tests}/__init__.py (91%) create mode 100644 src_old/tests/appsettings.edrafts-lapi.json create mode 100644 src_old/tests/appsettings.edrafts-pc.json rename {src/tests_dev => src_old/tests}/appsettings.json (100%) rename {src => src_old}/tests/appsettings.testing.json (100%) rename {src => src_old}/tests/build.json (100%) create mode 100644 src_old/tests/publish_test/__init__.py rename {src => src_old}/tests/publish_test/publisher_test.py (100%) create mode 100644 src_old/tests/service_test/__init__.py rename {src => src_old}/tests/service_test/provider_test.py (100%) rename {src => src_old}/tests/setup.py (100%) create mode 100644 src_old/tests/time_test/__init__.py rename {src => src_old}/tests/time_test/time_format_settings_test.py (100%) create mode 100644 src_old/tests/utils_test/__init__.py rename {src => src_old}/tests/utils_test/credential_manager_test.py (100%) rename {src => src_old}/tests_dev/__init__.py (100%) create mode 100644 src_old/tests_dev/app.py rename {src => src_old}/tests_dev/appsettings.development.json (100%) rename {src => src_old}/tests_dev/appsettings.edrafts-lapi.json (100%) rename {src => src_old}/tests_dev/appsettings.edrafts-pc.json (100%) create mode 100644 src_old/tests_dev/appsettings.json rename {src => src_old}/tests_dev/main.py (100%) rename {src => src_old}/tests_dev/program.py (100%) diff --git a/.gitignore b/.gitignore index a2f9a4d3..6e1b1d68 100644 --- a/.gitignore +++ b/.gitignore @@ -131,3 +131,4 @@ dmypy.json # IDE .vscode/ +/src_old/ diff --git a/.idea/sh_common_py_lib.iml b/.idea/sh_common_py_lib.iml index 7f4b6244..37a2d482 100644 --- a/.idea/sh_common_py_lib.iml +++ b/.idea/sh_common_py_lib.iml @@ -4,15 +4,16 @@ - - - - - + + + + + - + + diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 8106a0a5..e53893e0 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -22,30 +22,211 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1023,7 +821,6 @@ - @@ -1048,7 +845,8 @@ - diff --git a/src_old/MANIFEST.in b/src_old/MANIFEST.in deleted file mode 100644 index cb32f474..00000000 --- a/src_old/MANIFEST.in +++ /dev/null @@ -1,2 +0,0 @@ -include ../ README -recursive-include sh_edraft *.txt \ No newline at end of file diff --git a/src_old/setup.py b/src_old/setup.py deleted file mode 100644 index a2e40b12..00000000 --- a/src_old/setup.py +++ /dev/null @@ -1,29 +0,0 @@ -import setuptools - -setuptools.setup( - name='sh_edraft', - version='2020.0.1', - packages=setuptools.find_packages(exclude=["tests*"]), - url='https://www.sh-edraft.de', - license='MIT', - author='Sven Heidemann', - author_email='edraft.sh@gmail.com', - include_package_data=True, - description='sh-edraft python common lib', - python_requires='>=3.8', - install_requires=[ - 'discord.py', - 'flask', - 'mysql-connector', - 'SQLAlchemy', - 'termcolor', - 'pyfiglet', - 'tabulate', - 'smtplib' - ], - entry_points={ - 'console_scripts': [ - 'cpl = sh_edraft.cli.cpl_cli.cli:main' - ] - } -) diff --git a/src_old/sh_edraft/__init__.py b/src_old/sh_edraft/__init__.py deleted file mode 100644 index a74b7597..00000000 --- a/src_old/sh_edraft/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft common python library -~~~~~~~~~~~~~~~~~~~ - -Library to share common classes and models used at sh-edraft.de - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/coding/__init__.py b/src_old/sh_edraft/coding/__init__.py deleted file mode 100644 index 74fd8f6b..00000000 --- a/src_old/sh_edraft/coding/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.coding -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.coding' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - - - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/coding/model/__init__.py b/src_old/sh_edraft/coding/model/__init__.py deleted file mode 100644 index ccdd0f5a..00000000 --- a/src_old/sh_edraft/coding/model/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.coding.model -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.coding.model' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .version import Version -from .version_enum import VersionEnum - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/coding/model/version.py b/src_old/sh_edraft/coding/model/version.py deleted file mode 100644 index be2d5a3d..00000000 --- a/src_old/sh_edraft/coding/model/version.py +++ /dev/null @@ -1,46 +0,0 @@ -from typing import Optional - -from sh_edraft.coding.model.version_enum import VersionEnum -from sh_edraft.configuration.base.configuration_model_base import ConfigurationModelBase - - -class Version(ConfigurationModelBase): - - def __init__( - self, - major: int = None, - minor: int = None, - micro: float = None - ): - ConfigurationModelBase.__init__(self) - - self._major: Optional[int] = major - self._minor: Optional[int] = minor - self._micro: Optional[int] = micro - - @property - def major(self) -> int: - return self._major - - @property - def minor(self) -> int: - return self._minor - - @property - def micro(self) -> float: - return self._micro - - def to_str(self) -> str: - return f'{self._major}.{self._minor}.{self._micro}' - - def from_dict(self, settings: dict): - self._major = int(settings[VersionEnum.Major.value]) - self._minor = int(settings[VersionEnum.Minor.value]) - self._micro = int(settings[VersionEnum.Micro.value]) - - def to_dict(self) -> dict: - return { - VersionEnum.Major.value: self._major, - VersionEnum.Minor.value: self._minor, - VersionEnum.Micro.value: self._micro - } diff --git a/src_old/sh_edraft/coding/model/version_enum.py b/src_old/sh_edraft/coding/model/version_enum.py deleted file mode 100644 index 8c294c1e..00000000 --- a/src_old/sh_edraft/coding/model/version_enum.py +++ /dev/null @@ -1,8 +0,0 @@ -from enum import Enum - - -class VersionEnum(Enum): - - Major = 'Major' - Minor = 'Minor' - Micro = 'Micro' diff --git a/src_old/sh_edraft/configuration/__init__.py b/src_old/sh_edraft/configuration/__init__.py deleted file mode 100644 index 21979d7f..00000000 --- a/src_old/sh_edraft/configuration/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.configuration -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.configuration' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .configuration import Configuration - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/configuration/base/__init__.py b/src_old/sh_edraft/configuration/base/__init__.py deleted file mode 100644 index 28444895..00000000 --- a/src_old/sh_edraft/configuration/base/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.configuration.base -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.configuration.base' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .configuration_base import ConfigurationBase -from .configuration_model_base import ConfigurationModelBase - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/configuration/base/configuration_base.py b/src_old/sh_edraft/configuration/base/configuration_base.py deleted file mode 100644 index bf44a8c1..00000000 --- a/src_old/sh_edraft/configuration/base/configuration_base.py +++ /dev/null @@ -1,34 +0,0 @@ -from abc import abstractmethod, ABC -from collections import Callable -from typing import Type - -from sh_edraft.configuration.base.configuration_model_base import ConfigurationModelBase -from sh_edraft.environment.base.environment_base import EnvironmentBase - - -class ConfigurationBase(ABC): - - @abstractmethod - def __init__(self): pass - - @property - @abstractmethod - def environment(self) -> EnvironmentBase: pass - - @abstractmethod - def add_environment_variables(self, prefix: str): pass - - @abstractmethod - def add_argument_variables(self): pass - - @abstractmethod - def add_json_file(self, name: str, optional: bool = None): pass - - @abstractmethod - def add_configuration(self, key_type: type, value: object): pass - - @abstractmethod - def get_configuration(self, search_type: Type[ConfigurationModelBase]) -> Callable[ConfigurationModelBase]: pass - - @abstractmethod - def create(self): pass diff --git a/src_old/sh_edraft/configuration/base/configuration_model_base.py b/src_old/sh_edraft/configuration/base/configuration_model_base.py deleted file mode 100644 index 9772a648..00000000 --- a/src_old/sh_edraft/configuration/base/configuration_model_base.py +++ /dev/null @@ -1,10 +0,0 @@ -from abc import ABC, abstractmethod - - -class ConfigurationModelBase(ABC): - - @abstractmethod - def __init__(self): pass - - @abstractmethod - def from_dict(self, settings: dict): pass diff --git a/src_old/sh_edraft/configuration/configuration.py b/src_old/sh_edraft/configuration/configuration.py deleted file mode 100644 index f4007ada..00000000 --- a/src_old/sh_edraft/configuration/configuration.py +++ /dev/null @@ -1,121 +0,0 @@ -import json -import os -import sys - -from sh_edraft.configuration.base.configuration_model_base import ConfigurationModelBase -from sh_edraft.configuration.base.configuration_base import ConfigurationBase -from sh_edraft.configuration.model.configuration_variable_name import ConfigurationVariableName -from sh_edraft.environment.base.environment_base import EnvironmentBase -from sh_edraft.environment.hosting_environment import HostingEnvironment -from sh_edraft.environment.model.environment_name import EnvironmentName -from sh_edraft.console.console import Console -from sh_edraft.console.model import ForegroundColor - - -class Configuration(ConfigurationBase): - - def __init__(self): - ConfigurationBase.__init__(self) - - self._hosting_environment = HostingEnvironment() - self._config: dict[type, ConfigurationModelBase] = {} - - @property - def environment(self) -> EnvironmentBase: - return self._hosting_environment - - @staticmethod - def _print_info(name: str, message: str): - Console.set_foreground_color(ForegroundColor.green) - Console.write_line(f'[{name}] {message}') - Console.set_foreground_color(ForegroundColor.default) - - @staticmethod - def _print_warn(name: str, message: str): - Console.set_foreground_color(ForegroundColor.yellow) - Console.write_line(f'[{name}] {message}') - Console.set_foreground_color(ForegroundColor.default) - - @staticmethod - def _print_error(name: str, message: str): - Console.set_foreground_color(ForegroundColor.red) - Console.write_line(f'[{name}] {message}') - Console.set_foreground_color(ForegroundColor.default) - - def _set_variable(self, name: str, value: str): - if name == ConfigurationVariableName.environment.value: - self._hosting_environment.environment_name = EnvironmentName(value) - - elif name == ConfigurationVariableName.name.value: - self._hosting_environment.application_name = value - - elif name == ConfigurationVariableName.customer.value: - self._hosting_environment.customer = value - - def add_environment_variables(self, prefix: str): - for variable in ConfigurationVariableName.to_list(): - var_name = f'{prefix}{variable}' - if var_name in [key.upper() for key in os.environ.keys()]: - self._set_variable(variable, os.environ[var_name]) - - def add_argument_variables(self): - for arg in sys.argv[1:]: - try: - argument = arg.split('--')[1].split('=')[0].upper() - value = arg.split('=')[1] - - if argument not in ConfigurationVariableName.to_list(): - raise Exception(f'Invalid argument name: {argument}') - - self._set_variable(argument, value) - except Exception as e: - self._print_error(__name__, f'Invalid argument: {arg} -> {e}') - exit() - - def add_json_file(self, name: str, optional: bool = None): - if self._hosting_environment.content_root_path.endswith('/') and not name.startswith('/'): - file_path = f'{self._hosting_environment.content_root_path}{name}' - else: - file_path = f'{self._hosting_environment.content_root_path}/{name}' - - if not os.path.isfile(file_path): - if not optional: - self._print_error(__name__, f'File not found: {file_path}') - exit() - - self._print_warn(__name__, f'Not Loaded config file: {file_path}') - return None - - config_from_file = self._load_json_file(file_path) - for sub in ConfigurationModelBase.__subclasses__(): - for key, value in config_from_file.items(): - if sub.__name__ == key: - configuration = sub() - configuration.from_dict(value) - self.add_configuration(sub, configuration) - - def _load_json_file(self, file: str) -> dict: - try: - # open config file, create if not exists - with open(file, encoding='utf-8') as cfg: - # load json - json_cfg = json.load(cfg) - self._print_info(__name__, f'Loaded config file: {file}') - return json_cfg - except Exception as e: - self._print_error(__name__, f'Cannot load config file: {file}! -> {e}') - return {} - - def add_configuration(self, key_type: type, value: ConfigurationModelBase): - self._config[key_type] = value - - def get_configuration(self, search_type: type) -> ConfigurationModelBase: - if search_type not in self._config: - raise Exception(f'Config model by type {search_type} not found') - - for config_model in self._config: - if config_model == search_type: - return self._config[config_model] - - def create(self): - pass diff --git a/src_old/sh_edraft/configuration/model/__init__.py b/src_old/sh_edraft/configuration/model/__init__.py deleted file mode 100644 index ae7cc417..00000000 --- a/src_old/sh_edraft/configuration/model/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.configuration.model -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.configuration.model' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .configuration_variable_name import ConfigurationVariableName - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/configuration/model/configuration_variable_name.py b/src_old/sh_edraft/configuration/model/configuration_variable_name.py deleted file mode 100644 index c89deb88..00000000 --- a/src_old/sh_edraft/configuration/model/configuration_variable_name.py +++ /dev/null @@ -1,12 +0,0 @@ -from enum import Enum - - -class ConfigurationVariableName(Enum): - - environment = 'ENVIRONMENT' - name = 'NAME' - customer = 'CUSTOMER' - - @staticmethod - def to_list(): - return [var.value for var in ConfigurationVariableName] diff --git a/src_old/sh_edraft/console/__init__.py b/src_old/sh_edraft/console/__init__.py deleted file mode 100644 index 632019e8..00000000 --- a/src_old/sh_edraft/console/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.console -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.console' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .console import Console - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/console/console.py b/src_old/sh_edraft/console/console.py deleted file mode 100644 index 14964866..00000000 --- a/src_old/sh_edraft/console/console.py +++ /dev/null @@ -1,205 +0,0 @@ -import os -from typing import Union, Optional - -import pyfiglet -from tabulate import tabulate -from termcolor import colored - -from sh_edraft.console.model.background_color import BackgroundColor -from sh_edraft.console.model.foreground_color import ForegroundColor - - -class Console: - _is_first_write = True - - _background_color: BackgroundColor = BackgroundColor.default - _foreground_color: ForegroundColor = ForegroundColor.default - _x: Optional[int] = None - _y: Optional[int] = None - _disabled: bool = False - - """ - Properties - """ - - @classmethod - @property - def background_color(cls) -> str: - return str(cls._background_color.value) - - @classmethod - @property - def foreground_color(cls) -> str: - return str(cls._foreground_color.value) - - """ - Settings - """ - - @classmethod - def set_background_color(cls, color: Union[BackgroundColor, str]): - if type(color) is str: - cls._background_color = BackgroundColor[color] - else: - cls._background_color = color - - @classmethod - def set_foreground_color(cls, color: Union[ForegroundColor, str]): - - if type(color) is str: - cls._foreground_color = ForegroundColor[color] - else: - cls._foreground_color = color - - @classmethod - def reset_cursor_position(cls): - cls._x = None - cls._y = None - - @classmethod - def set_cursor_position(cls, x: int, y: int): - cls._x = x - cls._y = y - - """ - Useful protected methods - """ - - @classmethod - def _output(cls, string: str, x: int = None, y: int = None, end='\n'): - if cls._is_first_write: - cls._is_first_write = False - - args = [] - colored_args = [] - - if x is not None and y is not None: - args.append(f'\033[{x};{y}H') - elif cls._x is not None and cls._y is not None: - args.append(f'\033[{cls._x};{cls._y}H') - - colored_args.append(string) - if cls._foreground_color != ForegroundColor.default and cls._background_color == BackgroundColor.default: - colored_args.append(cls._foreground_color.value) - elif cls._foreground_color == ForegroundColor.default and cls._background_color != BackgroundColor.default: - colored_args.append(cls._background_color.value) - elif cls._foreground_color != ForegroundColor.default and cls._background_color != BackgroundColor.default: - colored_args.append(cls._foreground_color.value) - colored_args.append(cls._background_color.value) - - args.append(colored(*colored_args)) - print(*args, end=end) - - """ - Useful public methods - """ - - @classmethod - def banner(cls, string: str): - if cls._disabled: - return - - ascii_banner = pyfiglet.figlet_format(string) - cls.write_line(ascii_banner) - - @classmethod - def clear(cls): - os.system('cls' if os.name == 'nt' else 'clear') - - @classmethod - def close(cls): - if cls._disabled: - return - - Console.reset() - Console.write('\n\n\nPress any key to continue...') - Console.read_line() - exit() - - @classmethod - def disable(cls): - cls._disabled = True - - @classmethod - def error(cls, string: str, tb: str = None): - if cls._disabled: - return - - cls.set_foreground_color('red') - if tb is not None: - cls.write_line(f'{string} -> {tb}') - else: - cls.write_line(string) - cls.set_foreground_color('default') - - @classmethod - def enable(cls): - cls._disabled = False - - @classmethod - def read(cls, output: str = None) -> str: - if output is not None: - cls.write(output) - - return input()[0] - - @classmethod - def read_line(cls, output: str = None) -> str: - if cls._disabled: - return '' - - if output is not None: - cls.write(output) - - return input() - - @classmethod - def reset(cls): - cls._background_color = BackgroundColor.default - cls._foreground_color = ForegroundColor.default - - @classmethod - def table(cls, header: list[str], values: list[list[str]]): - if cls._disabled: - return - - table = tabulate(values, headers=header) - - Console.write_line(table) - Console.write('\n') - - @classmethod - def write(cls, *args): - if cls._disabled: - return - - string = ' '.join(map(str, args)) - cls._output(string, end='') - - @classmethod - def write_at(cls, x: int, y: int, *args): - if cls._disabled: - return - - string = ' '.join(map(str, args)) - cls._output(string, x, y, end='') - - @classmethod - def write_line(cls, *args): - if cls._disabled: - return - - string = ' '.join(map(str, args)) - if not cls._is_first_write: - cls._output('') - cls._output(string, end='') - - @classmethod - def write_line_at(cls, x: int, y: int, *args): - if cls._disabled: - return - - string = ' '.join(map(str, args)) - if not cls._is_first_write: - cls._output('', end='') - cls._output(string, x, y, end='') diff --git a/src_old/sh_edraft/console/model/__init__.py b/src_old/sh_edraft/console/model/__init__.py deleted file mode 100644 index 3df50dae..00000000 --- a/src_old/sh_edraft/console/model/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.console.model -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.console.model' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .background_color import BackgroundColor -from .foreground_color import ForegroundColor - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/console/model/background_color.py b/src_old/sh_edraft/console/model/background_color.py deleted file mode 100644 index f4947e30..00000000 --- a/src_old/sh_edraft/console/model/background_color.py +++ /dev/null @@ -1,14 +0,0 @@ -from enum import Enum - - -class BackgroundColor(Enum): - - default = 'on_default' - grey = 'on_grey' - red = 'on_red' - green = 'on_green' - yellow = 'on_yellow' - blue = 'on_blue' - magenta = 'on_magenta' - cyan = 'on_cyan' - white = 'on_white' diff --git a/src_old/sh_edraft/console/model/foreground_color.py b/src_old/sh_edraft/console/model/foreground_color.py deleted file mode 100644 index 463d4ae7..00000000 --- a/src_old/sh_edraft/console/model/foreground_color.py +++ /dev/null @@ -1,14 +0,0 @@ -from enum import Enum - - -class ForegroundColor(Enum): - - default = 'default' - grey = 'grey' - red = 'red' - green = 'green' - yellow = 'yellow' - blue = 'blue' - magenta = 'magenta' - cyan = 'cyan' - white = 'white' diff --git a/src_old/sh_edraft/database/__init__.py b/src_old/sh_edraft/database/__init__.py deleted file mode 100644 index 7bb526a4..00000000 --- a/src_old/sh_edraft/database/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.database -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.database' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/database/connection/__init__.py b/src_old/sh_edraft/database/connection/__init__.py deleted file mode 100644 index 5f3406df..00000000 --- a/src_old/sh_edraft/database/connection/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.database.connection -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.database.connection' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .database_connection import DatabaseConnection - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/database/connection/base/__init__.py b/src_old/sh_edraft/database/connection/base/__init__.py deleted file mode 100644 index 492da1d6..00000000 --- a/src_old/sh_edraft/database/connection/base/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.database.connection.base -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.database.connection.base' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .database_connection_base import DatabaseConnectionBase - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/database/connection/base/database_connection_base.py b/src_old/sh_edraft/database/connection/base/database_connection_base.py deleted file mode 100644 index 9bc31427..00000000 --- a/src_old/sh_edraft/database/connection/base/database_connection_base.py +++ /dev/null @@ -1,21 +0,0 @@ -from abc import abstractmethod, ABC - -from sqlalchemy import engine -from sqlalchemy.orm import Session - - -class DatabaseConnectionBase(ABC): - - @abstractmethod - def __init__(self): pass - - @property - @abstractmethod - def engine(self) -> engine: pass - - @property - @abstractmethod - def session(self) -> Session: pass - - @abstractmethod - def connect(self, connection_string: str): pass diff --git a/src_old/sh_edraft/database/connection/database_connection.py b/src_old/sh_edraft/database/connection/database_connection.py deleted file mode 100644 index b3397113..00000000 --- a/src_old/sh_edraft/database/connection/database_connection.py +++ /dev/null @@ -1,56 +0,0 @@ -from typing import Optional - -from sqlalchemy import engine, create_engine -from sqlalchemy.orm import Session, sessionmaker - -from sh_edraft.database.connection.base.database_connection_base import DatabaseConnectionBase -from sh_edraft.database.model.database_settings import DatabaseSettings -from sh_edraft.console.console import Console -from sh_edraft.console.model.foreground_color import ForegroundColor - - -class DatabaseConnection(DatabaseConnectionBase): - - def __init__(self, database_settings: DatabaseSettings): - DatabaseConnectionBase.__init__(self) - - self._db_settings = database_settings - - self._engine: Optional[engine] = None - self._session: Optional[Session] = None - self._credentials: Optional[str] = None - - @property - def engine(self) -> engine: - return self._engine - - @property - def session(self) -> Session: - return self._session - - def connect(self, connection_string: str): - try: - self._engine = create_engine(connection_string) - - if self._db_settings.encoding is not None: - self._engine.encoding = self._db_settings.encoding - - if self._db_settings.case_sensitive is not None: - self._engine.case_sensitive = self._db_settings.case_sensitive - - if self._db_settings.echo is not None: - self._engine.echo = self._db_settings.echo - - self._engine.connect() - - db_session = sessionmaker(bind=self._engine) - self._session = db_session() - Console.set_foreground_color(ForegroundColor.green) - Console.write_line(f'[{__name__}] Connected to database') - Console.set_foreground_color(ForegroundColor.default) - except Exception as e: - Console.set_foreground_color(ForegroundColor.red) - Console.write_line(f'[{__name__}] Database connection failed -> {e}') - Console.set_foreground_color(ForegroundColor.default) - exit() - diff --git a/src_old/sh_edraft/database/context/__init__.py b/src_old/sh_edraft/database/context/__init__.py deleted file mode 100644 index 1f5bc196..00000000 --- a/src_old/sh_edraft/database/context/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.database.context -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.database.context' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .database_context import DatabaseContext - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/database/context/base/__init__.py b/src_old/sh_edraft/database/context/base/__init__.py deleted file mode 100644 index 63d9bb64..00000000 --- a/src_old/sh_edraft/database/context/base/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.database.context.base -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.database.context.base' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .database_context_base import DatabaseContextBase - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/database/context/base/database_context_base.py b/src_old/sh_edraft/database/context/base/database_context_base.py deleted file mode 100644 index b8294e64..00000000 --- a/src_old/sh_edraft/database/context/base/database_context_base.py +++ /dev/null @@ -1,27 +0,0 @@ -from abc import abstractmethod - -from sqlalchemy import engine -from sqlalchemy.orm import Session - -from sh_edraft.service.base.service_base import ServiceBase - - -class DatabaseContextBase(ServiceBase): - - @abstractmethod - def __init__(self): - ServiceBase.__init__(self) - - @property - @abstractmethod - def engine(self) -> engine: pass - - @property - @abstractmethod - def session(self) -> Session: pass - - @abstractmethod - def connect(self, connection_string: str): pass - - @abstractmethod - def _create_tables(self): pass diff --git a/src_old/sh_edraft/database/context/database_context.py b/src_old/sh_edraft/database/context/database_context.py deleted file mode 100644 index 436ed53e..00000000 --- a/src_old/sh_edraft/database/context/database_context.py +++ /dev/null @@ -1,50 +0,0 @@ -from sqlalchemy import engine, Table -from sqlalchemy.orm import Session - -from sh_edraft.database.connection.database_connection import DatabaseConnection -from sh_edraft.database.connection.base.database_connection_base import DatabaseConnectionBase -from sh_edraft.database.context.base.database_context_base import DatabaseContextBase -from sh_edraft.database.model.dbmodel import DBModel -from sh_edraft.database.model.database_settings import DatabaseSettings -from sh_edraft.console.console import Console -from sh_edraft.console.model.foreground_color import ForegroundColor - - -class DatabaseContext(DatabaseContextBase): - - def __init__(self, database_settings: DatabaseSettings): - DatabaseContextBase.__init__(self) - - self._db: DatabaseConnectionBase = DatabaseConnection(database_settings) - self._tables: list[Table] = [] - - @property - def engine(self) -> engine: - return self._db.engine - - @property - def session(self) -> Session: - return self._db.session - - def create(self): - pass - - def connect(self, connection_string: str): - self._db.connect(connection_string) - self._create_tables() - - def _create_tables(self): - try: - for subclass in DBModel.__subclasses__(): - self._tables.append(subclass.__table__) - - DBModel.metadata.drop_all(self._db.engine, self._tables) - DBModel.metadata.create_all(self._db.engine, self._tables, checkfirst=True) - Console.set_foreground_color(ForegroundColor.green) - Console.write_line(f'[{__name__}] Created tables') - Console.set_foreground_color(ForegroundColor.default) - except Exception as e: - Console.set_foreground_color(ForegroundColor.red) - Console.write_line(f'[{__name__}] Creating tables failed -> {e}') - Console.set_foreground_color(ForegroundColor.default) - exit() diff --git a/src_old/sh_edraft/database/model/__init__.py b/src_old/sh_edraft/database/model/__init__.py deleted file mode 100644 index de87e001..00000000 --- a/src_old/sh_edraft/database/model/__init__.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.database.model -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.database.model' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .database_settings import DatabaseSettings -from .database_settings_name import DatabaseSettingsName -from .dbmodel import DBModel - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/database/model/database_settings.py b/src_old/sh_edraft/database/model/database_settings.py deleted file mode 100644 index aed39e5f..00000000 --- a/src_old/sh_edraft/database/model/database_settings.py +++ /dev/null @@ -1,78 +0,0 @@ -import traceback -from typing import Optional - -from sh_edraft.configuration.base.configuration_model_base import ConfigurationModelBase -from sh_edraft.database.model.database_settings_name import DatabaseSettingsName -from sh_edraft.console.console import Console -from sh_edraft.console.model.foreground_color import ForegroundColor - - -class DatabaseSettings(ConfigurationModelBase): - - def __init__(self): - ConfigurationModelBase.__init__(self) - - self._connection_string: Optional[str] = None - self._credentials: Optional[str] = None - self._encoding: Optional[str] = None - self._case_sensitive: Optional[bool] = None - self._echo: Optional[bool] = None - - @property - def connection_string(self) -> str: - return self._connection_string - - @connection_string.setter - def connection_string(self, connection_string: str): - self._connection_string = connection_string - - @property - def credentials(self) -> str: - return self._credentials - - @credentials.setter - def credentials(self, credentials: str): - self._credentials = credentials - - @property - def encoding(self) -> str: - return self._encoding - - @encoding.setter - def encoding(self, encoding: str) -> None: - self._encoding = encoding - - @property - def case_sensitive(self) -> bool: - return self._case_sensitive - - @case_sensitive.setter - def case_sensitive(self, case_sensitive: bool) -> None: - self._case_sensitive = case_sensitive - - @property - def echo(self) -> bool: - return self._echo - - @echo.setter - def echo(self, echo: bool) -> None: - self._echo = echo - - def from_dict(self, settings: dict): - try: - self._connection_string = settings[DatabaseSettingsName.connection_string.value] - self._credentials = settings[DatabaseSettingsName.credentials.value] - - if DatabaseSettingsName.encoding.value in settings: - self._encoding = settings[DatabaseSettingsName.encoding.value] - - if DatabaseSettingsName.case_sensitive.value in settings: - self._case_sensitive = bool(settings[DatabaseSettingsName.case_sensitive.value]) - - if DatabaseSettingsName.echo.value in settings: - self._echo = bool(settings[DatabaseSettingsName.echo.value]) - except Exception as e: - Console.set_foreground_color(ForegroundColor.red) - Console.write_line(f'[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings') - Console.write_line(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') - Console.set_foreground_color(ForegroundColor.default) diff --git a/src_old/sh_edraft/database/model/database_settings_name.py b/src_old/sh_edraft/database/model/database_settings_name.py deleted file mode 100644 index 57ece941..00000000 --- a/src_old/sh_edraft/database/model/database_settings_name.py +++ /dev/null @@ -1,10 +0,0 @@ -from enum import Enum - - -class DatabaseSettingsName(Enum): - - connection_string = 'ConnectionString' - credentials = 'Credentials' - encoding = 'Encoding' - case_sensitive = 'CaseSensitive' - echo = 'Echo' diff --git a/src_old/sh_edraft/database/model/dbmodel.py b/src_old/sh_edraft/database/model/dbmodel.py deleted file mode 100644 index 145da02b..00000000 --- a/src_old/sh_edraft/database/model/dbmodel.py +++ /dev/null @@ -1,3 +0,0 @@ -from sqlalchemy.ext.declarative import declarative_base - -DBModel: declarative_base = declarative_base() diff --git a/src_old/sh_edraft/environment/__init__.py b/src_old/sh_edraft/environment/__init__.py deleted file mode 100644 index ac993870..00000000 --- a/src_old/sh_edraft/environment/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.environment -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.environment' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .hosting_environment import HostingEnvironment - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/environment/base/__init__.py b/src_old/sh_edraft/environment/base/__init__.py deleted file mode 100644 index 36b8b351..00000000 --- a/src_old/sh_edraft/environment/base/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.environment.base -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.environment.base' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .environment_base import EnvironmentBase - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/environment/base/environment_base.py b/src_old/sh_edraft/environment/base/environment_base.py deleted file mode 100644 index f5dc9266..00000000 --- a/src_old/sh_edraft/environment/base/environment_base.py +++ /dev/null @@ -1,43 +0,0 @@ -from abc import ABC, abstractmethod - - -class EnvironmentBase(ABC): - - @abstractmethod - def __init__(self): pass - - @property - @abstractmethod - def environment_name(self) -> str: pass - - @environment_name.setter - @abstractmethod - def environment_name(self, environment_name: str): pass - - @property - @abstractmethod - def application_name(self) -> str: pass - - @application_name.setter - @abstractmethod - def application_name(self, application_name: str): pass - - @property - @abstractmethod - def customer(self) -> str: pass - - @customer.setter - @abstractmethod - def customer(self, customer: str): pass - - @property - @abstractmethod - def content_root_path(self) -> str: pass - - @content_root_path.setter - @abstractmethod - def content_root_path(self, content_root_path: str): pass - - @property - @abstractmethod - def host_name(self) -> str: pass diff --git a/src_old/sh_edraft/environment/hosting_environment.py b/src_old/sh_edraft/environment/hosting_environment.py deleted file mode 100644 index 2f2021ff..00000000 --- a/src_old/sh_edraft/environment/hosting_environment.py +++ /dev/null @@ -1,52 +0,0 @@ -from socket import gethostname -from typing import Optional - -from sh_edraft.environment.base.environment_base import EnvironmentBase -from sh_edraft.environment.model.environment_name import EnvironmentName - - -class HostingEnvironment(EnvironmentBase): - - def __init__(self, name: EnvironmentName = EnvironmentName.production, crp: str = './'): - EnvironmentBase.__init__(self) - - self._environment_name: Optional[EnvironmentName] = name - self._app_name: Optional[str] = None - self._customer: Optional[str] = None - self._content_root_path: Optional[str] = crp - - @property - def environment_name(self) -> str: - return str(self._environment_name.value) - - @environment_name.setter - def environment_name(self, environment_name: str): - self._environment_name = EnvironmentName(environment_name) - - @property - def application_name(self) -> str: - return self._app_name if self._app_name is not None else '' - - @application_name.setter - def application_name(self, application_name: str): - self._app_name = application_name - - @property - def customer(self) -> str: - return self._customer if self._customer is not None else '' - - @customer.setter - def customer(self, customer: str): - self._customer = customer - - @property - def content_root_path(self) -> str: - return self._content_root_path - - @content_root_path.setter - def content_root_path(self, content_root_path: str): - self._content_root_path = content_root_path - - @property - def host_name(self): - return gethostname() diff --git a/src_old/sh_edraft/environment/model/__init__.py b/src_old/sh_edraft/environment/model/__init__.py deleted file mode 100644 index 59266f74..00000000 --- a/src_old/sh_edraft/environment/model/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.environment.model -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.environment.model' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .environment_name import EnvironmentName - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/environment/model/environment_name.py b/src_old/sh_edraft/environment/model/environment_name.py deleted file mode 100644 index 18abcbb5..00000000 --- a/src_old/sh_edraft/environment/model/environment_name.py +++ /dev/null @@ -1,9 +0,0 @@ -from enum import Enum - - -class EnvironmentName(Enum): - - production = 'production' - staging = 'staging' - testing = 'testing' - development = 'development' diff --git a/src_old/sh_edraft/hosting/__init__.py b/src_old/sh_edraft/hosting/__init__.py deleted file mode 100644 index d650f7e0..00000000 --- a/src_old/sh_edraft/hosting/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.hosting -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.hosting' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .application_host import ApplicationHost -from .application_runtime import ApplicationRuntime - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/hosting/application_host.py b/src_old/sh_edraft/hosting/application_host.py deleted file mode 100644 index 1c5ed011..00000000 --- a/src_old/sh_edraft/hosting/application_host.py +++ /dev/null @@ -1,46 +0,0 @@ -import atexit -from datetime import datetime - -from sh_edraft.configuration.configuration import Configuration -from sh_edraft.configuration.base.configuration_base import ConfigurationBase -from sh_edraft.hosting.base.application_runtime_base import ApplicationRuntimeBase -from sh_edraft.hosting.application_runtime import ApplicationRuntime -from sh_edraft.hosting.base.application_host_base import ApplicationHostBase -from sh_edraft.service.providing.service_provider import ServiceProvider -from sh_edraft.service.providing.base.service_provider_base import ServiceProviderBase -from sh_edraft.console.console import Console - - -class ApplicationHost(ApplicationHostBase): - - def __init__(self): - ApplicationHostBase.__init__(self) - - # Init - self._config = Configuration() - self._app_runtime = ApplicationRuntime(self._config) - self._services = ServiceProvider(self._app_runtime) - - # Create - self._config.create() - self._services.create() - - # Set vars - self._start_time: datetime = datetime.now() - self._end_time: datetime = datetime.now() - - atexit.register(Console.close) - - @property - def configuration(self) -> ConfigurationBase: - return self._config - - @property - def application_runtime(self) -> ApplicationRuntimeBase: - return self._app_runtime - - @property - def services(self) -> ServiceProviderBase: - return self._services - - def create(self): pass diff --git a/src_old/sh_edraft/hosting/application_runtime.py b/src_old/sh_edraft/hosting/application_runtime.py deleted file mode 100644 index 5e903bb5..00000000 --- a/src_old/sh_edraft/hosting/application_runtime.py +++ /dev/null @@ -1,38 +0,0 @@ -from datetime import datetime - -from sh_edraft.configuration.base.configuration_base import ConfigurationBase -from sh_edraft.hosting.base.application_runtime_base import ApplicationRuntimeBase - - -class ApplicationRuntime(ApplicationRuntimeBase): - - def __init__(self, config: ConfigurationBase): - ApplicationRuntimeBase.__init__(self) - - self._app_configuration = config - self._start_time: datetime = datetime.now() - self._end_time: datetime = datetime.now() - - @property - def configuration(self) -> ConfigurationBase: - return self._app_configuration - - @property - def start_time(self) -> datetime: - return self._start_time - - @start_time.setter - def start_time(self, start_time: datetime): - self._start_time = start_time - - @property - def end_time(self) -> datetime: - return self._end_time - - @end_time.setter - def end_time(self, end_time: datetime): - self._end_time = end_time - - @property - def date_time_now(self) -> datetime: - return datetime.now() diff --git a/src_old/sh_edraft/hosting/base/__init__.py b/src_old/sh_edraft/hosting/base/__init__.py deleted file mode 100644 index 47f46211..00000000 --- a/src_old/sh_edraft/hosting/base/__init__.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.hosting.base -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.hosting.base' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .application_base import ApplicationBase -from .application_host_base import ApplicationHostBase -from .application_runtime_base import ApplicationRuntimeBase - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/hosting/base/application_base.py b/src_old/sh_edraft/hosting/base/application_base.py deleted file mode 100644 index 00f72997..00000000 --- a/src_old/sh_edraft/hosting/base/application_base.py +++ /dev/null @@ -1,19 +0,0 @@ -from abc import ABC, abstractmethod - - -class ApplicationBase(ABC): - - @abstractmethod - def __init__(self): pass - - @abstractmethod - def create_application_host(self): pass - - @abstractmethod - def create_configuration(self): pass - - @abstractmethod - def create_services(self): pass - - @abstractmethod - def main(self): pass diff --git a/src_old/sh_edraft/hosting/base/application_host_base.py b/src_old/sh_edraft/hosting/base/application_host_base.py deleted file mode 100644 index fb816ccb..00000000 --- a/src_old/sh_edraft/hosting/base/application_host_base.py +++ /dev/null @@ -1,26 +0,0 @@ -from abc import ABC, abstractmethod - -from sh_edraft.configuration.base.configuration_base import ConfigurationBase -from sh_edraft.hosting.base.application_runtime_base import ApplicationRuntimeBase -from sh_edraft.service.providing.base.service_provider_base import ServiceProviderBase - - -class ApplicationHostBase(ABC): - - @abstractmethod - def __init__(self): pass - - @property - @abstractmethod - def configuration(self) -> ConfigurationBase: pass - - @property - @abstractmethod - def application_runtime(self) -> ApplicationRuntimeBase: pass - - @property - @abstractmethod - def services(self) -> ServiceProviderBase: pass - - @abstractmethod - def create(self): pass diff --git a/src_old/sh_edraft/hosting/base/application_runtime_base.py b/src_old/sh_edraft/hosting/base/application_runtime_base.py deleted file mode 100644 index fd644270..00000000 --- a/src_old/sh_edraft/hosting/base/application_runtime_base.py +++ /dev/null @@ -1,34 +0,0 @@ -from abc import ABC, abstractmethod -from datetime import datetime - -from sh_edraft.configuration.base.configuration_base import ConfigurationBase - - -class ApplicationRuntimeBase(ABC): - - @abstractmethod - def __init__(self): pass - - @property - @abstractmethod - def configuration(self) -> ConfigurationBase: pass - - @property - @abstractmethod - def start_time(self) -> datetime: pass - - @start_time.setter - @abstractmethod - def start_time(self, start_time: datetime): pass - - @property - @abstractmethod - def end_time(self): pass - - @end_time.setter - @abstractmethod - def end_time(self, end_time: datetime): pass - - @property - @abstractmethod - def date_time_now(self) -> datetime: pass diff --git a/src_old/sh_edraft/hosting/model/__init__.py b/src_old/sh_edraft/hosting/model/__init__.py deleted file mode 100644 index 2ff0878e..00000000 --- a/src_old/sh_edraft/hosting/model/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.hosting.model -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.hosting.model' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/logging/__init__.py b/src_old/sh_edraft/logging/__init__.py deleted file mode 100644 index 80fdec21..00000000 --- a/src_old/sh_edraft/logging/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.logging -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.logging' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .logger import Logger - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/logging/base/__init__.py b/src_old/sh_edraft/logging/base/__init__.py deleted file mode 100644 index 83da99e0..00000000 --- a/src_old/sh_edraft/logging/base/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.logging.base -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.logging.base' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .logger_base import LoggerBase - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/logging/base/logger_base.py b/src_old/sh_edraft/logging/base/logger_base.py deleted file mode 100644 index 2dc5de50..00000000 --- a/src_old/sh_edraft/logging/base/logger_base.py +++ /dev/null @@ -1,31 +0,0 @@ -from abc import abstractmethod - -from sh_edraft.service.base.service_base import ServiceBase - - -class LoggerBase(ServiceBase): - - @abstractmethod - def __init__(self): - ServiceBase.__init__(self) - - @abstractmethod - def header(self, string: str): pass - - @abstractmethod - def trace(self, name: str, message: str): pass - - @abstractmethod - def debug(self, name: str, message: str): pass - - @abstractmethod - def info(self, name: str, message: str): pass - - @abstractmethod - def warn(self, name: str, message: str): pass - - @abstractmethod - def error(self, name: str, message: str, ex: Exception = None): pass - - @abstractmethod - def fatal(self, name: str, message: str, ex: Exception = None): pass diff --git a/src_old/sh_edraft/logging/logger.py b/src_old/sh_edraft/logging/logger.py deleted file mode 100644 index 6668132e..00000000 --- a/src_old/sh_edraft/logging/logger.py +++ /dev/null @@ -1,195 +0,0 @@ -import datetime -import os -import traceback -from string import Template - -from sh_edraft.hosting.base.application_runtime_base import ApplicationRuntimeBase -from sh_edraft.logging.base.logger_base import LoggerBase -from sh_edraft.logging.model.logging_settings import LoggingSettings -from sh_edraft.logging.model.logging_level import LoggingLevel -from sh_edraft.time.model.time_format_settings import TimeFormatSettings -from sh_edraft.console.console import Console -from sh_edraft.console.model.foreground_color import ForegroundColor - - -class Logger(LoggerBase): - - def __init__(self, logging_settings: LoggingSettings, time_format: TimeFormatSettings, app_runtime: ApplicationRuntimeBase): - LoggerBase.__init__(self) - - self._app_runtime = app_runtime - self._log_settings: LoggingSettings = logging_settings - self._time_format_settings: TimeFormatSettings = time_format - - self._log = Template(self._log_settings.filename).substitute( - date_time_now=self._app_runtime.date_time_now.strftime(self._time_format_settings.date_time_format), - start_time=self._app_runtime.start_time.strftime(self._time_format_settings.date_time_log_format) - ) - self._path = self._log_settings.path - self._level = self._log_settings.level - self._console = self._log_settings.console - - self.create() - - def _get_datetime_now(self) -> str: - try: - return datetime.datetime.now().strftime(self._time_format_settings.date_time_format) - except Exception as e: - self.error(__name__, 'Cannot get time', ex=e) - - def _get_date(self) -> str: - try: - return datetime.datetime.now().strftime(self._time_format_settings.date_format) - except Exception as e: - self.error(__name__, 'Cannot get date', ex=e) - - def create(self) -> None: - """ path """ - try: - # check if log file path exists - if not os.path.exists(self._path): - os.makedirs(self._path) - except Exception as e: - self._fatal_console(__name__, 'Cannot create log dir', ex=e) - - """ create new log file """ - try: - # open log file, create if not exists - path = f'{self._path}{self._log}' - f = open(path, "w+") - Console.write_line(f'[{__name__}]: Using log file: {path}') - f.close() - except Exception as e: - self._fatal_console(__name__, 'Cannot open log file', ex=e) - - def _append_log(self, string): - try: - # open log file and append always - if not os.path.isdir(self._path): - self._fatal_console(__name__, 'Log directory not found') - - with open(self._path + self._log, "a+", encoding="utf-8") as f: - f.write(string + '\n') - f.close() - except Exception as e: - self._fatal_console(__name__, f'Cannot append log file, message: {string}', ex=e) - - def _get_string(self, name: str, level: LoggingLevel, message: str) -> str: - log_level = level.name - return f'<{self._get_datetime_now()}> [ {log_level} ] [ {name} ]: {message}' - - def header(self, string: str): - # append log and print message - self._append_log(string) - Console.set_foreground_color(ForegroundColor.default) - Console.write_line(string) - Console.set_foreground_color(ForegroundColor.default) - - def trace(self, name: str, message: str): - output = self._get_string(name, LoggingLevel.TRACE, message) - - # check if message can be written to log - if self._level.value >= LoggingLevel.TRACE.value: - self._append_log(output) - - # check if message can be shown in console - if self._console.value >= LoggingLevel.TRACE.value: - Console.set_foreground_color(ForegroundColor.green) - Console.write_line(output) - Console.set_foreground_color(ForegroundColor.default) - - def debug(self, name: str, message: str): - output = self._get_string(name, LoggingLevel.DEBUG, message) - - # check if message can be written to log - if self._level.value >= LoggingLevel.DEBUG.value: - self._append_log(output) - - # check if message can be shown in console - if self._console.value >= LoggingLevel.DEBUG.value: - Console.set_foreground_color(ForegroundColor.green) - Console.write_line(output) - Console.set_foreground_color(ForegroundColor.default) - - def info(self, name: str, message: str): - output = self._get_string(name, LoggingLevel.INFO, message) - - # check if message can be written to log - if self._level.value >= LoggingLevel.INFO.value: - self._append_log(output) - - # check if message can be shown in console - if self._console.value >= LoggingLevel.INFO.value: - Console.set_foreground_color(ForegroundColor.green) - Console.write_line(output) - Console.set_foreground_color(ForegroundColor.default) - - def warn(self, name: str, message: str): - output = self._get_string(name, LoggingLevel.WARN, message) - - # check if message can be written to log - if self._level.value >= LoggingLevel.WARN.value: - self._append_log(output) - - # check if message can be shown in console - if self._console.value >= LoggingLevel.WARN.value: - Console.set_foreground_color(ForegroundColor.yellow) - Console.write_line(output) - Console.set_foreground_color(ForegroundColor.default) - - def error(self, name: str, message: str, ex: Exception = None): - output = '' - if ex is not None: - tb = traceback.format_exc() - self.error(name, message) - output = self._get_string(name, LoggingLevel.ERROR, f'{ex} -> {tb}') - else: - output = self._get_string(name, LoggingLevel.ERROR, message) - - # check if message can be written to log - if self._level.value >= LoggingLevel.ERROR.value: - self._append_log(output) - - # check if message can be shown in console - if self._console.value >= LoggingLevel.ERROR.value: - Console.set_foreground_color(ForegroundColor.red) - Console.write_line(output) - Console.set_foreground_color(ForegroundColor.default) - - def fatal(self, name: str, message: str, ex: Exception = None): - output = '' - if ex is not None: - tb = traceback.format_exc() - self.error(name, message) - output = self._get_string(name, LoggingLevel.FATAL, f'{ex} -> {tb}') - else: - output = self._get_string(name, LoggingLevel.FATAL, message) - - # check if message can be written to log - if self._level.value >= LoggingLevel.FATAL.value: - self._append_log(output) - - # check if message can be shown in console - if self._console.value >= LoggingLevel.FATAL.value: - Console.set_foreground_color(ForegroundColor.red) - Console.write_line(output) - Console.set_foreground_color(ForegroundColor.default) - - exit() - - def _fatal_console(self, name: str, message: str, ex: Exception = None): - output = '' - if ex is not None: - tb = traceback.format_exc() - self.error(name, message) - output = self._get_string(name, LoggingLevel.ERROR, f'{ex} -> {tb}') - else: - output = self._get_string(name, LoggingLevel.ERROR, message) - - # check if message can be shown in console - if self._console.value >= LoggingLevel.FATAL.value: - Console.set_foreground_color(ForegroundColor.red) - Console.write_line(output) - Console.set_foreground_color(ForegroundColor.default) - - exit() diff --git a/src_old/sh_edraft/logging/model/__init__.py b/src_old/sh_edraft/logging/model/__init__.py deleted file mode 100644 index e7bcd608..00000000 --- a/src_old/sh_edraft/logging/model/__init__.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.logging.model -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.logging.model' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .logging_level import LoggingLevel -from .logging_settings import LoggingSettings -from .logging_settings_name import LoggingSettingsName - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/logging/model/logging_level.py b/src_old/sh_edraft/logging/model/logging_level.py deleted file mode 100644 index ceb7b4c7..00000000 --- a/src_old/sh_edraft/logging/model/logging_level.py +++ /dev/null @@ -1,12 +0,0 @@ -from enum import Enum - - -class LoggingLevel(Enum): - - OFF = 0 # Nothing - FATAL = 1 # Error that cause exit - ERROR = 2 # Non fatal error - WARN = 3 # Error that can later be fatal - INFO = 4 # Normal information's - DEBUG = 5 # Detailed app state - TRACE = 6 # Detailed app information's diff --git a/src_old/sh_edraft/logging/model/logging_settings.py b/src_old/sh_edraft/logging/model/logging_settings.py deleted file mode 100644 index 563369cc..00000000 --- a/src_old/sh_edraft/logging/model/logging_settings.py +++ /dev/null @@ -1,62 +0,0 @@ -import traceback -from typing import Optional - -from sh_edraft.configuration.base.configuration_model_base import ConfigurationModelBase -from sh_edraft.logging.model.logging_settings_name import LoggingSettingsName -from sh_edraft.logging.model.logging_level import LoggingLevel -from sh_edraft.console.console import Console -from sh_edraft.console.model.foreground_color import ForegroundColor - - -class LoggingSettings(ConfigurationModelBase): - - def __init__(self): - ConfigurationModelBase.__init__(self) - self._path: Optional[str] = None - self._filename: Optional[str] = None - self._console: Optional[LoggingLevel] = None - self._level: Optional[LoggingLevel] = None - - @property - def path(self) -> str: - return self._path - - @path.setter - def path(self, path: str) -> None: - self._path = path - - @property - def filename(self) -> str: - return self._filename - - @filename.setter - def filename(self, filename: str) -> None: - self._filename = filename - - @property - def console(self) -> LoggingLevel: - return self._console - - @console.setter - def console(self, console: LoggingLevel) -> None: - self._console = console - - @property - def level(self) -> LoggingLevel: - return self._level - - @level.setter - def level(self, level: LoggingLevel) -> None: - self._level = level - - def from_dict(self, settings: dict): - try: - self._path = settings[LoggingSettingsName.path.value] - self._filename = settings[LoggingSettingsName.filename.value] - self._console = LoggingLevel[settings[LoggingSettingsName.console_level.value]] - self._level = LoggingLevel[settings[LoggingSettingsName.file_level.value]] - except Exception as e: - Console.set_foreground_color(ForegroundColor.red) - Console.write_line(f'[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings') - Console.write_line(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') - Console.set_foreground_color(ForegroundColor.default) diff --git a/src_old/sh_edraft/logging/model/logging_settings_name.py b/src_old/sh_edraft/logging/model/logging_settings_name.py deleted file mode 100644 index 323e5735..00000000 --- a/src_old/sh_edraft/logging/model/logging_settings_name.py +++ /dev/null @@ -1,9 +0,0 @@ -from enum import Enum - - -class LoggingSettingsName(Enum): - - path = 'Path' - filename = 'Filename' - console_level = 'ConsoleLogLevel' - file_level = 'FileLogLevel' diff --git a/src_old/sh_edraft/mailing/__init__.py b/src_old/sh_edraft/mailing/__init__.py deleted file mode 100644 index db3f827b..00000000 --- a/src_old/sh_edraft/mailing/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.mailing -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.mailing' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.10' - -from collections import namedtuple - -# imports: -from .email_client import EMailClient - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=10) diff --git a/src_old/sh_edraft/mailing/base/__init__.py b/src_old/sh_edraft/mailing/base/__init__.py deleted file mode 100644 index 587aab2c..00000000 --- a/src_old/sh_edraft/mailing/base/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.mailing.base -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.mailing.base' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.10' - -from collections import namedtuple - -# imports: -from .email_client_base import EMailClientBase - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=10) diff --git a/src_old/sh_edraft/mailing/base/email_client_base.py b/src_old/sh_edraft/mailing/base/email_client_base.py deleted file mode 100644 index bbb98879..00000000 --- a/src_old/sh_edraft/mailing/base/email_client_base.py +++ /dev/null @@ -1,17 +0,0 @@ -from abc import abstractmethod - -from sh_edraft.mailing.model.email import EMail -from sh_edraft.service.base.service_base import ServiceBase - - -class EMailClientBase(ServiceBase): - - @abstractmethod - def __init__(self): - ServiceBase.__init__(self) - - @abstractmethod - def connect(self): pass - - @abstractmethod - def send_mail(self, email: EMail): pass diff --git a/src_old/sh_edraft/mailing/email_client.py b/src_old/sh_edraft/mailing/email_client.py deleted file mode 100644 index cc6296ee..00000000 --- a/src_old/sh_edraft/mailing/email_client.py +++ /dev/null @@ -1,71 +0,0 @@ -import ssl -from smtplib import SMTP -from typing import Optional - -from sh_edraft.environment.base.environment_base import EnvironmentBase -from sh_edraft.logging.base.logger_base import LoggerBase -from sh_edraft.mailing.base.email_client_base import EMailClientBase -from sh_edraft.mailing.model.email import EMail -from sh_edraft.mailing.model.email_client_settings import EMailClientSettings -from sh_edraft.service.base.service_base import ServiceBase -from sh_edraft.utils.credential_manager import CredentialManager - - -class EMailClient(EMailClientBase): - - def __init__(self, environment: EnvironmentBase, logger: LoggerBase, mail_settings: EMailClientSettings): - ServiceBase.__init__(self) - - self._environment = environment - self._mail_settings = mail_settings - self._logger = logger - - self._server: Optional[SMTP] = None - - self.create() - - def create(self): - self._logger.trace(__name__, f'Started {__name__}.create') - self.connect() - self._logger.trace(__name__, f'Stopped {__name__}.create') - - def connect(self): - self._logger.trace(__name__, f'Started {__name__}.connect') - try: - self._logger.debug(__name__, f'Try to connect to {self._mail_settings.host}:{self._mail_settings.port}') - self._server = SMTP(self._mail_settings.host, self._mail_settings.port) - self._logger.info(__name__, f'Connected to {self._mail_settings.host}:{self._mail_settings.port}') - - self._logger.debug(__name__, 'Try to start tls') - self._server.starttls(context=ssl.create_default_context()) - self._logger.info(__name__, 'Started tls') - except Exception as e: - self._logger.error(__name__, 'Cannot connect to mail server', e) - - self._logger.trace(__name__, f'Stopped {__name__}.connect') - - def login(self): - self._logger.trace(__name__, f'Started {__name__}.login') - try: - self._logger.debug(__name__, f'Try to login {self._mail_settings.user_name}@{self._mail_settings.host}:{self._mail_settings.port}') - self._server.login(self._mail_settings.user_name, CredentialManager.decrypt(self._mail_settings.credentials)) - self._logger.info(__name__, f'Logged on as {self._mail_settings.user_name} to {self._mail_settings.host}:{self._mail_settings.port}') - except Exception as e: - self._logger.error(__name__, 'Cannot login to mail server', e) - - self._logger.trace(__name__, f'Stopped {__name__}.login') - - def send_mail(self, email: EMail): - self._logger.trace(__name__, f'Started {__name__}.send_mail') - try: - self.login() - email.body += f'\n\nDies ist eine automatische E-Mail.' \ - f'\nGesendet von {self._environment.application_name}-{self._environment.environment_name}@{self._environment.host_name} für ' \ - f'{self._environment.customer}.' - - self._logger.debug(__name__, f'Try to send email to {email.receiver_list}') - self._server.sendmail(self._mail_settings.user_name, email.receiver_list, email.get_content(self._mail_settings.user_name)) - self._logger.info(__name__, f'Sent email to {email.receiver_list}') - except Exception as e: - self._logger.error(__name__, f'Cannot send mail to {email.receiver_list}', e) - self._logger.trace(__name__, f'Stopped {__name__}.send_mail') diff --git a/src_old/sh_edraft/mailing/model/__init__.py b/src_old/sh_edraft/mailing/model/__init__.py deleted file mode 100644 index ee1b8eb3..00000000 --- a/src_old/sh_edraft/mailing/model/__init__.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.mailing.model -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.mailing.model' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.10' - -from collections import namedtuple - -# imports: -from .email import EMail -from .email_client_settings_name import EMailClientSettingsName -from .email_client_settings import EMailClientSettings - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=10) diff --git a/src_old/sh_edraft/mailing/model/email.py b/src_old/sh_edraft/mailing/model/email.py deleted file mode 100644 index de49639d..00000000 --- a/src_old/sh_edraft/mailing/model/email.py +++ /dev/null @@ -1,86 +0,0 @@ -import re - - -class EMail: - - def __init__(self, header: list[str] = None, subject: str = None, body: str = None, transceiver: str = None, receiver: list[str] = None): - self._header: list[str] = header - - self._subject: str = subject - self._body: str = body - - self._transceiver: str = transceiver - self._receiver: list[str] = receiver - - @property - def header(self) -> str: - return '\r\n'.join(self._header) - - @property - def header_list(self) -> list[str]: - return self._header - - @header.setter - def header(self, header: list[str]): - self._header = header - - @property - def subject(self) -> str: - return self._subject - - @subject.setter - def subject(self, subject: str): - self._subject = subject - - @property - def body(self) -> str: - return self._body - - @body.setter - def body(self, body: str): - self._body = body - - @property - def transceiver(self) -> str: - return self._transceiver - - @transceiver.setter - def transceiver(self, transceiver: str): - if self.check_mail(transceiver): - self._transceiver = transceiver - else: - raise Exception(f'Invalid email: {transceiver}') - - @property - def receiver(self) -> str: - return ','.join(self._receiver) - - @property - def receiver_list(self) -> list[str]: - return self._receiver - - @receiver.setter - def receiver(self, receiver: list[str]): - self._receiver = receiver - - @staticmethod - def check_mail(address: str) -> bool: - return bool(re.search('^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(.\\w{2,3})+$', address)) - - def add_header(self, header: str): - if self._header is None: - self._header = [] - - self._header.append(header) - - def add_receiver(self, receiver: str): - if self._receiver is None: - self._receiver = [] - - if self.check_mail(receiver): - self._receiver.append(receiver) - else: - raise Exception(f'Invalid email: {receiver}') - - def get_content(self, transceiver: str): - return str(f'From: {transceiver}\r\nTo: {self.receiver}\r\n{self.header}\r\nSubject: {self.subject}\r\n{self.body}').encode('utf-8') diff --git a/src_old/sh_edraft/mailing/model/email_client_settings.py b/src_old/sh_edraft/mailing/model/email_client_settings.py deleted file mode 100644 index d9755919..00000000 --- a/src_old/sh_edraft/mailing/model/email_client_settings.py +++ /dev/null @@ -1,59 +0,0 @@ -import traceback - -from sh_edraft.configuration.base.configuration_model_base import ConfigurationModelBase -from sh_edraft.console.console import Console -from sh_edraft.mailing.model.email_client_settings_name import EMailClientSettingsName - - -class EMailClientSettings(ConfigurationModelBase): - - def __init__(self): - ConfigurationModelBase.__init__(self) - - self._host: str = '' - self._port: int = 0 - self._user_name: str = '' - self._credentials: str = '' - - @property - def host(self) -> str: - return self._host - - @host.setter - def host(self, host: str) -> None: - self._host = host - - @property - def port(self) -> int: - return self._port - - @port.setter - def port(self, port: int) -> None: - self._port = port - - @property - def user_name(self) -> str: - return self._user_name - - @user_name.setter - def user_name(self, user_name: str) -> None: - self._user_name = user_name - - @property - def credentials(self) -> str: - return self._credentials - - @credentials.setter - def credentials(self, credentials: str) -> None: - self._credentials = credentials - - def from_dict(self, settings: dict): - try: - self._host = settings[EMailClientSettingsName.host.value] - self._port = settings[EMailClientSettingsName.port.value] - self._user_name = settings[EMailClientSettingsName.user_name.value] - self._credentials = settings[EMailClientSettingsName.credentials.value] - except Exception as e: - Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings') - Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') - diff --git a/src_old/sh_edraft/mailing/model/email_client_settings_name.py b/src_old/sh_edraft/mailing/model/email_client_settings_name.py deleted file mode 100644 index 665c64b6..00000000 --- a/src_old/sh_edraft/mailing/model/email_client_settings_name.py +++ /dev/null @@ -1,9 +0,0 @@ -from enum import Enum - - -class EMailClientSettingsName(Enum): - - host = 'Host' - port = 'Port' - user_name = 'UserName' - credentials = 'Credentials' diff --git a/src_old/sh_edraft/publish/base/publisher_base.py b/src_old/sh_edraft/publish/base/publisher_base.py deleted file mode 100644 index 092dec3d..00000000 --- a/src_old/sh_edraft/publish/base/publisher_base.py +++ /dev/null @@ -1,30 +0,0 @@ -from abc import abstractmethod - -from sh_edraft.service.base.service_base import ServiceBase - - -class PublisherBase(ServiceBase): - - @abstractmethod - def __init__(self): - ServiceBase.__init__(self) - - @property - @abstractmethod - def source_path(self) -> str: pass - - @property - @abstractmethod - def dist_path(self) -> str: pass - - @abstractmethod - def include(self, path: str): pass - - @abstractmethod - def exclude(self, path: str): pass - - @abstractmethod - def build(self): pass - - @abstractmethod - def publish(self): pass diff --git a/src_old/sh_edraft/publish/model/publish_settings_model.py b/src_old/sh_edraft/publish/model/publish_settings_model.py deleted file mode 100644 index 3a1f8ce5..00000000 --- a/src_old/sh_edraft/publish/model/publish_settings_model.py +++ /dev/null @@ -1,90 +0,0 @@ -import traceback -from typing import Optional - -from sh_edraft.configuration.base.configuration_model_base import ConfigurationModelBase -from sh_edraft.publish.model.template import Template -from sh_edraft.publish.model.publish_settings_name import PublishSettingsName -from sh_edraft.console.console import Console -from sh_edraft.console.model.foreground_color import ForegroundColor - - -class PublishSettings(ConfigurationModelBase): - - def __init__(self): - ConfigurationModelBase.__init__(self) - - self._source_path: Optional[str] = None - self._dist_path: Optional[str] = None - self._templates: list[Template] = [] - - self._included_files: list[str] = [] - self._excluded_files: list[str] = [] - - self._template_ending: Optional[str] = None - - @property - def source_path(self) -> str: - return self._source_path - - @source_path.setter - def source_path(self, source_path: str): - self._source_path = source_path - - @property - def dist_path(self) -> str: - return self._dist_path - - @dist_path.setter - def dist_path(self, dist_path: str): - self._dist_path = dist_path - - @property - def templates(self) -> list[Template]: - return self._templates - - @templates.setter - def templates(self, templates: list[Template]): - self._templates = templates - - @property - def included_files(self) -> list[str]: - return self._included_files - - @included_files.setter - def included_files(self, included_files: list[str]): - self._included_files = included_files - - @property - def excluded_files(self) -> list[str]: - return self._excluded_files - - @excluded_files.setter - def excluded_files(self, excluded_files: list[str]): - self._excluded_files = excluded_files - - @property - def template_ending(self) -> str: - return self._template_ending - - @template_ending.setter - def template_ending(self, template_ending: str): - self._template_ending = template_ending - - def from_dict(self, settings: dict): - try: - self._source_path = settings[PublishSettingsName.source_path.value] - self._dist_path = settings[PublishSettingsName.dist_path.value] - for template in settings[PublishSettingsName.templates.value]: - temp = Template() - temp.from_dict(template) - self._templates.append(temp) - - self._included_files = settings[PublishSettingsName.included_files.value] - self._excluded_files = settings[PublishSettingsName.excluded_files.value] - self._template_ending = settings[PublishSettingsName.template_ending.value] - except Exception as e: - Console.set_foreground_color(ForegroundColor.red) - Console.write_line( - f'[ ERROR ] [ {__name__} ]: Reading error in {PublishSettingsName.publish.value} settings') - Console.write_line(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') - Console.set_foreground_color(ForegroundColor.default) diff --git a/src_old/sh_edraft/publish/model/publish_settings_name.py b/src_old/sh_edraft/publish/model/publish_settings_name.py deleted file mode 100644 index 80033c68..00000000 --- a/src_old/sh_edraft/publish/model/publish_settings_name.py +++ /dev/null @@ -1,12 +0,0 @@ -from enum import Enum - - -class PublishSettingsName(Enum): - - publish = 'Publish' - source_path = 'SourcePath' - dist_path = 'DistPath' - templates = 'Templates' - included_files = 'IncludedFiles' - excluded_files = 'ExcludedFiles' - template_ending = 'TemplateEnding' diff --git a/src_old/sh_edraft/publish/model/template.py b/src_old/sh_edraft/publish/model/template.py deleted file mode 100644 index b98a4738..00000000 --- a/src_old/sh_edraft/publish/model/template.py +++ /dev/null @@ -1,122 +0,0 @@ -from typing import Optional - -from sh_edraft.coding.model.version import Version -from sh_edraft.configuration.base.configuration_model_base import ConfigurationModelBase -from sh_edraft.publish.model.template_enum import TemplateEnum - - -class Template(ConfigurationModelBase): - - def __init__( - self, - template_path: Optional[str] = None, - name: Optional[str] = None, - description: Optional[str] = None, - long_description: Optional[str] = None, - copyright_date: Optional[str] = None, - copyright_name: Optional[str] = None, - license_name: Optional[str] = None, - license_description: Optional[str] = None, - title: Optional[str] = None, - author: Optional[str] = None, - version: Optional[Version] = Version() - ): - ConfigurationModelBase.__init__(self) - self._template_path: Optional[str] = template_path - self._name: Optional[str] = name - self._description: Optional[str] = description - self._long_description: Optional[str] = long_description - self._copyright_date: Optional[str] = copyright_date - self._copyright_name: Optional[str] = copyright_name - self._license_name: Optional[str] = license_name - self._license_description: Optional[str] = license_description - self._title: Optional[str] = title - self._author: Optional[str] = author - - self._version: Optional[Version] = version - - self._file_content: Optional[str] = None - - @property - def template_path(self) -> Optional[str]: - return self._template_path - - @property - def name(self) -> Optional[str]: - return self._name - - @property - def description(self) -> Optional[str]: - return self._description - - @property - def long_description(self) -> Optional[str]: - return self._long_description - - @property - def copyright_date(self) -> Optional[str]: - return self._copyright_date - - @property - def copyright_name(self) -> Optional[str]: - return self._copyright_name - - @property - def license_name(self) -> Optional[str]: - return self._license_name - - @property - def license_description(self) -> Optional[str]: - return self._license_description - - @property - def title(self) -> Optional[str]: - return self._title - - @property - def author(self) -> Optional[str]: - return self._author - - @property - def version(self) -> Optional[Version]: - return self._version - - @property - def file_content(self) -> Optional[str]: - return self._file_content - - @file_content.setter - def file_content(self, file_content: Optional[str]): - self._file_content = file_content - - def from_dict(self, settings: dict): - self._template_path = settings[TemplateEnum.TemplatePath.value] - self._name = settings[TemplateEnum.Name.value] - self._description = settings[TemplateEnum.Description.value] - self._long_description = settings[TemplateEnum.LongDescription.value] - self._copyright_date = settings[TemplateEnum.CopyrightDate.value] - self._copyright_name = settings[TemplateEnum.CopyrightName.value] - self._license_name = settings[TemplateEnum.LicenseName.value] - self._license_description = settings[TemplateEnum.LicenseDescription.value] - self._title = settings[TemplateEnum.Title.value] - self._author = settings[TemplateEnum.Author.value] - self._version.from_dict(settings[TemplateEnum.Version.value]) - - def to_dict(self) -> dict: - version: Optional[dict] = None - if self._version is not None: - version = self._version.to_dict() - - return { - TemplateEnum.TemplatePath.value: self._template_path, - TemplateEnum.Name.value: self._name, - TemplateEnum.Description.value: self._description, - TemplateEnum.LongDescription.value: self._long_description, - TemplateEnum.CopyrightDate.value: self._copyright_date, - TemplateEnum.CopyrightName.value: self._copyright_name, - TemplateEnum.LicenseName.value: self._license_name, - TemplateEnum.LicenseDescription.value: self._license_description, - TemplateEnum.Title.value: self._title, - TemplateEnum.Author.value: self._author, - TemplateEnum.Version.value: version - } diff --git a/src_old/sh_edraft/publish/model/template_enum.py b/src_old/sh_edraft/publish/model/template_enum.py deleted file mode 100644 index f628c4ce..00000000 --- a/src_old/sh_edraft/publish/model/template_enum.py +++ /dev/null @@ -1,16 +0,0 @@ -from enum import Enum - - -class TemplateEnum(Enum): - - TemplatePath = 'TemplatePath' - Name = 'Name' - Description = 'Description' - LongDescription = 'LongDescription' - CopyrightDate = 'CopyrightDate' - CopyrightName = 'CopyrightName' - LicenseName = 'LicenseName' - LicenseDescription = 'LicenseDescription' - Title = 'Title' - Author = 'Author' - Version = 'Version' diff --git a/src_old/sh_edraft/publish/publisher.py b/src_old/sh_edraft/publish/publisher.py deleted file mode 100644 index 2ddd2b15..00000000 --- a/src_old/sh_edraft/publish/publisher.py +++ /dev/null @@ -1,279 +0,0 @@ -import os -import shutil -from string import Template as stringTemplate - -from setuptools import sandbox - -from sh_edraft.logging.base.logger_base import LoggerBase -from sh_edraft.publish.base.publisher_base import PublisherBase -from sh_edraft.publish.model.publish_settings_model import PublishSettings -from sh_edraft.publish.model.template import Template - - -class Publisher(PublisherBase): - - def __init__(self, logger: LoggerBase, publish_settings: PublishSettings): - PublisherBase.__init__(self) - - self._logger: LoggerBase = logger - self._publish_settings: PublishSettings = publish_settings - - self._included_files: list[str] = [] - - @property - def source_path(self) -> str: - return self._publish_settings.source_path - - @property - def dist_path(self): - return self._publish_settings.dist_path - - def _get_template_output(self, t: Template, name: str, imports: str) -> str: - self._logger.trace(__name__, f'Started {__name__}._get_template_output') - try: - if t.file_content == '': - raise Exception(f'Template is empty: {t.template_path}') - - self._logger.trace(__name__, f'Stopped {__name__}._get_template_output') - return stringTemplate(t.file_content).substitute( - Name=name, - Description=t.description, - LongDescription=t.long_description, - CopyrightDate=t.copyright_date, - CopyrightName=t.copyright_name, - LicenseName=t.license_name, - LicenseDescription=t.license_description, - Title=t.title if t.title is not None and t.title != '' else name, - Author=t.author, - Version=t.version.to_str(), - Major=t.version.major, - Minor=t.version.minor, - Micro=t.version.micro, - Imports=imports - ) - except Exception as e: - self._logger.fatal(__name__, f'Cannot read Template: {t.template_path}', e) - self._logger.trace(__name__, f'Stopped {__name__}._get_template_output') - - def _read_source_path(self): - self._logger.trace(__name__, f'Started {__name__}._read_source_path') - included_files = self._publish_settings.included_files - for included in included_files: - if os.path.isdir(included): - self._publish_settings.included_files.remove(included) - - for r, d, f in os.walk(included): - for file in f: - rel_path = os.path.relpath(r) - if not rel_path.startswith('.'): - rel_path = f'./{rel_path}' - - file_path = os.path.join(self._publish_settings.source_path, r, file) - if os.path.isfile(file_path): - self._included_files.append(file_path) - elif os.path.isfile(os.path.join(rel_path, file)): - self._included_files.append(os.path.join(rel_path, file)) - else: - self._logger.fatal(__name__, f'File not found: {file}') - - elif os.path.isfile(included): - self._included_files.append(included) - else: - self._logger.fatal(__name__, f'File not found: {included}') - - for r, d, f in os.walk(self._publish_settings.source_path): - for file in f: - is_file_excluded = False - if os.path.join(r, file) in self._publish_settings.excluded_files: - is_file_excluded = True - else: - for excluded in self._publish_settings.excluded_files: - if os.path.join(r, file).__contains__(excluded): - is_file_excluded = True - - if not is_file_excluded and file.endswith('.py') or file in self._publish_settings.included_files: - self._included_files.append(os.path.join(r, file)) - - self._logger.trace(__name__, f'Stopped {__name__}._read_source_path') - - def _read_templates(self): - self._logger.trace(__name__, f'Started {__name__}._read_templates') - for t in self._publish_settings.templates: - output_template: str = '' - if not os.path.isfile(t.template_path): - self._logger.fatal(__name__, f'Template not found: {t.template_path}') - - with open(t.template_path) as template: - t.file_content = template.read() - template.close() - if t.file_content == '': - self._logger.fatal(__name__, f'Template is empty: {t.template_path}') - - self._logger.trace(__name__, f'Stopped {__name__}._read_templates') - - def _create_dist_path(self): - self._logger.trace(__name__, f'Started {__name__}._create_dist_path') - if os.path.isdir(self._publish_settings.dist_path): - try: - shutil.rmtree(self._publish_settings.dist_path) - self._logger.info(__name__, f'Deleted {self._publish_settings.dist_path}') - except Exception as e: - self._logger.fatal(__name__, f'Cannot delete old dist directory', e) - - if not os.path.isdir(self._publish_settings.dist_path): - try: - os.makedirs(self._publish_settings.dist_path) - self._logger.debug(__name__, f'Created directories: {self._publish_settings.dist_path}') - self._logger.info(__name__, f'Created dist directory') - except Exception as e: - self._logger.fatal(__name__, f'Cannot create dist directory', e) - - self._logger.trace(__name__, f'Stopped {__name__}._create_dist_path') - - @staticmethod - def _get_template_name_from_dirs(file: str) -> str: - dirs = os.path.dirname(file).split('/') - for d in dirs: - if d.__contains__('.'): - dirs.remove(d) - - if len(dirs) == 0: - return os.path.basename(file) - else: - return '.'.join(dirs) - - def _write_templates(self): - self._logger.trace(__name__, f'Started {__name__}._write_templates') - for template in self._publish_settings.templates: - for file in self._included_files: - if os.path.basename(file) == '__init__.py' and file not in self._publish_settings.excluded_files: - template_name = template.name - if template.name == 'all' or template.name == '': - template_name = self._get_template_name_from_dirs(file) - else: - name = self._get_template_name_from_dirs(file) - - if name.__contains__('.'): - if template.name != name.split('.')[len(name.split('.')) - 1]: - continue - - else: - if template.name != name: - continue - - try: - module_file_lines: list[str] = [] - module_py_lines: list[str] = [] - imports = '' - with open(file, 'r') as py_file: - module_file_lines = py_file.readlines() - py_file.close() - - if len(module_file_lines) == 0: - with open(file, 'w+') as py_file: - py_file.write(self._get_template_output(template, template_name, '# imports:')) - py_file.close() - self._logger.debug(__name__, f'Written to {file}') - else: - is_started = False - for line in module_file_lines: - if line.__contains__('# imports'): - is_started = True - - if (line.__contains__('from') or line.__contains__('import')) and is_started: - module_py_lines.append(line.replace('\n', '')) - - if len(module_py_lines) > 0: - imports = '\n'.join(module_py_lines) - - with open(file, 'w+') as py_file: - py_file.write(self._get_template_output(template, template_name, imports)) - py_file.close() - self._logger.debug(__name__, f'Written to {file}') - - except Exception as e: - self._logger.error(__name__, f'Cannot write to file: {file}', e) - - self._logger.info(__name__, f'Written to all included modules') - self._logger.trace(__name__, f'Stopped {__name__}._write_templates') - - def _copy_all_included_files(self): - self._logger.trace(__name__, f'Started {__name__}._copy_all_included_files') - dist_path = self._publish_settings.dist_path - if self._publish_settings.dist_path.endswith('/'): - dist_path = dist_path[:len(dist_path) - 1] - - for file in self._included_files: - is_file_excluded = False - if file in self._publish_settings.excluded_files: - is_file_excluded = True - else: - for excluded in self._publish_settings.excluded_files: - if file.__contains__(excluded): - is_file_excluded = True - - if not is_file_excluded: - output_file = '' - - if file.startswith('..'): - output_file = file.replace('..', '') - elif file.startswith('.'): - output_file = file.replace('.', '', 1) - - if output_file.__contains__('..'): - output_file = os.path.join(dist_path, os.path.basename(file)) - else: - output_file = f'{dist_path}{output_file}' - - output_path = os.path.dirname(output_file) - - try: - if not os.path.isdir(output_path): - os.makedirs(output_path, exist_ok=True) - except Exception as e: - self._logger.error(__name__, f'Cannot create directories: {output_path}', e) - - try: - shutil.copy(file, output_file) - except Exception as e: - self._logger.error(__name__, f'Cannot copy file: {file} to {output_path}', e) - - self._logger.debug(__name__, f'Copied {file} to {output_path}') - - self._logger.info(__name__, f'Copied all included files') - self._logger.trace(__name__, f'Stopped {__name__}._copy_all_included_files') - - def include(self, path: str): - self._logger.trace(__name__, f'Started {__name__}.include') - self._publish_settings.included_files.append(path) - self._logger.trace(__name__, f'Stopped {__name__}.include') - - def exclude(self, path: str): - self._logger.trace(__name__, f'Started {__name__}.exclude') - self._publish_settings.excluded_files.append(path) - self._logger.trace(__name__, f'Stopped {__name__}.exclude') - - def create(self): - self._logger.trace(__name__, f'Started {__name__}.create') - if not self._publish_settings.dist_path.endswith('/'): - self._publish_settings.dist_path += '/' - - self._read_source_path() - self._read_templates() - self._create_dist_path() - self._logger.trace(__name__, f'Stopped {__name__}.create') - - def build(self): - self._logger.trace(__name__, f'Started {__name__}.build') - self._write_templates() - self._copy_all_included_files() - self._logger.trace(__name__, f'Stopped {__name__}.build') - - def publish(self): - self._logger.trace(__name__, f'Started {__name__}.publish') - setup_py = os.path.join(self._publish_settings.dist_path, 'setup.py') - if not os.path.isfile(setup_py): - self._logger.fatal(__name__, f'setup.py not found in {self._publish_settings.dist_path}') - - sandbox.run_setup(os.path.abspath(setup_py), ['sdist', 'bdist_wheel']) - self._logger.trace(__name__, f'Stopped {__name__}.publish') diff --git a/src_old/sh_edraft/service/__init__.py b/src_old/sh_edraft/service/__init__.py deleted file mode 100644 index 7d487f52..00000000 --- a/src_old/sh_edraft/service/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.service -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.service' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/service/base/__init__.py b/src_old/sh_edraft/service/base/__init__.py deleted file mode 100644 index 73148fb0..00000000 --- a/src_old/sh_edraft/service/base/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.service.base -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.service.base' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .service_base import ServiceBase - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/service/base/service_base.py b/src_old/sh_edraft/service/base/service_base.py deleted file mode 100644 index e135c2a9..00000000 --- a/src_old/sh_edraft/service/base/service_base.py +++ /dev/null @@ -1,10 +0,0 @@ -from abc import ABC, abstractmethod - - -class ServiceBase(ABC): - - @abstractmethod - def __init__(self): pass - - @abstractmethod - def create(self): pass diff --git a/src_old/sh_edraft/service/providing/__init__.py b/src_old/sh_edraft/service/providing/__init__.py deleted file mode 100644 index a532dc9d..00000000 --- a/src_old/sh_edraft/service/providing/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.service.providing -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.service.providing' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.10' - -from collections import namedtuple - -# imports: -from .service_provider import ServiceProvider -from .service_provider import ServiceProviderBase - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=10) diff --git a/src_old/sh_edraft/service/providing/base/__init__.py b/src_old/sh_edraft/service/providing/base/__init__.py deleted file mode 100644 index 740e8631..00000000 --- a/src_old/sh_edraft/service/providing/base/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.service.providing.base -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.service.providing.base' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .service_provider_base import ServiceProviderBase - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/service/providing/base/service_provider_base.py b/src_old/sh_edraft/service/providing/base/service_provider_base.py deleted file mode 100644 index 28c986f0..00000000 --- a/src_old/sh_edraft/service/providing/base/service_provider_base.py +++ /dev/null @@ -1,33 +0,0 @@ -from abc import abstractmethod, ABC -from collections import Callable -from typing import Type - -from sh_edraft.database.context.base.database_context_base import DatabaseContextBase -from sh_edraft.service.base.service_base import ServiceBase - - -class ServiceProviderBase(ABC): - - @abstractmethod - def __init__(self): pass - - @abstractmethod - def add_db_context(self, db_context: Type[DatabaseContextBase]): pass - - @abstractmethod - def get_db_context(self) -> Callable[DatabaseContextBase]: pass - - @abstractmethod - def add_transient(self, service_type: Type[ServiceBase], service: Type[ServiceBase]): pass - - @abstractmethod - def add_scoped(self, service_type: Type[ServiceBase], service: Type[ServiceBase]): pass - - @abstractmethod - def add_singleton(self, service_type: Type[ServiceBase], service: Callable[ServiceBase]): pass - - @abstractmethod - def get_service(self, instance_type: Type[ServiceBase]) -> Callable[ServiceBase]: pass - - @abstractmethod - def remove_service(self, instance_type: type): pass diff --git a/src_old/sh_edraft/service/providing/model/__init__.py b/src_old/sh_edraft/service/providing/model/__init__.py deleted file mode 100644 index 779edb8d..00000000 --- a/src_old/sh_edraft/service/providing/model/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.service.providing.model -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.service.providing.model' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .provide_state import ProvideState - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/service/providing/model/provide_state.py b/src_old/sh_edraft/service/providing/model/provide_state.py deleted file mode 100644 index 52d0af05..00000000 --- a/src_old/sh_edraft/service/providing/model/provide_state.py +++ /dev/null @@ -1,18 +0,0 @@ -from typing import Type - -from sh_edraft.service.base.service_base import ServiceBase - - -class ProvideState: - - def __init__(self, service: Type[ServiceBase] = None, args: tuple = None): - self._service: Type[ServiceBase] = service - self._args: tuple = args - - @property - def service(self): - return self._service - - @property - def args(self) -> tuple: - return self._args diff --git a/src_old/sh_edraft/service/providing/service_provider.py b/src_old/sh_edraft/service/providing/service_provider.py deleted file mode 100644 index 2ba39e4c..00000000 --- a/src_old/sh_edraft/service/providing/service_provider.py +++ /dev/null @@ -1,95 +0,0 @@ -from collections import Callable -from inspect import signature, Parameter -from typing import Type, Optional - -from sh_edraft.configuration.base.configuration_model_base import ConfigurationModelBase -from sh_edraft.database.context.base.database_context_base import DatabaseContextBase -from sh_edraft.environment.base import EnvironmentBase -from sh_edraft.hosting.base.application_runtime_base import ApplicationRuntimeBase -from sh_edraft.service.providing.base.service_provider_base import ServiceProviderBase -from sh_edraft.service.base.service_base import ServiceBase - - -class ServiceProvider(ServiceProviderBase): - - def __init__(self, app_runtime: ApplicationRuntimeBase): - ServiceProviderBase.__init__(self) - self._app_runtime: ApplicationRuntimeBase = app_runtime - self._database_context: Optional[DatabaseContextBase] = None - - self._transient_services: dict[Type[ServiceBase], Type[ServiceBase]] = {} - self._scoped_services: dict[Type[ServiceBase], Type[ServiceBase]] = {} - self._singleton_services: dict[Type[ServiceBase], ServiceBase] = {} - - def create(self): pass - - def _create_instance(self, service: Callable[ServiceBase]) -> ServiceBase: - sig = signature(service.__init__) - params = [] - for param in sig.parameters.items(): - parameter = param[1] - if parameter.name != 'self' and parameter.annotation != Parameter.empty: - if issubclass(parameter.annotation, ApplicationRuntimeBase): - params.append(self._app_runtime) - - elif issubclass(parameter.annotation, EnvironmentBase): - params.append(self._app_runtime.configuration.environment) - - elif issubclass(parameter.annotation, DatabaseContextBase): - params.append(self._database_context) - - elif issubclass(parameter.annotation, ServiceBase): - params.append(self.get_service(parameter.annotation)) - - elif issubclass(parameter.annotation, ConfigurationModelBase): - params.append(self._app_runtime.configuration.get_configuration(parameter.annotation)) - - return service(*params) - - def add_db_context(self, db_context: Type[DatabaseContextBase]): - self._database_context = self._create_instance(db_context) - - def get_db_context(self) -> Callable[DatabaseContextBase]: - return self._database_context - - def add_transient(self, service_type: Type[ServiceBase], service: Type[ServiceBase]): - self._transient_services[service_type] = service - - def add_scoped(self, service_type: Type[ServiceBase], service: Type[ServiceBase]): - self._scoped_services[service_type] = service - - def add_singleton(self, service_type: Type[ServiceBase], service: Callable[ServiceBase]): - for known_service in self._singleton_services: - if type(known_service) == service_type: - raise Exception(f'Service with type {service_type} already exists') - - self._singleton_services[service_type] = self._create_instance(service) - - def get_service(self, instance_type: Type[ServiceBase]) -> Callable[ServiceBase]: - for service in self._transient_services: - if service == instance_type and isinstance(self._transient_services[service], type(instance_type)): - return self._create_instance(self._transient_services[service]) - - for service in self._scoped_services: - if service == instance_type and isinstance(self._scoped_services[service], type(instance_type)): - return self._create_instance(self._scoped_services[service]) - - for service in self._singleton_services: - if service == instance_type and isinstance(self._singleton_services[service], instance_type): - return self._singleton_services[service] - - def remove_service(self, instance_type: Type[ServiceBase]): - for service in self._transient_services: - if service == instance_type and isinstance(self._transient_services[service], type(instance_type)): - del self._transient_services[service] - return - - for service in self._scoped_services: - if service == instance_type and isinstance(self._scoped_services[service], type(instance_type)): - del self._scoped_services[service] - return - - for service in self._singleton_services: - if service == instance_type and isinstance(self._singleton_services[service], instance_type): - del self._singleton_services[service] - return diff --git a/src_old/sh_edraft/time/__init__.py b/src_old/sh_edraft/time/__init__.py deleted file mode 100644 index d8460af8..00000000 --- a/src_old/sh_edraft/time/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.time -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.time' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/time/model/__init__.py b/src_old/sh_edraft/time/model/__init__.py deleted file mode 100644 index 1056120c..00000000 --- a/src_old/sh_edraft/time/model/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.time.model -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.time.model' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .time_format_settings import TimeFormatSettings -from .time_format_settings_names import TimeFormatSettingsNames - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/time/model/time_format_settings.py b/src_old/sh_edraft/time/model/time_format_settings.py deleted file mode 100644 index e4be7511..00000000 --- a/src_old/sh_edraft/time/model/time_format_settings.py +++ /dev/null @@ -1,61 +0,0 @@ -import traceback -from typing import Optional - -from sh_edraft.configuration.base.configuration_model_base import ConfigurationModelBase -from sh_edraft.time.model.time_format_settings_names import TimeFormatSettingsNames -from sh_edraft.console.console import Console -from sh_edraft.console.model.foreground_color import ForegroundColor - - -class TimeFormatSettings(ConfigurationModelBase): - - def __init__(self): - ConfigurationModelBase.__init__(self) - self._date_format: Optional[str] = None - self._time_format: Optional[str] = None - self._date_time_format: Optional[str] = None - self._date_time_log_format: Optional[str] = None - - @property - def date_format(self) -> str: - return self._date_format - - @date_format.setter - def date_format(self, date_format: str) -> None: - self._date_format = date_format - - @property - def time_format(self) -> str: - return self._time_format - - @time_format.setter - def time_format(self, time_format: str): - self._time_format = time_format - - @property - def date_time_format(self) -> str: - return self._date_time_format - - @date_time_format.setter - def date_time_format(self, date_time_format: str) -> None: - self._date_time_format = date_time_format - - @property - def date_time_log_format(self): - return self._date_time_log_format - - @date_time_log_format.setter - def date_time_log_format(self, date_time_now_format: str) -> None: - self._date_time_log_format = date_time_now_format - - def from_dict(self, settings: dict): - try: - self._date_format = settings[TimeFormatSettingsNames.date_format.value] - self._time_format = settings[TimeFormatSettingsNames.time_format.value] - self._date_time_format = settings[TimeFormatSettingsNames.date_time_format.value] - self._date_time_log_format = settings[TimeFormatSettingsNames.date_time_log_format.value] - except Exception as e: - Console.set_foreground_color(ForegroundColor.red) - Console.write_line(f'[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings') - Console.write_line(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') - Console.set_foreground_color(ForegroundColor.default) diff --git a/src_old/sh_edraft/time/model/time_format_settings_names.py b/src_old/sh_edraft/time/model/time_format_settings_names.py deleted file mode 100644 index 3858de10..00000000 --- a/src_old/sh_edraft/time/model/time_format_settings_names.py +++ /dev/null @@ -1,9 +0,0 @@ -from enum import Enum - - -class TimeFormatSettingsNames(Enum): - - date_format = 'DateFormat' - time_format = 'TimeFormat' - date_time_format = 'DateTimeFormat' - date_time_log_format = 'DateTimeLogFormat' diff --git a/src_old/sh_edraft/utils/__init__.py b/src_old/sh_edraft/utils/__init__.py deleted file mode 100644 index ab011b6e..00000000 --- a/src_old/sh_edraft/utils/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_edraft.utils -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_edraft.utils' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: -from .credential_manager import CredentialManager - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/sh_edraft/utils/credential_manager.py b/src_old/sh_edraft/utils/credential_manager.py deleted file mode 100644 index 7f9977d1..00000000 --- a/src_old/sh_edraft/utils/credential_manager.py +++ /dev/null @@ -1,17 +0,0 @@ -import base64 - - -class CredentialManager: - - @staticmethod - def encrypt(string: str) -> str: - return base64.b64encode(string.encode('utf-8')).decode('utf-8') - - @staticmethod - def decrypt(string: str) -> str: - return base64.b64decode(string).decode('utf-8') - - @staticmethod - def build_string(string: str, credentials: str): - return string.replace('$credentials', CredentialManager.decrypt(credentials)) - diff --git a/src_old/tests/__init__.py b/src_old/tests/__init__.py deleted file mode 100644 index 924bb32a..00000000 --- a/src_old/tests/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -tests -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'tests' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/tests/appsettings.edrafts-lapi.json b/src_old/tests/appsettings.edrafts-lapi.json deleted file mode 100644 index 9af6f6c0..00000000 --- a/src_old/tests/appsettings.edrafts-lapi.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "TimeFormatSettings": { - "DateFormat": "%Y-%m-%d", - "TimeFormat": "%H:%M:%S", - "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", - "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" - }, - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "TRACE", - "FileLogLevel": "TRACE" - }, - "EMailClientSettings": { - "Host": "mail.sh-edraft.de", - "Port": "587", - "UserName": "dev-srv@sh-edraft.de", - "Credentials": "RmBOQX1eNFYiYjgsSid3fV1nelc2WA==" - } -} \ No newline at end of file diff --git a/src_old/tests/appsettings.edrafts-pc.json b/src_old/tests/appsettings.edrafts-pc.json deleted file mode 100644 index 9af6f6c0..00000000 --- a/src_old/tests/appsettings.edrafts-pc.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "TimeFormatSettings": { - "DateFormat": "%Y-%m-%d", - "TimeFormat": "%H:%M:%S", - "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", - "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" - }, - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "TRACE", - "FileLogLevel": "TRACE" - }, - "EMailClientSettings": { - "Host": "mail.sh-edraft.de", - "Port": "587", - "UserName": "dev-srv@sh-edraft.de", - "Credentials": "RmBOQX1eNFYiYjgsSid3fV1nelc2WA==" - } -} \ No newline at end of file diff --git a/src_old/tests/appsettings.json b/src_old/tests/appsettings.json deleted file mode 100644 index fd8ddf6c..00000000 --- a/src_old/tests/appsettings.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "TimeFormatSettings": { - "DateFormat": "%Y-%m-%d", - "TimeFormat": "%H:%M:%S", - "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", - "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" - }, - - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "ERROR", - "FileLogLevel": "WARN" - } -} \ No newline at end of file diff --git a/src_old/tests/appsettings.testing.json b/src_old/tests/appsettings.testing.json deleted file mode 100644 index d134912e..00000000 --- a/src_old/tests/appsettings.testing.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "TRACE", - "FileLogLevel": "TRACE" - }, - - "DatabaseSettings": { - "ConnectionString": "mysql+mysqlconnector://sh_cpl:$credentials@localhost/sh_cpl", - "Credentials": "MHZhc0Y2bjhKc1VUMWV0Qw==", - "Encoding": "utf8mb4" - } -} \ No newline at end of file diff --git a/src_old/tests/build.json b/src_old/tests/build.json deleted file mode 100644 index 3921c95f..00000000 --- a/src_old/tests/build.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "TimeFormatSettings": { - "DateFormat": "%Y-%m-%d", - "TimeFormat": "%H:%M:%S", - "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", - "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" - }, - "LoggingSettings": { - "Path": "../../build_test/logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "INFO", - "FileLogLevel": "TRACE" - }, - "PublishSettings": { - "SourcePath": "./", - "DistPath": "../../build_test/dist", - "Templates": [ - { - "TemplatePath": "../../publish_templates/all_template.txt", - "Name": "all", - "Description": "", - "LongDescription": "", - "CopyrightDate": "2020", - "CopyrightName": "sh-edraft.de", - "LicenseName": "MIT", - "LicenseDescription": ", see LICENSE for more details.", - "Title": "", - "Author": "Sven Heidemann", - "Version": { - "Major": 2020, - "Minor": 12, - "Micro": 10 - } - }, - { - "TemplatePath": "../../publish_templates/all_template.txt", - "Name": "sh_edraft", - "Description": "common python library", - "LongDescription": "Library to share common classes and models used at sh-edraft.de", - "CopyrightDate": "2020", - "CopyrightName": "sh-edraft.de", - "LicenseName": "MIT", - "LicenseDescription": ", see LICENSE for more details.", - "Title": "", - "Author": "Sven Heidemann", - "Version": { - "Major": 2020, - "Minor": 12, - "Micro": 10 - } - } - ], - "IncludedFiles": [ - ], - "ExcludedFiles": [ - ], - "TemplateEnding": "_template.txt" - } -} diff --git a/src_old/tests/publish_test/__init__.py b/src_old/tests/publish_test/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src_old/tests/publish_test/publisher_test.py b/src_old/tests/publish_test/publisher_test.py deleted file mode 100644 index 06f95519..00000000 --- a/src_old/tests/publish_test/publisher_test.py +++ /dev/null @@ -1,52 +0,0 @@ -import os -import unittest - -from sh_edraft.console import Console -from sh_edraft.hosting import ApplicationHost -from sh_edraft.logging import Logger -from sh_edraft.logging.base import LoggerBase -from sh_edraft.publish import Publisher -from sh_edraft.publish.base import PublisherBase -from sh_edraft.publish.model import PublishSettings - - -class PublisherTest(unittest.TestCase): - - def setUp(self): - Console.disable() - self._app_host = ApplicationHost() - self._configuration = self._app_host.configuration - self._services = self._app_host.services - - self._configuration.add_environment_variables('CPL_') - self._configuration.add_argument_variables() - self._configuration.add_json_file(f'build.json') - - self._services.add_singleton(LoggerBase, Logger) - self._services.add_singleton(PublisherBase, Publisher) - self._publisher: Publisher = self._services.get_service(PublisherBase) - - def test_include(self): - value = './test.py' - self._publisher.include(value) - self.assertTrue(value in self._publisher._publish_settings.included_files) - - def test_exclude(self): - value = './test.py' - self._publisher.exclude(value) - self.assertTrue(value in self._publisher._publish_settings.excluded_files) - - def test_create(self): - self._publisher.create() - self.assertTrue(os.path.isdir(self._configuration.get_configuration(PublishSettings).dist_path)) - - def test_build(self): - self._publisher.create() - self._publisher.build() - self.assertTrue(os.path.isdir(self._configuration.get_configuration(PublishSettings).dist_path)) - - def test_publish(self): - self._publisher.create() - self._publisher.build() - self._publisher.publish() - self.assertTrue(os.path.isdir(self._configuration.get_configuration(PublishSettings).dist_path)) diff --git a/src_old/tests/service_test/__init__.py b/src_old/tests/service_test/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src_old/tests/service_test/provider_test.py b/src_old/tests/service_test/provider_test.py deleted file mode 100644 index 96fef8eb..00000000 --- a/src_old/tests/service_test/provider_test.py +++ /dev/null @@ -1,79 +0,0 @@ -import unittest - -from sh_edraft.console import Console -from sh_edraft.database.context import DatabaseContext -from sh_edraft.hosting import ApplicationHost -from sh_edraft.logging import Logger -from sh_edraft.logging.base import LoggerBase - - -class ProviderTest(unittest.TestCase): - - def setUp(self): - Console.disable() - self._app_host = ApplicationHost() - self._configuration = self._app_host.configuration - self._services = self._app_host.services - - self._configuration.add_environment_variables('CPL_') - self._configuration.add_argument_variables() - self._configuration.add_json_file(f'appsettings.json') - self._configuration.add_json_file(f'appsettings.{self._configuration.environment.environment_name}.json') - self._configuration.add_json_file(f'appsettings.{self._configuration.environment.host_name}.json', optional=True) - - def test_get_db_context(self): - self._services.add_db_context(DatabaseContext) - db: DatabaseContext = self._services.get_db_context() - - self.assertIsNotNone(db) - - def test_get_service_singleton(self): - self._services.add_singleton(LoggerBase, Logger) - logger = self._services.get_service(LoggerBase) - - self.assertIsNotNone(logger) - - def test_get_service_scoped(self): - self._services.add_scoped(LoggerBase, Logger) - logger = self._services.get_service(LoggerBase) - - self.assertIsNotNone(logger) - - def test_get_service_transient(self): - self._services.add_transient(LoggerBase, Logger) - logger = self._services.get_service(LoggerBase) - - self.assertIsNotNone(logger) - - def test_remove_service_singleton(self): - self._services.add_singleton(LoggerBase, Logger) - logger = self._services.get_service(LoggerBase) - - self.assertIsNotNone(logger) - - self._services.remove_service(LoggerBase) - logger = self._services.get_service(LoggerBase) - - self.assertIsNone(logger) - - def test_remove_service_scoped(self): - self._services.add_scoped(LoggerBase, Logger) - logger = self._services.get_service(LoggerBase) - - self.assertIsNotNone(logger) - - self._services.remove_service(LoggerBase) - logger = self._services.get_service(LoggerBase) - - self.assertIsNone(logger) - - def test_remove_service_transient(self): - self._services.add_transient(LoggerBase, Logger) - logger = self._services.get_service(LoggerBase) - - self.assertIsNotNone(logger) - - self._services.remove_service(LoggerBase) - logger = self._services.get_service(LoggerBase) - - self.assertIsNone(logger) diff --git a/src_old/tests/setup.py b/src_old/tests/setup.py deleted file mode 100644 index b9da5bf5..00000000 --- a/src_old/tests/setup.py +++ /dev/null @@ -1,24 +0,0 @@ -import setuptools - -setuptools.setup( - name='sh_edraft_unittests', - version='2020.0.1', - packages=setuptools.find_packages(exclude=["tests*"]), - url='https://www.sh-edraft.de', - license='MIT', - author='Sven Heidemann', - author_email='edraft.sh@gmail.com', - include_package_data=True, - description='sh-edraft python common lib unittest', - python_requires='>=3.8', - install_requires=[ - 'discord.py', - 'flask', - 'mysql-connector', - 'SQLAlchemy', - 'termcolor', - 'pyfiglet', - 'tabulate', - 'smtplib' - ] -) diff --git a/src_old/tests/time_test/__init__.py b/src_old/tests/time_test/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src_old/tests/time_test/time_format_settings_test.py b/src_old/tests/time_test/time_format_settings_test.py deleted file mode 100644 index 9bc5347a..00000000 --- a/src_old/tests/time_test/time_format_settings_test.py +++ /dev/null @@ -1,26 +0,0 @@ -import unittest - -from sh_edraft.time.model import TimeFormatSettingsNames, TimeFormatSettings - - -class TimeFormatSettingsTest(unittest.TestCase): - - def setUp(self): pass - - def test_from_dict(self): - test_dict = { - TimeFormatSettingsNames.date_format.value: '%H:%M:%S', - TimeFormatSettingsNames.time_format.value: '%Y-%m-%d', - TimeFormatSettingsNames.date_time_format.value: '%Y-%m-%d %H:%M:%S.%f', - TimeFormatSettingsNames.date_time_log_format.value: '%Y-%m-%d_%H-%M-%S' - } - - settings = TimeFormatSettings() - settings.from_dict(test_dict) - - self.assertIsNotNone(settings) - - self.assertEqual(test_dict[TimeFormatSettingsNames.date_format.value], settings.date_format) - self.assertEqual(test_dict[TimeFormatSettingsNames.time_format.value], settings.time_format) - self.assertEqual(test_dict[TimeFormatSettingsNames.date_time_format.value], settings.date_time_format) - self.assertEqual(test_dict[TimeFormatSettingsNames.date_time_log_format.value], settings.date_time_log_format) diff --git a/src_old/tests/utils_test/__init__.py b/src_old/tests/utils_test/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src_old/tests/utils_test/credential_manager_test.py b/src_old/tests/utils_test/credential_manager_test.py deleted file mode 100644 index 204f1283..00000000 --- a/src_old/tests/utils_test/credential_manager_test.py +++ /dev/null @@ -1,37 +0,0 @@ -import base64 -import unittest - -from sh_edraft.utils import CredentialManager - - -class CredentialManagerTest(unittest.TestCase): - - def setUp(self): pass - - def test_encode(self): - test_string = 'Hello World' - expected_test_result = base64.b64encode(test_string.encode('utf-8')).decode('utf-8') - - test_result = CredentialManager.encrypt(test_string) - - self.assertIsNotNone(test_result) - self.assertEqual(expected_test_result, test_result) - - def test_decode(self): - test_string = 'SGVsbG8gV29ybGQ=' - expected_test_result = base64.b64decode(test_string).decode('utf-8') - - test_result = CredentialManager.decrypt(test_string) - - self.assertIsNotNone(test_result) - self.assertEqual(expected_test_result, test_result) - - def test_build_string(self): - test_string = 'String is $credentials' - test_credentials = 'SGVsbG8gV29ybGQ=' - expected_test_result = test_string.replace('$credentials', base64.b64decode(test_credentials).decode('utf-8')) - - test_result = CredentialManager.build_string(test_string, test_credentials) - - self.assertIsNotNone(test_result) - self.assertEqual(expected_test_result, test_result) diff --git a/src_old/tests_dev/__init__.py b/src_old/tests_dev/__init__.py deleted file mode 100644 index caf789c0..00000000 --- a/src_old/tests_dev/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -tests_dev -~~~~~~~~~~~~~~~~~~~ - - - -:copyright: (c) 2020 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'tests_dev' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 sh-edraft.de' -__version__ = '2020.12.9' - -from collections import namedtuple - -# imports: - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2020, minor=12, micro=9) diff --git a/src_old/tests_dev/app.py b/src_old/tests_dev/app.py deleted file mode 100644 index ed8adc61..00000000 --- a/src_old/tests_dev/app.py +++ /dev/null @@ -1,2 +0,0 @@ -class App: - pass diff --git a/src_old/tests_dev/appsettings.development.json b/src_old/tests_dev/appsettings.development.json deleted file mode 100644 index d134912e..00000000 --- a/src_old/tests_dev/appsettings.development.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "TRACE", - "FileLogLevel": "TRACE" - }, - - "DatabaseSettings": { - "ConnectionString": "mysql+mysqlconnector://sh_cpl:$credentials@localhost/sh_cpl", - "Credentials": "MHZhc0Y2bjhKc1VUMWV0Qw==", - "Encoding": "utf8mb4" - } -} \ No newline at end of file diff --git a/src_old/tests_dev/appsettings.edrafts-lapi.json b/src_old/tests_dev/appsettings.edrafts-lapi.json deleted file mode 100644 index 0b2e194a..00000000 --- a/src_old/tests_dev/appsettings.edrafts-lapi.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "TimeFormatSettings": { - "DateFormat": "%Y-%m-%d", - "TimeFormat": "%H:%M:%S", - "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", - "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" - }, - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "TRACE", - "FileLogLevel": "TRACE" - }, - "EMailClientSettings": { - "Host": "mail.sh-edraft.de", - "Port": "587", - "UserName": "dev-srv@sh-edraft.de", - "Credentials": "RmBOQX1eNFYiYjgsSid3fV1nelc2WA==" - }, - "PublishSettings": { - "SourcePath": "../", - "DistPath": "../../dist", - "Templates": [ - { - "TemplatePath": "../../publish_templates/all_template.txt", - "Name": "all", - "Description": "", - "LongDescription": "", - "CopyrightDate": "2020", - "CopyrightName": "sh-edraft.de", - "LicenseName": "MIT", - "LicenseDescription": ", see LICENSE for more details.", - "Title": "", - "Author": "Sven Heidemann", - "Version": { - "Major": 2020, - "Minor": 12, - "Micro": 9 - } - }, - { - "TemplatePath": "../../publish_templates/all_template.txt", - "Name": "sh_edraft", - "Description": "common python library", - "LongDescription": "Library to share common classes and models used at sh-edraft.de", - "CopyrightDate": "2020", - "CopyrightName": "sh-edraft.de", - "LicenseName": "MIT", - "LicenseDescription": ", see LICENSE for more details.", - "Title": "", - "Author": "Sven Heidemann", - "Version": { - "Major": 2020, - "Minor": 12, - "Micro": 9 - } - } - ], - "IncludedFiles": [], - "ExcludedFiles": [], - "TemplateEnding": "_template.txt" - } -} \ No newline at end of file diff --git a/src_old/tests_dev/appsettings.edrafts-pc.json b/src_old/tests_dev/appsettings.edrafts-pc.json deleted file mode 100644 index 0b2e194a..00000000 --- a/src_old/tests_dev/appsettings.edrafts-pc.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "TimeFormatSettings": { - "DateFormat": "%Y-%m-%d", - "TimeFormat": "%H:%M:%S", - "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", - "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" - }, - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "TRACE", - "FileLogLevel": "TRACE" - }, - "EMailClientSettings": { - "Host": "mail.sh-edraft.de", - "Port": "587", - "UserName": "dev-srv@sh-edraft.de", - "Credentials": "RmBOQX1eNFYiYjgsSid3fV1nelc2WA==" - }, - "PublishSettings": { - "SourcePath": "../", - "DistPath": "../../dist", - "Templates": [ - { - "TemplatePath": "../../publish_templates/all_template.txt", - "Name": "all", - "Description": "", - "LongDescription": "", - "CopyrightDate": "2020", - "CopyrightName": "sh-edraft.de", - "LicenseName": "MIT", - "LicenseDescription": ", see LICENSE for more details.", - "Title": "", - "Author": "Sven Heidemann", - "Version": { - "Major": 2020, - "Minor": 12, - "Micro": 9 - } - }, - { - "TemplatePath": "../../publish_templates/all_template.txt", - "Name": "sh_edraft", - "Description": "common python library", - "LongDescription": "Library to share common classes and models used at sh-edraft.de", - "CopyrightDate": "2020", - "CopyrightName": "sh-edraft.de", - "LicenseName": "MIT", - "LicenseDescription": ", see LICENSE for more details.", - "Title": "", - "Author": "Sven Heidemann", - "Version": { - "Major": 2020, - "Minor": 12, - "Micro": 9 - } - } - ], - "IncludedFiles": [], - "ExcludedFiles": [], - "TemplateEnding": "_template.txt" - } -} \ No newline at end of file diff --git a/src_old/tests_dev/appsettings.json b/src_old/tests_dev/appsettings.json deleted file mode 100644 index fd8ddf6c..00000000 --- a/src_old/tests_dev/appsettings.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "TimeFormatSettings": { - "DateFormat": "%Y-%m-%d", - "TimeFormat": "%H:%M:%S", - "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", - "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" - }, - - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "ERROR", - "FileLogLevel": "WARN" - } -} \ No newline at end of file diff --git a/src_old/tests_dev/main.py b/src_old/tests_dev/main.py deleted file mode 100644 index cfb45c60..00000000 --- a/src_old/tests_dev/main.py +++ /dev/null @@ -1,8 +0,0 @@ -from tests_dev.program import Program - -if __name__ == '__main__': - program = Program() - program.create_application_host() - program.create_configuration() - program.create_services() - program.main() diff --git a/src_old/tests_dev/program.py b/src_old/tests_dev/program.py deleted file mode 100644 index e08eadbe..00000000 --- a/src_old/tests_dev/program.py +++ /dev/null @@ -1,87 +0,0 @@ -from typing import Optional - -from sh_edraft.configuration.base import ConfigurationBase -from sh_edraft.console import Console -from sh_edraft.database.context import DatabaseContext -from sh_edraft.database.model import DatabaseSettings -from sh_edraft.hosting import ApplicationHost -from sh_edraft.hosting.base import ApplicationBase -from sh_edraft.logging import Logger -from sh_edraft.logging.base import LoggerBase -from sh_edraft.mailing.base import EMailClientBase -from sh_edraft.mailing import EMailClient -from sh_edraft.mailing.model import EMail -from sh_edraft.service.providing.base import ServiceProviderBase -from sh_edraft.utils import CredentialManager - -from tests_dev.db.user_repo import UserRepo -from tests_dev.db.user_repo_base import UserRepoBase - - -class Program(ApplicationBase): - - def __init__(self): - ApplicationBase.__init__(self) - - self._app_host: Optional[ApplicationHost] = None - self._services: Optional[ServiceProviderBase] = None - self._configuration: Optional[ConfigurationBase] = None - self._logger: Optional[LoggerBase] = None - self._mailer: Optional[EMailClientBase] = None - - def create_application_host(self): - self._app_host = ApplicationHost() - self._configuration = self._app_host.configuration - self._services = self._app_host.services - - def create_configuration(self): - self._configuration.add_environment_variables('PYTHON_') - self._configuration.add_environment_variables('CPL_') - self._configuration.add_argument_variables() - self._configuration.add_json_file(f'appsettings.json') - self._configuration.add_json_file(f'appsettings.{self._configuration.environment.environment_name}.json') - self._configuration.add_json_file(f'appsettings.{self._configuration.environment.host_name}.json', optional=True) - - def create_services(self): - # Create and connect to database - db_settings: DatabaseSettings = self._configuration.get_configuration(DatabaseSettings) - self._services.add_db_context(DatabaseContext) - db: DatabaseContext = self._services.get_db_context() - db.connect(CredentialManager.build_string(db_settings.connection_string, db_settings.credentials)) - - self._services.add_scoped(UserRepoBase, UserRepo) - - # Add and create logger - self._services.add_singleton(LoggerBase, Logger) - self._logger = self._services.get_service(LoggerBase) - - self._services.add_singleton(EMailClientBase, EMailClient) - self._mailer = self._services.get_service(EMailClientBase) - - def test_send_mail(self): - mail = EMail() - mail.add_header('Mime-Version: 1.0') - mail.add_header('Content-Type: text/plain; charset=utf-8') - mail.add_header('Content-Transfer-Encoding: quoted-printable') - mail.add_receiver('edraft.sh@gmail.com') - mail.add_receiver('edraft@sh-edraft.de') - mail.subject = f'Test - {self._configuration.environment.host_name}' - mail.body = 'Dies ist ein Test :D' - self._mailer.send_mail(mail) - - def test_console(self): - self._logger.debug(__name__, 'Started console test') - Console.write_line('Hello World') - Console.write('\nName: ') - Console.write_line('Hello', Console.read_line()) - Console.clear() - Console.write_at(5, 5, 'at 5, 5') - Console.write_at(10, 10, 'at 10, 10') - - def main(self): - self._logger.header(f'{self._configuration.environment.application_name}:') - self._logger.debug(__name__, f'Host: {self._configuration.environment.host_name}') - self._logger.debug(__name__, f'Environment: {self._configuration.environment.environment_name}') - self._logger.debug(__name__, f'Customer: {self._configuration.environment.customer}') - self._services.get_service(UserRepoBase).add_test_user() - self.test_console() From b32f846fcfe9e625785ce776b94070cf88e9a0a4 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 3 Mar 2021 18:37:39 +0100 Subject: [PATCH 003/228] Improved configuration --- .idea/workspace.xml | 43 ++++++++++++++-- requirements.txt | 58 +++++++++++----------- src/cpl/application/application_abc.py | 18 ++++--- src/cpl/configuration/configuration.py | 56 ++++++++++++++++++--- src/cpl/configuration/configuration_abc.py | 13 +++-- src/cpl/configuration/console_argument.py | 23 +++++++++ src/tests/Application.py | 5 +- src/tests/main.py | 2 +- src/tests/{Startup.py => startup.py} | 2 +- 9 files changed, 164 insertions(+), 56 deletions(-) create mode 100644 src/cpl/configuration/console_argument.py rename src/tests/{Startup.py => startup.py} (97%) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index b48a5e45..6c9206e2 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -23,8 +23,18 @@ - + + + + + + + + + + +