Refactor file handling and validation in BaseApp and BaseView; update temp file …

…management in settings and improve widget selection logic in DeTable.
1 parent ce3b6b5e
...@@ -333,8 +333,9 @@ def main(global_config, **settings): ...@@ -333,8 +333,9 @@ def main(global_config, **settings):
if 'timezone' not in settings: if 'timezone' not in settings:
settings['timezone'] = DefaultTimeZone settings['timezone'] = DefaultTimeZone
# settings["captcha_files"] = "c:\\tmp\\captcha\\" # settings["captcha_files"] = "c:\\tmp\\captcha\\"
tmp = get_params("temp_files", "/tmp", settings=settings) tmp = get_params("temp_files", f"{os.sep}tmp", settings=settings)
settings["captcha_files"] = os.path.join(tmp, "captcha") + os.sep settings["temp_files"] = tmp
settings['captcha_files'] = os.path.join(tmp, "captcha") + os.sep
init_db(settings=settings) init_db(settings=settings)
config = get_config(settings=settings) config = get_config(settings=settings)
...@@ -348,6 +349,10 @@ def main(global_config, **settings): ...@@ -348,6 +349,10 @@ def main(global_config, **settings):
def _add_route(config, route): def _add_route(config, route):
if titles.get(route.get("kode")):
_logging.warning(f"Route {route.get('kode')} sudah ada di titles")
return
if int(route.get("typ", 0)) == 0: if int(route.get("typ", 0)) == 0:
config.add_route(route.get("kode"), route.get("path")) config.add_route(route.get("kode"), route.get("path"))
elif int(route.get("typ")) == 1: elif int(route.get("typ")) == 1:
...@@ -404,13 +409,13 @@ def _add_view_config(config, paket, route): ...@@ -404,13 +409,13 @@ def _add_view_config(config, paket, route):
class BaseApp(): class BaseApp():
def __init__(self): def __init__(self):
self.menus = [] self.menus = []
self.partner_doc = ""
self.temp_files = "" self.temp_files = ""
self.captcha_files = ""
self.partner_doc = ""
self.allow_register = 0 self.allow_register = 0
self.reg_form = "" self.reg_form = ""
self.reg_id_card = 0 self.reg_id_card = 0
self.reg_captcha = 0 self.reg_captcha = 0
self.captcha_files = ""
self.login_captcha = 0 self.login_captcha = 0
self.base_dir = os.path.split(__file__)[0] self.base_dir = os.path.split(__file__)[0]
...@@ -419,16 +424,23 @@ class BaseApp(): ...@@ -419,16 +424,23 @@ class BaseApp():
return open(fullpath) return open(fullpath)
def static_view(self, config, settings=None): def static_view(self, config, settings=None):
self.temp_files = settings.get("temp_files")
if not os.path.exists(self.temp_files):
os.makedirs(self.temp_files)
self.captcha_files = settings.get("captcha_files")
if not os.path.exists(self.captcha_files):
os.makedirs(self.captcha_files)
self.partner_doc = get_params( self.partner_doc = get_params(
"partner_doc", '/tmp/docs/partner', settings=settings)+os.sep "partner_doc",
os.path.join(self.temp_files,'docs','partner'),
settings=settings)+os.sep
if not os.path.exists(self.partner_doc): if not os.path.exists(self.partner_doc):
os.makedirs(self.partner_doc) os.makedirs(self.partner_doc)
config.add_static_view( config.add_static_view(
'docs/partner', self.partner_doc, cache_max_age=0) 'docs/partner', self.partner_doc, cache_max_age=0)
self.temp_files = get_params(
"temp_files", '/tmp', settings=settings)
if not os.path.exists(self.temp_files):
os.makedirs(self.temp_files)
# Registrasi # Registrasi
self.allow_register = get_params( self.allow_register = get_params(
......
...@@ -736,8 +736,8 @@ class BaseView(object): ...@@ -736,8 +736,8 @@ class BaseView(object):
return self.returned_form(form, table, **kw) return self.returned_form(form, table, **kw)
# def get_file(self, filename): def get_file(self, filename):
# return open(filename) return open(filename)
def save_upload(self, file_name, **args): def save_upload(self, file_name, **args):
return append_csv(self.table, file_name, self.upload_keys, return append_csv(self.table, file_name, self.upload_keys,
...@@ -747,8 +747,11 @@ class BaseView(object): ...@@ -747,8 +747,11 @@ class BaseView(object):
def before_add(self): def before_add(self):
return {} return {}
# def validation_failure(self, value): def validation_failure(self, value):
# return value """Digunakan untuk memproses validasi form yang gagal"""
from warnings import warn
warn("Fungsi Ini sudah tidak digunakan", DeprecationWarning)
return value
def cancel_act(self, **kwargs): def cancel_act(self, **kwargs):
return self.route_list(**kwargs) return self.route_list(**kwargs)
......
...@@ -370,7 +370,7 @@ class DeTable(field.Field): ...@@ -370,7 +370,7 @@ class DeTable(field.Field):
def widget_select(self, column): def widget_select(self, column):
d = {} d = {}
d["wg_select"] = True d["wg_select"] = True
d["wg_select_val"] = column.widget.values d["wg_select_val"] = type(column.widget.values) == list and dict(column.widget.values) or column.widget.values
if column.widget.values: if column.widget.values:
for val in column.widget.values: for val in column.widget.values:
if hasattr(column, f"color_{val}"): if hasattr(column, f"color_{val}"):
......
...@@ -169,13 +169,13 @@ ...@@ -169,13 +169,13 @@
} }
return render_checkbox(false); return render_checkbox(false);
} }
//} }
//else if (${tableid}Columns[co].wg_select === true) { else if (${tableid}Columns[co].wg_select === true) {
// ${tableid}Columns[co].render = function (value) { ${tableid}Columns[co].render = function (value) {
// if (value != null) if (value != null)
// return ${tableid}Columns[co].wg_select_val[value]; return ${tableid}Columns[co].wg_select_val[value];
// return ""; return "";
// } }
}else if (${tableid}Columns[co].hasOwnProperty("url")) { }else if (${tableid}Columns[co].hasOwnProperty("url")) {
let url = ${tableid}Columns[co].url; let url = ${tableid}Columns[co].url;
${tableid}Columns[co].render = function (data) { ${tableid}Columns[co].render = function (data) {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!