diff --git a/old-stuff/ExampleApp/__init__.py b/old-stuff/ExampleApp/__init__.py index a5d41cde46102f85a93747212bcd4b989d00f2f5..a4bd17439f42a8005e1b613ab2ccf6cf3068dbaf 100644 --- a/old-stuff/ExampleApp/__init__.py +++ b/old-stuff/ExampleApp/__init__.py @@ -1,29 +1,17 @@ -from flask_microservices import MicroServicesApp, url -from flask import render_template as flask_render_template, request -from . import views -from . import functions -from jinja2 import StrictUndefined +from ..sams_classes import SAMSHub +import yaml -app = MicroServicesApp(__name__) -app.secret_key = 'berry' -app.enabled_modules = functions.get_enabled_modules() -app.config['default_language'] = 'de'; -functions.apply_config(app) -if app.config['jinja2_strict_undefined']: - app.jinja_env.undefined = StrictUndefined - -# By default, this will assume your modules directory is "./modules" -# if a second argument is not provided. -app.register_urls(app.enabled_modules) -app.blueprints['hallo_module'].register_urls( - [url( - '/test', view_func=views.home - , name='hallo_module_subview2')]) -app.add_url_rule('/', 'home', views.home) -app.add_url_rule('/login', 'login', views.login, methods=['GET']) -app.add_url_rule('/login', 'login_post', views.login_post, methods=['POST']) -print (app.url_map) -@app.context_processor -def context_processor(): - return functions.before_template(app=app) -#app.config['EXPLAIN_TEMPLATE_LOADING'] = True \ No newline at end of file +with open('config/config.yaml', 'r') as f: + hubConf = yaml.load(f.read()) +hub = SAMSHub(config=hubConf.get( + 'ExampleApp', + { 'default_language': 'en', 'main_app': 'Main'} +)) +hub.flaskApp.config.update(hubConf.get('flask', {})) +for appName in hubConf.get('apps', []): + with open('../' + appName + '/manifest.yaml') as f: + manifest = yaml.load(f.read()) + # it is possible for the exampleApp to manipulate the manifest if needed + # manifest.update({}) <-- or whatever +""" TODO: loadDictFromYAMLFiles """ + hub.addApp(SAMSApp(name = appName, manifest = manifest, langDict = langDict)) \ No newline at end of file diff --git a/old-stuff/ExampleApp/functions.py b/old-stuff/ExampleApp/functions.py deleted file mode 100644 index f88dc5f3998d3d5b1cce8d77809fbcbf72025a24..0000000000000000000000000000000000000000 --- a/old-stuff/ExampleApp/functions.py +++ /dev/null @@ -1,100 +0,0 @@ -import yaml -import fnmatch -from flask import request, session -from .exceptions import NoDefaultLanguage -import os -from flask_microservices import url - -def get_enabled_modules(): - ymlFile = open('samsHUB/config/modules.yaml', 'r') - ymlObj = yaml.load(ymlFile) - ymlFile.close() - return ymlObj - -def parse_manifest_urls(import_name): - yamlFile = open('samsHUB/modules/' + import_name + '/manifest.yaml') - manifest = yaml.load(yamlFile) - urlpatterns = [] - for view in views: - urlpatterns.append(url(rule, view_func, name, methods)) - pass - -def apply_config(app): - yaml_file = open('samsHUB/config/config.yaml') - app.config.update(yaml.load(yaml_file)) - app.config.get('samsHUB', {}) - yaml_file.close() - -def load_dict_from_yaml(filepath): - yaml_file = open(filepath) - yaml_dict = yaml.load(yaml_file) - yaml_file.close() - return yaml_dict - -def get_lang_path(module='main'): - if module == 'main': - return 'samsHUB/languages/' - if module == None: - return None - return 'samsHUB/modules/' + module + '/languages/' - -def get_mod_default_lang(module): - if module == None: - return None - manifest = load_dict_from_yaml( - filepath = 'samsHUB/modules/' + request.blueprint + '/manifest.yaml') - return manifest['default_language'] - -def generate_lang(lang_path, default_lang): - if lang_path == None: - return None - session.setdefault('lang', default_lang) - try: - default_lang_dict = load_dict_from_yaml( - filepath = lang_path + default_lang + '.yaml') - except FileNotFoundError as err: - raise NoDefaultLanguage(err) - if not os.path.exists(lang_path + session['lang'] + '.yaml'): - return default_lang_dict - default_lang_dict.update(load_dict_from_yaml( - filepath = lang_path + session['lang'] + '.yaml')) - return default_lang_dict - -def generate_menu(modules, hub_lang, module_base_path = '/modules/'): - menu_list = [{'name': hub_lang['home_title'], 'url': '/', 'subentries': None}] - for module in modules: - manifest = load_dict_from_yaml( - filepath = 'samsHUB/modules/' + module + '/manifest.yaml') - mod_lang = generate_lang( - lang_path = get_lang_path(module = module) - , default_lang = manifest['default_language']) - menu = manifest.get('menu' - , [{'name_string': 'module_name', 'url': '/modules/' + module}]) - menu_list.extend(convert_to_menentries( - menu = menu, mod_lang = mod_lang, module_base_path = module_base_path)) - print(menu_list) - return menu_list - -def convert_to_menentries(menu, mod_lang, module_base_path): - if menu == None: - return None - entries = [] - for entry in menu: - parsed_entry = {'url': entry['url'], 'name': mod_lang[entry['name_string']]} - parsed_entry['subentries'] = convert_to_menentries( - menu = entry.get( - 'subviews'), mod_lang = mod_lang, module_base_path = module_base_path) - entries.append(parsed_entry) - return entries - -def before_template(app): - inject_dict = {} - inject_dict['mod_lang'] = generate_lang( - lang_path = get_lang_path(module = request.blueprint) - , default_lang = get_mod_default_lang(module = request.blueprint)) - inject_dict['hub_lang'] = generate_lang( - lang_path = get_lang_path(module='main') - , default_lang = app.config['default_language']) - inject_dict['menu_list'] = generate_menu( - modules = app.enabled_modules, hub_lang = inject_dict['hub_lang']) - return inject_dict \ No newline at end of file diff --git a/old-stuff/app.py b/old-stuff/app.py index 710f2e5432021a662f295b22ad5efc21f32e96c5..68af58eae6ce471fa1423f45605c020d19452f76 100644 --- a/old-stuff/app.py +++ b/old-stuff/app.py @@ -1,3 +1,3 @@ -from ExampleApp import app +from ExampleApp import hub -app.run() +hub.flaskApp.run() diff --git a/test/test_sams_hub.py b/test/test_sams_hub.py index 4911dc1108a5611dd0751b15bb5cfbe112f20257..838ee2be2a5d9d98c0ce852d313ee89d2712d84a 100644 --- a/test/test_sams_hub.py +++ b/test/test_sams_hub.py @@ -146,10 +146,6 @@ class CaseMinimalSAMSHub(unittest.TestCase): def test_add_app_registers_blueprint(self): """The blueprint of the addedApp is registered in flaskApp""" - self.assertEqual( - self.hub.flaskApp.blueprints.get('test') - , None, 'Precondition, hub.flaskApp has not Blueprint "test"' - ) self.hub.addApp( SAMSApp( name = 'test', manifest = {'default_language': 'en'}