From 262d074889cd7411b6cbd2b6965ffab3ed822608 Mon Sep 17 00:00:00 2001
From: Sebastian Lobinger <sebastian.lobinger@fu-berlin.de>
Date: Wed, 31 May 2017 08:21:46 +0200
Subject: [PATCH] started implementing Example App in old-stuff folder  see
 issue #11

---
 old-stuff/ExampleApp/__init__.py  |  44 +++++--------
 old-stuff/ExampleApp/functions.py | 100 ------------------------------
 old-stuff/app.py                  |   4 +-
 test/test_sams_hub.py             |   4 --
 4 files changed, 18 insertions(+), 134 deletions(-)
 delete mode 100644 old-stuff/ExampleApp/functions.py

diff --git a/old-stuff/ExampleApp/__init__.py b/old-stuff/ExampleApp/__init__.py
index a5d41cd..a4bd174 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 f88dc5f..0000000
--- 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 710f2e5..68af58e 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 4911dc1..838ee2b 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'}
-- 
GitLab