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