|  | @@ -2,6 +2,7 @@
 | 
	
		
			
				|  |  |  def get_form(inp):
 | 
	
		
			
				|  |  |      import os
 | 
	
		
			
				|  |  |      import json
 | 
	
		
			
				|  |  | +    import traceback
 | 
	
		
			
				|  |  |      form_dir = os.path.realpath(os.path.join(__file__,"..","..","form"))
 | 
	
		
			
				|  |  |      print(form_dir)
 | 
	
		
			
				|  |  |      resp = {
 | 
	
	
		
			
				|  | @@ -10,6 +11,7 @@ def get_form(inp):
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      for f in os.listdir(form_dir):
 | 
	
		
			
				|  |  |          try:
 | 
	
		
			
				|  |  | +            mod = get_form_module(f)
 | 
	
		
			
				|  |  |              jsfile = os.path.join(form_dir, f)
 | 
	
		
			
				|  |  |              print(jsfile)
 | 
	
		
			
				|  |  |              if not f[-5:].lower() == ".json":
 | 
	
	
		
			
				|  | @@ -18,6 +20,7 @@ def get_form(inp):
 | 
	
		
			
				|  |  |              with open(jsfile) as fd:
 | 
	
		
			
				|  |  |                  js = json.load(fd)
 | 
	
		
			
				|  |  |                  js["name"] = f
 | 
	
		
			
				|  |  | +                js = mod.get_form(js)
 | 
	
		
			
				|  |  |                  js["ok"] = True;
 | 
	
		
			
				|  |  |                  resp["js"].append(js)
 | 
	
		
			
				|  |  |          except Exception as ex:
 | 
	
	
		
			
				|  | @@ -25,24 +28,35 @@ def get_form(inp):
 | 
	
		
			
				|  |  |                  "name": f,
 | 
	
		
			
				|  |  |                  "ok": False,
 | 
	
		
			
				|  |  |                  "err": str(ex),
 | 
	
		
			
				|  |  | +                "trace": traceback.format_exc(),
 | 
	
		
			
				|  |  |              })
 | 
	
		
			
				|  |  |      return resp
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def submit_form(inp):
 | 
	
		
			
				|  |  | +def get_form_module(name):
 | 
	
		
			
				|  |  |      import importlib.machinery
 | 
	
		
			
				|  |  |      import os
 | 
	
		
			
				|  |  | +    base = os.path.basename(name)
 | 
	
		
			
				|  |  | +    b, ext = os.path.splitext(base)
 | 
	
		
			
				|  |  | +    modpath = os.path.join(__file__,"..","..","form", b+".py")
 | 
	
		
			
				|  |  | +    modpath = os.path.realpath(modpath)
 | 
	
		
			
				|  |  | +    try:
 | 
	
		
			
				|  |  | +        return importlib.machinery.SourceFileLoader("bootstrap_portal.form."+b, modpath).load_module()
 | 
	
		
			
				|  |  | +    except Exception as ex:
 | 
	
		
			
				|  |  | +        print(ex)
 | 
	
		
			
				|  |  | +        return None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def submit_form(inp):
 | 
	
		
			
				|  |  | +    import traceback
 | 
	
		
			
				|  |  | +    import os
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      try:
 | 
	
		
			
				|  |  | -        base = os.path.basename(inp["name"])
 | 
	
		
			
				|  |  | -        b, ext = os.path.splitext(base)
 | 
	
		
			
				|  |  | -        modpath = os.path.join(__file__,"..","..","form", b+".py")
 | 
	
		
			
				|  |  | -        modpath = os.path.realpath(modpath)
 | 
	
		
			
				|  |  | -        mod = importlib.machinery.SourceFileLoader("bootstrap_portal.form."+b, modpath).load_module()
 | 
	
		
			
				|  |  | +        mod = get_form_module(inp["name"])
 | 
	
		
			
				|  |  |          return mod.submit_form(inp, {})
 | 
	
		
			
				|  |  |      except Exception as ex:
 | 
	
		
			
				|  |  |          return {
 | 
	
		
			
				|  |  |              "ok": False,
 | 
	
		
			
				|  |  |              "err": str(ex),
 | 
	
		
			
				|  |  | +            "trace": traceback.format_exc(),
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def get_data(inp):
 |