diff --git a/Mamlambo/Cache.py b/Mamlambo/Core/Cache.py old mode 100644 new mode 100755 similarity index 91% rename from Mamlambo/Cache.py rename to Mamlambo/Core/Cache.py index 9f16713..5199990 --- a/Mamlambo/Cache.py +++ b/Mamlambo/Core/Cache.py @@ -1,7 +1,6 @@ #!/usr/bin/python3.6 # -*- coding: utf-8 -*- -from . import Session as session -from . import Singleton +from Mamlambo.Core import Singleton @Singleton.singleton_object diff --git a/Mamlambo/Configuration.py b/Mamlambo/Core/Configuration.py old mode 100644 new mode 100755 similarity index 99% rename from Mamlambo/Configuration.py rename to Mamlambo/Core/Configuration.py index f5adb45..6d23fe0 --- a/Mamlambo/Configuration.py +++ b/Mamlambo/Core/Configuration.py @@ -1,8 +1,8 @@ import os import yaml from .MamlamboException import MamlamboException -from . import Singleton -from .Response import Response +from Mamlambo.Core import Singleton +from Mamlambo.Response import Response import re from urllib.parse import urlparse diff --git a/Mamlambo/MamlamboException.py b/Mamlambo/Core/MamlamboException.py old mode 100644 new mode 100755 similarity index 99% rename from Mamlambo/MamlamboException.py rename to Mamlambo/Core/MamlamboException.py index b815066..f4a0c50 --- a/Mamlambo/MamlamboException.py +++ b/Mamlambo/Core/MamlamboException.py @@ -3,8 +3,8 @@ import sys import Mamlambo -from . import Response -from . import Configuration +from Mamlambo.Core import Configuration +from Mamlambo import Response class MamlamboException: diff --git a/Mamlambo/Singleton.py b/Mamlambo/Core/Singleton.py old mode 100644 new mode 100755 similarity index 100% rename from Mamlambo/Singleton.py rename to Mamlambo/Core/Singleton.py diff --git a/Mamlambo/Core/__init__.py b/Mamlambo/Core/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/Mamlambo/RendererDefault.py b/Mamlambo/Renderer/Default.py old mode 100644 new mode 100755 similarity index 97% rename from Mamlambo/RendererDefault.py rename to Mamlambo/Renderer/Default.py index ac93ebc..83efc82 --- a/Mamlambo/RendererDefault.py +++ b/Mamlambo/Renderer/Default.py @@ -2,10 +2,10 @@ # -*- coding: utf-8 -*- import os -from .MamlamboException import MamlamboException +from Mamlambo.Core.MamlamboException import MamlamboException -class RendererDefault: +class Default: def __init__(self, config, request, response): diff --git a/Mamlambo/RendererDynamic.py b/Mamlambo/Renderer/Dynamic.py old mode 100644 new mode 100755 similarity index 96% rename from Mamlambo/RendererDynamic.py rename to Mamlambo/Renderer/Dynamic.py index 6e8f432..5125f40 --- a/Mamlambo/RendererDynamic.py +++ b/Mamlambo/Renderer/Dynamic.py @@ -8,11 +8,11 @@ import copy import json from contextlib import redirect_stdout -from .Configuration import Configuration -from .MamlamboException import MamlamboException +from Mamlambo.Core.Configuration import Configuration +from Mamlambo.Core.MamlamboException import MamlamboException -class RendererDynamic: +class Dynamic: __page_raw = None __page_result = None __page_template = None @@ -28,13 +28,14 @@ class RendererDynamic: __directive_attributes = None __is_nested_call = None - __verbose = True + __verbose = False def verbose(self, text): if self.__verbose: print(text) - def __init__(self, file_name, is_fragment=False, is_nested_call=0): + def __init__(self, request, file_name, is_fragment=False, is_nested_call=0): + self.__request = request self.__page_mime = "text/html" self.__http_code = 200 self.__page_filename = file_name @@ -313,7 +314,7 @@ def process_directive_page(self, matches): # print('-- using master page') page_master_file_name = Configuration().map_path(path_info=self.__page_master) self.verbose("!RendererDynamic('" + page_master_file_name + "')") - masterpage = RendererDynamic(page_master_file_name, is_nested_call=1) + masterpage = Dynamic(self.__request, page_master_file_name, is_nested_call=1) self.verbose("!After RendererDynamic of master:" + str(masterpage)) # print('-- master info') # print("master_placeholderse: " + str(masterpage.master_placeholders)) @@ -403,9 +404,6 @@ def process_directive_page(self, matches): # if page_code include the code.py regex_doctype = r"<[^\!].*[\^>]*>" # tags not starting with ", + "\n", match.end()) break + self.verbose('~~~~~~~~') + self.verbose('self.__page_raw: ' + str(self.__page_raw)) + self.verbose('~~~~~~~~') + + if not found: try: with io.StringIO() as buf, redirect_stdout(buf): @@ -526,7 +537,7 @@ class RendererMain: # def __init__(self, file_name, is_fragment=False): def __init__(self, request, response): file_name = Configuration().map_path(path_info=request.path_info) - markdown = RendererDynamic(file_name, is_fragment=False, is_nested_call=0) + markdown = Dynamic(request, file_name, is_fragment=False, is_nested_call=0) response.mime = markdown.page_mime response.content_str = markdown.page_result response.code = markdown.http_code diff --git a/Mamlambo/RendererRoutes.py b/Mamlambo/Renderer/Routes.py old mode 100644 new mode 100755 similarity index 93% rename from Mamlambo/RendererRoutes.py rename to Mamlambo/Renderer/Routes.py index 82b16f4..db986df --- a/Mamlambo/RendererRoutes.py +++ b/Mamlambo/Renderer/Routes.py @@ -2,10 +2,6 @@ # -*- coding: utf-8 -*- import re -import os -from . import Configuration -from . import Request -from . import Response from enum import Enum @@ -15,7 +11,7 @@ class Mode(Enum): route = 'route' -class RendererRoutes: +class Routes: # mode = 'redirection' adds header Location and response.end # mode = 'route' changes url diff --git a/Mamlambo/RendererStatic.py b/Mamlambo/Renderer/Static.py old mode 100644 new mode 100755 similarity index 97% rename from Mamlambo/RendererStatic.py rename to Mamlambo/Renderer/Static.py index 04bfaf3..11d439f --- a/Mamlambo/RendererStatic.py +++ b/Mamlambo/Renderer/Static.py @@ -2,10 +2,10 @@ # -*- coding: utf-8 -*- import os -from .MamlamboException import MamlamboException +from Mamlambo.Core.MamlamboException import MamlamboException -class RendererStatic: +class Static: def __init__(self, config, request, response): response.complete = False diff --git a/Mamlambo/Renderer/__init__.py b/Mamlambo/Renderer/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/Mamlambo/Request.py b/Mamlambo/Request.py old mode 100644 new mode 100755 index f240df4..c6d7ca3 --- a/Mamlambo/Request.py +++ b/Mamlambo/Request.py @@ -1,8 +1,13 @@ #!/usr/bin/python3.6 # -*- coding: utf-8 -*- -from . import Session as session -from . import Singleton +from urllib.parse import urlparse +from Mamlambo.Session import Session +import inspect + +import os + +REQUEST = None class Request(): __headers = [] @@ -19,7 +24,26 @@ class Request(): __master = None - def __init__(self, headers=None): + def __init__(self, headers=None, ): + global REQUEST + + print(REQUEST) + #print(str(frame.f_globals)) + #print(str(frame.f_locals)) + + #print("================================") + #print("== LOCALS ==============================") + #print(frame.f_back.f_locals) + #print("================================") + #print(frame.f_back.f_locals) + + #print(str(dir(self))) + #print(str(globals())) + #print(str(locals())) + #print(str(globals()["request"])) + #self.__uri = request.uri + #o = urlparse(self.__uri) + #self.__path_info = o.path if headers: self.__headers = headers @@ -38,7 +62,7 @@ def headers(self, value): self.__headers = value def session_start(self): - self.__session = session.Session() + self.__session = Session.Session() self.__session.start() @property diff --git a/Mamlambo/Response.py b/Mamlambo/Response.py old mode 100644 new mode 100755 diff --git a/Mamlambo/Router.py b/Mamlambo/Router.py old mode 100644 new mode 100755 index 7efaab5..f3959c3 --- a/Mamlambo/Router.py +++ b/Mamlambo/Router.py @@ -1,18 +1,14 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- -import Mamlambo -from . import RendererDynamic -from .RendererRoutes import RendererRoutes -from .RendererRoutes import Mode -from . import RendererStatic -from . import RendererDefault -from .Configuration import Configuration -from .Response import Response -from . import Request -from .MamlamboException import MamlamboException -from . import Singleton -from .Cache import Cache +from Mamlambo.Renderer import Dynamic, Default, Static +from Mamlambo.Renderer.Routes import Routes +from Mamlambo.Renderer.Routes import Mode +from Mamlambo.Core.Configuration import Configuration +from Mamlambo.Response import Response +from Mamlambo import Request +from Mamlambo.Core.MamlamboException import MamlamboException +from Mamlambo.Core.Cache import Cache class Router: @@ -22,6 +18,7 @@ class Router: __status = None def __init__(self, env, path_to_configuration=None): + response = Response() # instantiate empty singleton response.complete = False # Singleton.Singleton.reset(response) @@ -61,7 +58,7 @@ def __init__(self, env, path_to_configuration=None): # process request --------------------------------------------------------------------------------------- # 1) check redirections - RendererRoutes(config.redirections, request, response, Mode.redirection) + Routes(config.redirections, request, response, Mode.redirection) if response.complete: self.__content = [b''] self.__headers = response.headers @@ -72,10 +69,10 @@ def __init__(self, env, path_to_configuration=None): return # 2) check routes - RendererRoutes(config.routes, request, response, Mode.route) + Routes(config.routes, request, response, Mode.route) # 3) check default document - RendererDefault.RendererDefault(config, request, response) + Default.Default(config, request, response) if response.complete: self.__content = [response.content_bytes] self.__headers = response.headers @@ -86,7 +83,7 @@ def __init__(self, env, path_to_configuration=None): return # 4) check static content - RendererStatic.RendererStatic(config, request, response) + Static.Static(config, request, response) if response.complete: self.__content = [response.content_bytes] self.__headers = response.headers @@ -101,7 +98,7 @@ def __init__(self, env, path_to_configuration=None): print("response.complete=" + str(response.complete)) print("response.status=" + str(response.status)) - RendererDynamic.RendererMain(request, response) + Dynamic.RendererMain(request, response) if response.complete: self.__content = [response.content_bytes] self.__headers = response.headers @@ -119,10 +116,6 @@ def __init__(self, env, path_to_configuration=None): return - - - - # properties to pass data to WSGI @property def headers(self): diff --git a/Mamlambo/Session.py b/Mamlambo/Session.py old mode 100644 new mode 100755 diff --git a/Mamlambo/__init__.py b/Mamlambo/__init__.py old mode 100644 new mode 100755 index 480ff01..7d52bb7 --- a/Mamlambo/__init__.py +++ b/Mamlambo/__init__.py @@ -2,5 +2,5 @@ version_info = (0, 3, 0) __version__ = ".".join([str(v) for v in version_info]) -__name__ = "Mamlambo" +ENV = None diff --git a/demo/html/dynamic/use_master.pyhtml b/demo/html/dynamic/use_master.pyhtml index 47e4000..cd5913e 100755 --- a/demo/html/dynamic/use_master.pyhtml +++ b/demo/html/dynamic/use_master.pyhtml @@ -20,4 +20,10 @@ 33333333 + +query:
+u:
+ +Powered by Mamlambo: +
diff --git a/demo/html/dynamic/use_master.pyhtml.py b/demo/html/dynamic/use_master.pyhtml.py index 2d552fd..e358b20 100755 --- a/demo/html/dynamic/use_master.pyhtml.py +++ b/demo/html/dynamic/use_master.pyhtml.py @@ -1,3 +1,11 @@ -import json +from Mamlambo.Request import Request +import Mamlambo + +logo = "@LOGO" + +version = Mamlambo.__version__ + +request = Request() +q = request.query_string +u = REQUEST -logo = "@LOGO" \ No newline at end of file