Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit d9a52e62
authored
Apr 28, 2026
by
Ari Agung Prasetiyo
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
Merge branch 'v5.0' of
https://git.opensipkd.com/aa.gusti/opensipkd-base
into v5.0
2 parents
b8cfdb2f
166bffbe
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
54 additions
and
19 deletions
opensipkd/base/__init__.py
opensipkd/base/scripts/data/users.csv
opensipkd/base/static/v3/css/osipkd.css
opensipkd/base/views/base_views.py
opensipkd/detable/templates/detable.pt
pyproject.toml
opensipkd/base/__init__.py
View file @
d9a52e6
...
...
@@ -776,7 +776,8 @@ def bad_request_view(exc, request):
# Arahkan ulang ke halaman login (misalnya route 'login')
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
.
headers
.
extend
(
headers
)
return
response
...
...
opensipkd/base/scripts/data/users.csv
View file @
d9a52e6
email,status,user_name,registered_date
admin@localhost,1,admin,
guest@local.host,1,guest,
\ No newline at end of file
opensipkd/base/static/v3/css/osipkd.css
View file @
d9a52e6
...
...
@@ -421,6 +421,8 @@ div.col-md-6 {
text-align
:
left
;
margin-top
:
5px
!important
;
margin-bottom
:
5px
!important
;
margin-left
:
8px
!important
;
margin-right
:
8px
!important
;
}
...
...
opensipkd/base/views/base_views.py
View file @
d9a52e6
...
...
@@ -34,7 +34,34 @@ from ...detable import DeTable
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
):
upload
=
colander
.
SchemaNode
(
FileData
(),
...
...
@@ -153,6 +180,8 @@ class BaseView(object):
self
.
list_buttons
.
append
(
btn_delete
)
self
.
html_tag_cleaner
=
True
# 2026-04-13
self
.
use_ajax
=
False
def
init_session
(
self
,
request
):
# # if not request.user:
...
...
@@ -373,7 +402,7 @@ class BaseView(object):
if
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):
...
...
@@ -665,20 +694,20 @@ class BaseView(object):
def
returned_form
(
self
,
form
,
**
kwargs
):
table
=
kwargs
.
get
(
"table"
,
None
)
if
self
.
req
.
is_xhr
and
self
.
req
.
params
.
get
(
"html"
,
"false"
)
==
"false"
:
data
=
form
.
cstruct
if
"captcha"
in
form
:
kode_captcha
,
file_name
=
img_captcha
(
self
.
req
)
self
.
req
.
session
[
"captcha_code"
]
=
kode_captcha
url
=
self
.
get_captcha_url
()
cstruct
=
url
+
file_name
data
[
"captcha"
]
=
cstruct
error
=
kwargs
.
get
(
"error"
,
""
)
if
error
:
error
[
"data"
]
=
data
return
self
.
resp_xhr
({
"error"
:
error
})
return
self
.
resp_xhr
({
"data"
:
data
})
#
if self.req.is_xhr and self.req.params.get("html", "false") == "false":
#
data = form.cstruct
#
if "captcha" in form:
#
kode_captcha, file_name = img_captcha(self.req)
#
self.req.session["captcha_code"] = kode_captcha
#
url = self.get_captcha_url()
#
cstruct = url+file_name
#
data["captcha"] = cstruct
#
error = kwargs.get("error", "")
#
if error:
#
error["data"]=data
#
return self.resp_xhr({"error": error})
#
return self.resp_xhr({"data": data})
resources
=
form
.
get_widget_resources
()
readonly
=
"readonly"
in
kwargs
and
kwargs
[
"readonly"
]
or
False
...
...
opensipkd/detable/templates/detable.pt
View file @
d9a52e6
...
...
@@ -508,7 +508,7 @@
if (typ === "select") filter_table();
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");
...
...
pyproject.toml
View file @
d9a52e6
...
...
@@ -4,7 +4,9 @@ build-backend = 'setuptools.build_meta'
[tool.setuptools]
packages
=
[
"opensipkd"
,
"opensipkd.detable"
,
"opensipkd.base"
]
#data-file = [
#("etc/base", ["etc/ojdbc8.jar", "etc/osipkd.service"]),
#]
[tool.mypy]
exclude
=
[
'bak'
,
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment