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 462a00fc
authored
Sep 02, 2024
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
callback pada append_csv
1 parent
d5f9767b
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
63 additions
and
113 deletions
opensipkd/base/__init__.py
opensipkd/base/handlers.py
opensipkd/base/views/base_views.py
opensipkd/base/views/jabatan.py
opensipkd/base/views/templates/form_list.pt
opensipkd/detable/templates/detable.pt
opensipkd/models/base.py
opensipkd/base/__init__.py
View file @
462a00f
...
...
@@ -97,7 +97,7 @@ def add_cors_headers_response_callback(event):
'Access-Control-Allow-Headers'
:
'Origin, Content-Type, Accept, Authorization'
,
'Access-Control-Max-Age'
:
'1728000'
,
}
log
.
info
(
f
"{origin} {request.is_xhr}"
)
#
log.info(f"{origin} {request.is_xhr}")
# response.headers.update(
# {'Access-Control-Allow-Credential': 'true',
# 'Access-Control-Allow-Origin': "*"}
...
...
@@ -109,7 +109,7 @@ def add_cors_headers_response_callback(event):
if
'Access-Control-Allow-Credentials'
not
in
headers
:
headers
[
'Access-Control-Allow-Credentials'
]
=
'true'
log
.
info
(
f
"Headers: {headers}"
)
#
log.info(f"Headers: {headers}")
response
.
headers
.
update
(
headers
)
event
.
request
.
add_response_callback
(
cors_headers
)
...
...
opensipkd/base/handlers.py
View file @
462a00f
...
...
@@ -2,10 +2,8 @@ import logging
import
traceback
from
datetime
import
datetime
from
hashlib
import
md5
from
opensipkd.models.handlers
import
(
Log
,
LogDBSession
,
)
from
opensipkd.models.handlers
import
(
Log
,
LogDBSession
,
)
class
SQLAlchemyHandler
(
logging
.
Handler
):
...
...
@@ -21,11 +19,11 @@ class SQLAlchemyHandler(logging.Handler):
level
=
record
.
__dict__
[
'levelname'
]
logger
=
record
.
__dict__
[
'name'
]
msg
=
record
.
__dict__
[
'msg'
]
line_id
=
f
'{t} {level} {msg}'
line_id
=
f
'{t} {level} {msg}'
line_id
=
md5
(
line_id
.
encode
(
'utf-8'
))
line_id
=
line_id
.
hexdigest
()
log
=
Log
(
line_id
=
line_id
,
logger
=
logger
,
level
=
level
,
trace
=
trace
,
msg
=
msg
)
line_id
=
line_id
,
logger
=
logger
,
level
=
level
,
trace
=
trace
,
msg
=
msg
)
LogDBSession
.
add
(
log
)
LogDBSession
.
flush
()
opensipkd/base/views/base_views.py
View file @
462a00f
import
logging
import
os
import
re
import
traceback
from
datetime
import
datetime
from
email.utils
import
parseaddr
...
...
@@ -9,8 +8,6 @@ import colander
from
datatables
import
ColumnDT
from
dateutil.relativedelta
import
relativedelta
from
deform
import
(
widget
,
Form
,
ValidationFailure
,
FileData
,
)
from
pyramid.httpexceptions
import
HTTPFound
,
HTTPNotFound
from
opensipkd.base.views.upload
import
tmpstore
from
opensipkd.tools
import
dmy
,
get_settings
,
get_ext
,
\
date_from_str
,
get_random_string
...
...
@@ -19,6 +16,8 @@ from opensipkd.tools.buttons import btn_save, btn_cancel, btn_close, btn_delete,
btn_pdf
,
btn_unpost
,
btn_post
from
opensipkd.tools.captcha
import
get_captcha
from
opensipkd.tools.report
import
csv_response
,
file_response
from
pyramid.httpexceptions
import
HTTPFound
,
HTTPNotFound
from
.common
import
DataTables
from
..
import
DBSession
,
get_params
,
get_urls
from
..scripts.initializedb
import
append_csv
...
...
@@ -121,7 +120,12 @@ class BaseView(object):
self
.
ses
[
'departemen_kd'
]
=
self
.
departemen_kd
self
.
ses
[
'departemen_nm'
]
=
self
.
departemen_nm
self
.
ses
[
'departemen_id'
]
=
self
.
departemen_id
if
'departemen_id'
in
self
.
params
:
self
.
departemen_id
=
self
.
params
[
'departemen_id'
]
if
not
self
.
departemen_id
:
self
.
departemen_id
=
0
self
.
ses
[
"departemen_id"
]
=
self
.
departemen_id
self
.
jenis
=
'jenis'
in
self
.
ses
and
self
.
ses
[
'jenis'
]
or
0
self
.
jenis
=
'jenis'
in
self
.
params
and
self
.
params
[
'jenis'
]
or
self
.
jenis
...
...
@@ -268,6 +272,26 @@ class BaseView(object):
def
next_edit
(
self
,
form
,
**
kwargs
):
return
self
.
route_list
(
**
kwargs
)
def
returned_form
(
self
,
form
,
table
,
**
kwargs
):
resources
=
form
.
get_widget_resources
()
readonly
=
"readonly"
in
kwargs
and
kwargs
[
"readonly"
]
is_object
=
kwargs
.
get
(
"is_object"
)
if
is_object
:
return
dict
(
form
=
form
,
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
],
**
kwargs
)
return
dict
(
form
=
form
.
render
(
readonly
=
readonly
),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
],
**
kwargs
)
def
view_view
(
self
,
**
kwargs
):
# row = query_id(request).first()
request
=
self
.
req
row
=
self
.
query_id
()
.
first
()
...
...
@@ -288,24 +312,8 @@ class BaseView(object):
return
self
.
route_list
(
"Nilai Data tidak ditemukan"
,
"error"
)
form
.
set_appstruct
(
values
)
table
=
self
.
get_item_table
(
row
)
resources
=
form
.
get_widget_resources
()
is_object
=
kwargs
.
get
(
"is_object"
,
False
)
if
is_object
:
return
dict
(
form
=
form
,
readonly
=
True
,
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
],
**
kwargs
)
return
dict
(
form
=
form
.
render
(
readonly
=
True
),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
],
**
kwargs
)
kwargs
[
"readonly"
]
=
True
return
self
.
returned_form
(
form
,
table
,
**
kwargs
)
def
set_post
(
self
,
**
kwargs
):
pass
...
...
@@ -375,7 +383,8 @@ class BaseView(object):
def
save_upload
(
self
,
file_name
,
delimiter
=
","
,
**
args
):
return
append_csv
(
self
.
table
,
file_name
,
self
.
upload_keys
,
get_file_func
=
self
.
get_file
,
update_exist
=
True
,
delimiter
=
delimiter
,
**
args
)
get_file_func
=
self
.
get_file
,
update_exist
=
True
,
delimiter
=
delimiter
,
**
args
)
def
before_add
(
self
):
return
{}
...
...
@@ -503,26 +512,9 @@ class BaseView(object):
if
isinstance
(
f
.
typ
,
colander
.
Date
):
e
.
cstruct
[
f
.
name
]
=
date_from_str
(
e
.
cstruct
[
f
.
name
])
form
.
set_appstruct
(
e
.
cstruct
)
return
self
.
returned_form
(
form
,
table
,
**
kwargs
)
# for k, v in e.cstruct.items():
# log.debug(hasattr(e.field, k))
# if isinstance(f, colander.Date):
# e.cstruct[f] = date_from_str(e.cstruct[f])
if
is_object
:
return
dict
(
form
=
form
,
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
],
**
kwargs
)
return
dict
(
form
=
form
.
render
(
e
.
cstruct
),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
],
**
kwargs
)
values
=
dict
(
c
)
row
=
self
.
save_request
(
values
)
return
self
.
after_add
(
row
=
row
,
**
kwargs
)
...
...
@@ -534,18 +526,7 @@ class BaseView(object):
return
self
.
route_list
(
**
kwargs
)
values
=
self
.
before_add
()
form
.
set_appstruct
(
values
)
if
is_object
:
return
dict
(
form
=
form
,
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
],
**
kwargs
)
return
dict
(
form
=
form
.
render
(),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
])
return
self
.
returned_form
(
form
,
table
,
**
kwargs
)
def
save
(
self
,
values
,
user
,
row
=
None
):
log
.
info
(
"Save"
)
...
...
@@ -595,7 +576,7 @@ class BaseView(object):
return
d
def
get_item_table
(
self
,
row
=
None
,
**
kwargs
):
return
return
None
def
before_edit
(
self
,
form
):
return
form
...
...
@@ -627,18 +608,8 @@ class BaseView(object):
log
.
error
(
f
"Edit Error: {str(e.error)}"
)
# log.debug(f"Edit Data: {e.cstruct}")
form
.
set_appstruct
(
e
.
cstruct
)
if
is_object
:
return
dict
(
form
=
form
,
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
],
**
kwargs
)
return
dict
(
form
=
form
.
render
(),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
])
return
self
.
returned_form
(
form
,
table
,
**
kwargs
)
c
=
dict
(
controls
)
self
.
save_request
(
c
,
row
)
return
self
.
after_edit
(
row
=
row
,
**
kwargs
)
...
...
@@ -648,17 +619,8 @@ class BaseView(object):
values
=
self
.
get_values
(
row
)
form
.
set_appstruct
(
values
)
form
=
self
.
before_edit
(
form
)
if
is_object
:
return
dict
(
form
=
form
,
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
],
**
kwargs
)
return
dict
(
form
=
form
.
render
(),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
])
return
self
.
returned_form
(
form
,
table
,
**
kwargs
)
def
before_delete
(
self
,
row
):
pass
...
...
@@ -668,7 +630,6 @@ class BaseView(object):
q
=
self
.
query_id
()
row
=
q
.
first
()
is_object
=
kwargs
.
get
(
"is_object"
,
False
)
if
not
row
:
return
self
.
id_not_found
()
if
not
self
.
bindings
:
...
...
@@ -691,19 +652,8 @@ class BaseView(object):
table
=
self
.
get_item_table
(
row
)
resources
=
form
.
get_widget_resources
()
form
.
set_appstruct
(
self
.
get_values
(
row
))
if
is_object
:
return
dict
(
form
=
form
,
readonly
=
True
,
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
],
**
kwargs
)
return
dict
(
form
=
form
.
render
(
readonly
=
True
),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
])
kwargs
[
"readonly"
]
=
True
return
self
.
returned_form
(
form
,
table
,
**
kwargs
)
def
query_id
(
self
):
q
=
self
.
db_session
.
query
(
self
.
table
)
.
filter_by
(
...
...
opensipkd/base/views/jabatan.py
View file @
462a00f
...
...
@@ -2,17 +2,16 @@ import os
import
colander
from
deform
import
(
widget
,
)
from
opensipkd.tools.report
import
csv_response
,
open_rml_pdf
,
open_rml_row
,
\
pdf_response
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
view_config
,
)
from
opensipkd.models
import
(
DBSession
,
Jabatan
,
Eselon
,
Departemen
)
from
.partner_base
import
NamaSchema
from
opensipkd.tools.report
import
csv_response
,
open_rml_pdf
,
open_rml_row
,
\
pdf_response
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
view_config
,
)
from
..views
import
BaseView
,
deferred_jenis
_
=
TranslationStringFactory
(
"opensipkd"
)
...
...
@@ -260,8 +259,8 @@ class ViewJabatan(BaseView):
else
:
jabatan
=
None
q
=
Jabatan
.
query_kode
(
value
[
'kode'
])
# DBSession.query(Jabatan).filter_by(kode=value['kode'])
q
=
Jabatan
.
query_kode
(
value
[
'kode'
])
# DBSession.query(Jabatan).filter_by(kode=value['kode'])
found
=
q
.
first
()
if
jabatan
:
if
found
and
found
.
id
!=
jabatan
.
id
:
...
...
opensipkd/base/views/templates/form_list.pt
View file @
462a00f
...
...
@@ -5,10 +5,12 @@
<h3
class=
"panel-title"
><i
class=
"fa fa-fw fa-plus"
></i>
${request.title}
</h3>
</div>
<div
class=
"panel-body"
>
<div
tal:content=
"structure form"
></div>
<div
class=
"container"
>
<div
tal:content=
"structure table"
></div>
<div
class=
"deform"
>
<div
tal:content=
"structure form"
></div>
</div>
<!--? <div class="container">-->
<div
tal:content=
"structure table"
></div>
<!--? </div>-->
</div>
</div>
</div>
...
...
opensipkd/detable/templates/detable.pt
View file @
462a00f
...
...
@@ -112,7 +112,7 @@
if (typeof value === "string" && value.length > 0) {
return render_checkbox(value)
}
if (["", false, 0].indexOf(value) === -1) {
if (["", false, 0
, null
].indexOf(value) === -1) {
return render_checkbox(true);
}
return render_checkbox(false);
...
...
opensipkd/models/base.py
View file @
462a00f
...
...
@@ -52,7 +52,8 @@ class CommonModel(object):
values
[
column
.
name
]
=
value
else
:
if
Integer
in
type
(
column
.
type
)
.
__mro__
or
Numeric
in
type
(
column
.
type
)
.
__mro__
:
values
[
column
.
name
]
=
0
if
value
==
0
:
values
[
column
.
name
]
=
0
return
values
def
to_dict_without_none
(
self
):
...
...
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