Commit 5b3198ae by aa.gusti

perubahan loading routes and menus

1 parent 2dd6c441
...@@ -5,6 +5,8 @@ import locale ...@@ -5,6 +5,8 @@ import locale
import logging import logging
import re import re
import urllib
from .routes import routes from .routes import routes
# from opensipkd.tools.captcha import get_captcha_url # from opensipkd.tools.captcha import get_captcha_url
...@@ -135,7 +137,9 @@ def _get_params(request, params, default=None, settings=None, context=None): ...@@ -135,7 +137,9 @@ def _get_params(request, params, default=None, settings=None, context=None):
return get_params(params, default, settings) return get_params(params, default, settings)
BASE_MENUS=[]
BASE_MENUS = []
@subscriber(BeforeRender) @subscriber(BeforeRender)
def add_global(event): def add_global(event):
...@@ -473,21 +477,22 @@ def get_home(request): ...@@ -473,21 +477,22 @@ def get_home(request):
def _add_route(config, route): def _add_route(config, route):
if int(route.get("type",0)) == 0: if int(route.get("type", 0)) == 0:
config.add_route(route.get("kode"), route.get("path")) config.add_route(route.get("kode"), route.get("path"))
elif int(route.get("type")) == 1: elif int(route.get("type")) == 1:
config.add_jsonrpc_endpoint(route.get("kode"), route.get("path"), config.add_jsonrpc_endpoint(route.get("kode"), route.get("path"),
default_renderer="json_rpc") default_renderer="json_rpc")
if route.get("nama"): if route.get("nama"):
titles[route.get("kode")] = route.get("nama") titles[route.get("kode")] = route.get("nama")
def _add_view_config(config, view_name, route): def _add_view_config(config, view_name, route):
_add_route(config, route) _add_route(config, route)
if not route.get("def_func"): if not route.get("def_func"):
return return
class_view = route.get("class_view") and f".{route.get('class_view')}" or "" class_view = route.get(
"class_view") and f".{route.get('class_view')}" or ""
class_name = f"{view_name}{class_view}" class_name = f"{view_name}{class_view}"
attr = f"view_{route.get('def_func')}" attr = f"view_{route.get('def_func')}"
try: try:
...@@ -498,13 +503,13 @@ def _add_view_config(config, view_name, route): ...@@ -498,13 +503,13 @@ def _add_view_config(config, view_name, route):
else: else:
renderers = "views/templates/" + route.get("template") renderers = "views/templates/" + route.get("template")
params = dict(attr=f"{attr}", route_name=route.get("kode"), params = dict(attr=f"{attr}", route_name=route.get("kode"),
renderer=renderers) renderer=renderers)
if route.get("permission"): if route.get("permission"):
params["permission"] = route.get("permission") params["permission"] = route.get("permission")
config.add_view(views.Views, **params) config.add_view(views.Views, **params)
except Exception as e: except Exception as e:
_logging.error(str(e)) _logging.error(str(e))
_logging.error(route) _logging.error(route)
# def add_view_config(config, module, view_name): # def add_view_config(config, module, view_name):
# """ # """
...@@ -713,79 +718,81 @@ def main(global_config, **settings): ...@@ -713,79 +718,81 @@ def main(global_config, **settings):
return get_config(settings=settings).make_wsgi_app() return get_config(settings=settings).make_wsgi_app()
def get_route_file(filename): def get_route_file(filename):
base_dir = os.path.split(__file__)[0] base_dir = os.path.split(__file__)[0]
fullpath = os.path.join(base_dir, 'scripts', 'data', filename) fullpath = os.path.join(base_dir, 'scripts', 'data', filename)
return open(fullpath) return open(fullpath)
class BaseApp(): class BaseApp():
def __init__(self): def __init__(self):
self.menus = [] self.menus = []
def route_from_csv(self, config, get_file=get_route_file): def route_from_csv(self, config, get_file=get_route_file, paket="opensipkd.base.views"):
with get_file("routes.csv") as f: with get_file("routes.csv") as f:
rows = csv.DictReader(f) rows = csv.DictReader(f)
new_routes=[] new_routes = []
for row in rows: for row in rows:
if row.get("parent_id") or row.get("parent_id/routes.kode"): if row.get("parent_id") or row.get("parent_id/routes.kode"):
new_routes[len(new_routes)-1]["children"].append(row) new_routes[len(new_routes)-1]["children"].append(row)
else: else:
row["children"]=[] row["children"] = []
new_routes.append(row) new_routes.append(row)
self.add_menu(config, new_routes) self.add_menu(config, new_routes, paket)
def route_from_list(self, config, routs=routes): def route_from_list(self, config, routs=routes, paket="opensipkd.base.views"):
new_routes = [] new_routes = []
for route in routs: for route in routs:
d = {"kode": route[0], d = {"kode": route[0],
"path": route[1], "path": route[1],
"nama": route[2], "nama": route[2],
"type": len(route)>4 and route[4] or 0 "type": len(route) > 4 and route[4] or 0
} }
new_routes.append(d) new_routes.append(d)
self.add_menu(config, new_routes) self.add_menu(config, new_routes, paket)
def add_menu(self, config, route_menus, parent=None): def add_menu(self, config, route_menus, parent=None, paket="opensipkd.base.views"):
route_names = [] route_names = []
for route in route_menus: for route in route_menus:
route["route_names"]=[route["kode"]] route["route_names"] = [route["kode"]]
route["permission"] = route.get("permission", "") route["permission"] = route.get("permission", "")
route["icon"] = route.get("icon", None) route["icon"] = route.get("icon", None)
route_type = route.get("type", 0) route_type = route.get("type", 0)
if route_type=="" or route_type==None: if route_type == "" or route_type == None:
route_type = 0 route_type = 0
else: else:
route_type = int(route_type) route_type = int(route_type)
route["type"] = route_type route["type"] = route_type
route["is_menu"] = route.get("is_menu", 0) route["is_menu"] = route.get("is_menu", 0)
route["path"] = route.get("path", "#") url_path = route.get("path", None)
if not url_path:
# pjdl /pjdl pjdl-add /pjdl/add
url_path = "/"+route["kode"].replace("-", "/")
route["path"] = url_path
children = route.get("children", []) children = route.get("children", [])
route["children"]=[] route["children"] = []
if route.get("class_view"): if route.get("class_view"):
_add_view_config(config, "opensipkd.coba.views", route) _add_view_config(config, paket, route)
elif route["path"] != "#": elif route["path"] != "#":
_add_route(config, route) _add_route(config, route)
if route.get("is_menu", None): if route.get("is_menu", None):
if not parent: if not parent:
self.menus.append(route) self.menus.append(route)
else: else:
parent["children"].append(route) parent["children"].append(route)
if children: if children:
route["route_names"].extend( route["route_names"].extend(
self.add_menu(config, children, route) self.add_menu(config, children, route, paket)
) )
route_names.append(route["kode"]) route_names.append(route["kode"])
return route_names return route_names
def get_menus(self): def get_menus(self):
return self.menus return self.menus
BASE_CLASS = BaseApp() BASE_CLASS = BaseApp()
...@@ -4,6 +4,7 @@ home-auth,/home,Home Auth,1, ...@@ -4,6 +4,7 @@ home-auth,/home,Home Auth,1,
home-about,/home/{id}/about,Home About,1 home-about,/home/{id}/about,Home About,1
login,/login,Login,1,0, login,/login,Login,1,0,
logout,/logout,Logout,1,0, logout,/logout,Logout,1,0,
recreate-api-key,/recreate-api-key,Buat ulang API Key,1
rpc,/rpc,RPC,1,1, rpc,/rpc,RPC,1,1,
change-password,/password/{code},Ubah password,1, change-password,/password/{code},Ubah password,1,
password,/password,Ubah password,1, password,/password,Ubah password,1,
...@@ -94,7 +95,6 @@ departemen-user-view,/departemen/user/{id}/view,User Organisasi view,1,0, ...@@ -94,7 +95,6 @@ departemen-user-view,/departemen/user/{id}/view,User Organisasi view,1,0,
departemen-user-del,/departemen/user/{id}/del,User Organisasi Hapus,1,0, departemen-user-del,/departemen/user/{id}/del,User Organisasi Hapus,1,0,
departemen-user-rpt,/departemen/user/{rpt}/rpt,User Organisasi Report,1,0, departemen-user-rpt,/departemen/user/{rpt}/rpt,User Organisasi Report,1,0,
rpc-user,/rpc/user,WebService User Management,1,1, rpc-user,/rpc/user,WebService User Management,1,1,
recreate-api-key,/recreate-api-key,Buat ulang API Key,1,
googleOauth2,/googleOauth2,'Google OAuth2',1 googleOauth2,/googleOauth2,'Google OAuth2',1
googlesignin,/googlesignin, "Google SignIn",1 googlesignin,/googlesignin, "Google SignIn",1
permission,/permission,Daftar Permission,1 permission,/permission,Daftar Permission,1
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!