Commit d9a52e62 by Ari Agung Prasetiyo

Merge branch 'v5.0' of https://git.opensipkd.com/aa.gusti/opensipkd-base into v5.0

2 parents b8cfdb2f 166bffbe
...@@ -776,7 +776,8 @@ def bad_request_view(exc, request): ...@@ -776,7 +776,8 @@ def bad_request_view(exc, request):
# Arahkan ulang ke halaman login (misalnya route 'login') # Arahkan ulang ke halaman login (misalnya route 'login')
request.session.flash("Permintaan tidak valid. Silakan ulangi kembali. atau origin tidak diizinkan.", "error") request.session.flash("Permintaan tidak valid. Silakan ulangi kembali. atau origin tidak diizinkan.", "error")
referrer = request.referrer or request.route_url('base-home') _logging.debug(f"Bad Request: {exc} from {request.url}")
referrer = request.route_url('base-home')
response = HTTPFound(location=referrer) response = HTTPFound(location=referrer)
response.headers.extend(headers) response.headers.extend(headers)
return response return response
......
email,status,user_name,registered_date email,status,user_name,registered_date
admin@localhost,1,admin,
guest@local.host,1,guest, guest@local.host,1,guest,
\ No newline at end of file \ No newline at end of file
...@@ -421,6 +421,8 @@ div.col-md-6 { ...@@ -421,6 +421,8 @@ div.col-md-6 {
text-align: left; text-align: left;
margin-top:5px !important; margin-top:5px !important;
margin-bottom:5px !important; margin-bottom:5px !important;
margin-left: 8px !important;
margin-right: 8px !important;
} }
......
...@@ -34,7 +34,34 @@ from ...detable import DeTable ...@@ -34,7 +34,34 @@ from ...detable import DeTable
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
# SEARCH_METHODS = {
# 'none': lambda expr, value: None,
# 'string_contains': lambda expr, value: expr.ilike('%' + value + '%'),
# 'ilike': lambda expr, value: expr.ilike(value),
# 'like': lambda expr, value: expr.like(value),
# 'numeric': numeric_query,
# 'date': date_query,
# 'yadcf_text': lambda expr, value: expr.ilike('%' + value + '%'),
# 'yadcf_autocomplete': lambda expr, value: expr == value,
# 'yadcf_select': lambda expr, value: expr.ilike('%' + value + '%'),
# 'yadcf_multi_select': yadcf_multi_select,
# 'yadcf_range_number': yadcf_range_number,
# 'yadcf_range_number_slider': yadcf_range_number,
# 'yadcf_range_date': yadcf_range_date
# }
# search_operators = {
# '=': lambda expr, value: expr == value,
# '>': lambda expr, value: expr > value,
# '>=': lambda expr, value: expr >= value,
# '<': lambda expr, value: expr < value,
# '<=': lambda expr, value: expr <= value,
# }
class AddSchema(colander.Schema):
kode = colander.SchemaNode(colander.String(), title="Kode", validator=colander.Length(max=50),
search_method = "string_contains",
searchable = True,
)
class UploadSchema(colander.Schema): class UploadSchema(colander.Schema):
upload = colander.SchemaNode( upload = colander.SchemaNode(
FileData(), FileData(),
...@@ -153,6 +180,8 @@ class BaseView(object): ...@@ -153,6 +180,8 @@ class BaseView(object):
self.list_buttons.append(btn_delete) self.list_buttons.append(btn_delete)
self.html_tag_cleaner = True self.html_tag_cleaner = True
# 2026-04-13
self.use_ajax = False
def init_session(self, request): def init_session(self, request):
# # if not request.user: # # if not request.user:
...@@ -373,7 +402,7 @@ class BaseView(object): ...@@ -373,7 +402,7 @@ class BaseView(object):
if row: if row:
schema.deserialize(row) schema.deserialize(row)
return Form(schema, buttons=buttons, autocomplete=self.autocomplete) return Form(schema, buttons=buttons, autocomplete=self.autocomplete, use_ajax=self.use_ajax)
""" """
def session_failed(self, session_name): def session_failed(self, session_name):
...@@ -665,20 +694,20 @@ class BaseView(object): ...@@ -665,20 +694,20 @@ class BaseView(object):
def returned_form(self, form, **kwargs): def returned_form(self, form, **kwargs):
table = kwargs.get("table", None) table = kwargs.get("table", None)
if self.req.is_xhr and self.req.params.get("html", "false") == "false": # if self.req.is_xhr and self.req.params.get("html", "false") == "false":
data = form.cstruct # data = form.cstruct
if "captcha" in form: # if "captcha" in form:
kode_captcha, file_name = img_captcha(self.req) # kode_captcha, file_name = img_captcha(self.req)
self.req.session["captcha_code"] = kode_captcha # self.req.session["captcha_code"] = kode_captcha
url = self.get_captcha_url() # url = self.get_captcha_url()
cstruct = url+file_name # cstruct = url+file_name
data["captcha"] = cstruct # data["captcha"] = cstruct
error = kwargs.get("error", "") # error = kwargs.get("error", "")
if error: # if error:
error["data"]=data # error["data"]=data
return self.resp_xhr({"error": error}) # return self.resp_xhr({"error": error})
return self.resp_xhr({"data": data}) # return self.resp_xhr({"data": data})
resources = form.get_widget_resources() resources = form.get_widget_resources()
readonly = "readonly" in kwargs and kwargs["readonly"] or False readonly = "readonly" in kwargs and kwargs["readonly"] or False
......
...@@ -508,7 +508,7 @@ ...@@ -508,7 +508,7 @@
if (typ === "select") filter_table(); if (typ === "select") filter_table();
var typ = $(this).attr("type").toLowerCase(); var typ = $(this).attr("type").toLowerCase();
if (typ in ("date", "number")) filter_table(); if (("date", "number").indexOf(typ) > -1) filter_table();
}); });
console.log("Read Data"); console.log("Read Data");
......
...@@ -4,7 +4,9 @@ build-backend = 'setuptools.build_meta' ...@@ -4,7 +4,9 @@ build-backend = 'setuptools.build_meta'
[tool.setuptools] [tool.setuptools]
packages = ["opensipkd", "opensipkd.detable", "opensipkd.base"] packages = ["opensipkd", "opensipkd.detable", "opensipkd.base"]
#data-file = [
#("etc/base", ["etc/ojdbc8.jar", "etc/osipkd.service"]),
#]
[tool.mypy] [tool.mypy]
exclude = [ exclude = [
'bak', 'bak',
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!