Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Taufik Yulianto
/
esipkd
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 6c18362e
authored
Oct 25, 2022
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
Merge branch 'master' of
https://git.opensipkd.com/taufik/esipkd
2 parents
642bc645
89219106
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
108 additions
and
6 deletions
esipkd/tools.py
esipkd/views/pap.py
esipkd/views/templates/user/add.pt
esipkd/views/templates/user/edit.pt
esipkd/views/user.py
esipkd/tools.py
View file @
6c18362
...
@@ -395,9 +395,9 @@ class CSVRenderer(object):
...
@@ -395,9 +395,9 @@ class CSVRenderer(object):
# File #
# File #
########
########
# http://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits-in-python
# http://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits-in-python
def
get_random_string
():
def
get_random_string
(
width
=
6
):
return
''
.
join
(
random
.
choice
(
ascii_uppercase
+
ascii_lowercase
+
digits
)
\
return
''
.
join
(
random
.
choice
(
ascii_uppercase
+
ascii_lowercase
+
digits
)
\
for
_
in
range
(
6
))
for
_
in
range
(
width
))
def
get_ext
(
filename
):
def
get_ext
(
filename
):
return
os
.
path
.
splitext
(
filename
)[
-
1
]
return
os
.
path
.
splitext
(
filename
)[
-
1
]
...
...
esipkd/views/pap.py
View file @
6c18362
...
@@ -15,6 +15,10 @@ from ..models import (DBSession)
...
@@ -15,6 +15,10 @@ from ..models import (DBSession)
from
..models.isipkd
import
(
Pap
)
from
..models.isipkd
import
(
Pap
)
from
..models.informix
import
EngInformix
from
..models.informix
import
EngInformix
from
.bjb_va
import
rpc_params
,
BJBVA
from
.bjb_qris
import
BJBQRIS
from
..tools
import
ymd
,
dmy
,
ymdhms
,
dmyhms
,
dmy_to_date
SESS_ADD_FAILED
=
'user add failed'
SESS_ADD_FAILED
=
'user add failed'
SESS_EDIT_FAILED
=
'user edit failed'
SESS_EDIT_FAILED
=
'user edit failed'
...
@@ -349,6 +353,61 @@ def view_edit(request):
...
@@ -349,6 +353,61 @@ def view_edit(request):
return
HTTPFound
(
location
=
request
.
route_url
(
'pap-edit'
,
nr
=
row
.
npwpd
,
return
HTTPFound
(
location
=
request
.
route_url
(
'pap-edit'
,
nr
=
row
.
npwpd
,
nk
=
row
.
m_pjk_bln
,
nk
=
row
.
m_pjk_bln
,
em
=
row
.
m_pjk_thn
))
em
=
row
.
m_pjk_thn
))
elif
'createva'
in
request
.
POST
:
val
=
dict
(
request
.
POST
.
items
())
val
.
update
(
dict
(
client_type
=
3
,
invoice_no
=
val
[
'kd_bayar'
],
product_code
=
98
,
description
=
val
[
'keterangan'
],
customer_name
=
val
[
'nm_perus'
],
customer_email
=
"-"
,
customer_phone
=
"-"
,
expired_date
=
ymdhms
(
datetime
.
now
()),
))
val
[
'amount'
]
=
(
val
[
'bea_pok_pjk'
]
+
val
[
'bea_den_pjk'
])
cekpap
=
Pap
.
query
()
.
filter
(
Pap
.
kd_bayar
==
val
[
'kd_bayar'
])
.
first
()
if
not
cekpap
:
cekpap
=
Pap
()
cekpap
.
from_dict
(
val
)
DBSession
.
add
(
cekpap
)
DBSession
.
flush
()
row
=
BJBVA
.
create_va
(
val
,
rpc_params
())
if
row
:
request
.
session
.
flash
(
'BJBVA No.
%
s sudah ditambahkan.'
%
row
.
va_number
)
else
:
request
.
session
.
flash
(
'BJBVA gagal ditambahkan.'
)
elif
'createqris'
in
request
.
POST
:
val
=
dict
(
request
.
POST
.
items
())
val
.
update
(
dict
(
client_type
=
3
,
invoice_no
=
val
[
'kd_bayar'
],
product_code
=
98
,
description
=
val
[
'keterangan'
],
customer_name
=
val
[
'nm_perus'
],
customer_email
=
"-"
,
customer_phone
=
"-"
,
expired_date
=
ymdhms
(
datetime
.
now
()),
))
val
[
'amount'
]
=
(
val
[
'bea_pok_pjk'
]
+
val
[
'bea_den_pjk'
])
cekpap
=
Pap
.
query
()
.
filter
(
Pap
.
kd_bayar
==
val
[
'kd_bayar'
])
.
first
()
if
not
cekpap
:
cekpap
=
Pap
()
cekpap
.
from_dict
(
val
)
DBSession
.
add
(
cekpap
)
DBSession
.
flush
()
row
=
BJBQRIS
.
create_va
(
val
,
rpc_params
())
if
row
:
request
.
session
.
flash
(
'BJBQRIS No.
%
s sudah ditambahkan.'
%
row
.
va_number
)
else
:
request
.
session
.
flash
(
'BJBQRIS gagal ditambahkan.'
)
return
route_list
(
request
)
return
route_list
(
request
)
elif
SESS_EDIT_FAILED
in
request
.
session
:
elif
SESS_EDIT_FAILED
in
request
.
session
:
return
session_failed
(
request
,
SESS_EDIT_FAILED
)
return
session_failed
(
request
,
SESS_EDIT_FAILED
)
...
...
esipkd/views/templates/user/add.pt
View file @
6c18362
...
@@ -52,6 +52,17 @@
...
@@ -52,6 +52,17 @@
${error}
</p>
${error}
</p>
</div>
</div>
</div>
</div>
<div
class=
"form-group"
tal:define=
"field form['is_api_key']"
id=
"item-${field.oid}"
>
<label
for=
"${field.oid}"
class=
"control-label col-md-3"
id=
"req-${field.oid}"
>
${field.title}
<span
id=
"error-${field.oid}"
class=
"text text-danger"
tal:condition=
"field.required"
>
&
nbsp*
</span></label>
<div
class=
"col-md-9"
>
${structure:field.serialize()}
<p
id=
"error-${field.oid}"
class=
"help-block"
tal:condition=
"field.error"
tal:repeat=
"error field.error.messages()"
>
${error}
</p>
</div>
</div>
<!--Status -->
<!--Status -->
<div
class=
"form-group"
tal:define=
"field form['status']"
id=
"item-${field.oid}"
>
<div
class=
"form-group"
tal:define=
"field form['status']"
id=
"item-${field.oid}"
>
<label
for=
"${field.oid}"
class=
"control-label col-md-3"
id=
"req-${field.oid}"
>
<label
for=
"${field.oid}"
class=
"control-label col-md-3"
id=
"req-${field.oid}"
>
...
...
esipkd/views/templates/user/edit.pt
View file @
6c18362
...
@@ -52,6 +52,17 @@
...
@@ -52,6 +52,17 @@
${error}
</p>
${error}
</p>
</div>
</div>
</div>
</div>
<div
class=
"form-group"
tal:define=
"field form['is_api_key']"
id=
"item-${field.oid}"
>
<label
for=
"${field.oid}"
class=
"control-label col-md-3"
id=
"req-${field.oid}"
>
${field.title}
<span
id=
"error-${field.oid}"
class=
"text text-danger"
tal:condition=
"field.required"
>
&
nbsp*
</span></label>
<div
class=
"col-md-9"
>
${structure:field.serialize()}
<p
id=
"error-${field.oid}"
class=
"help-block"
tal:condition=
"field.error"
tal:repeat=
"error field.error.messages()"
>
${error}
</p>
</div>
</div>
<!--Status -->
<!--Status -->
<div
class=
"form-group"
tal:define=
"field form['status']"
id=
"item-${field.oid}"
>
<div
class=
"form-group"
tal:define=
"field form['status']"
id=
"item-${field.oid}"
>
<label
for=
"${field.oid}"
class=
"control-label col-md-3"
id=
"req-${field.oid}"
>
<label
for=
"${field.oid}"
class=
"control-label col-md-3"
id=
"req-${field.oid}"
>
...
...
esipkd/views/user.py
View file @
6c18362
...
@@ -26,7 +26,7 @@ from ..models.isipkd import(
...
@@ -26,7 +26,7 @@ from ..models.isipkd import(
from
datatables
import
(
from
datatables
import
(
ColumnDT
,
DataTables
)
ColumnDT
,
DataTables
)
from
esipkd.tools
import
DefaultTimeZone
,
_DTstrftime
,
_DTnumberformat
,
_DTactive
from
esipkd.tools
import
DefaultTimeZone
,
_DTstrftime
,
_DTnumberformat
,
_DTactive
,
get_random_string
SESS_ADD_FAILED
=
'user add failed'
SESS_ADD_FAILED
=
'user add failed'
SESS_EDIT_FAILED
=
'user edit failed'
SESS_EDIT_FAILED
=
'user edit failed'
...
@@ -86,6 +86,11 @@ def deferred_status(node, kw):
...
@@ -86,6 +86,11 @@ def deferred_status(node, kw):
values
=
kw
.
get
(
'daftar_status'
,
[])
values
=
kw
.
get
(
'daftar_status'
,
[])
return
widget
.
SelectWidget
(
values
=
values
)
return
widget
.
SelectWidget
(
values
=
values
)
@colander.deferred
def
api_key_widget
(
node
,
kw
):
values
=
kw
.
get
(
'api_key_list'
,
[])
return
widget
.
SelectWidget
(
values
=
values
)
STATUS
=
(
STATUS
=
(
(
1
,
'Aktif'
),
(
1
,
'Aktif'
),
(
0
,
'Inaktif'
),
(
0
,
'Inaktif'
),
...
@@ -102,6 +107,9 @@ class AddSchema(colander.Schema):
...
@@ -102,6 +107,9 @@ class AddSchema(colander.Schema):
status
=
colander
.
SchemaNode
(
status
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
widget
=
deferred_status
)
widget
=
deferred_status
)
is_api_key
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
api_key_widget
,
title
=
'API Key'
,
missing
=
colander
.
drop
)
password
=
colander
.
SchemaNode
(
password
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
widget
=
widget
.
PasswordWidget
(),
widget
=
widget
.
PasswordWidget
(),
...
@@ -112,9 +120,17 @@ class EditSchema(AddSchema):
...
@@ -112,9 +120,17 @@ class EditSchema(AddSchema):
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
))
widget
=
widget
.
HiddenWidget
(
readonly
=
True
))
def
get_form
(
request
,
class_form
):
def
get_form
(
request
,
class_form
,
user
=
None
):
schema
=
class_form
(
validator
=
form_validator
)
schema
=
class_form
(
validator
=
form_validator
)
schema
=
schema
.
bind
(
daftar_status
=
STATUS
)
if
user
and
user
.
api_key
:
api_key_list
=
(
(
''
,
user
.
api_key
),
(
'0'
,
'Hapus'
))
else
:
api_key_list
=
(
(
''
,
'Tidak ada'
),
(
'1'
,
'Buatkan'
))
schema
=
schema
.
bind
(
daftar_status
=
STATUS
,
api_key_list
=
api_key_list
)
schema
.
request
=
request
schema
.
request
=
request
return
Form
(
schema
,
buttons
=
(
'save'
,
'cancel'
))
return
Form
(
schema
,
buttons
=
(
'save'
,
'cancel'
))
...
@@ -122,6 +138,11 @@ def save(values, user, row=None):
...
@@ -122,6 +138,11 @@ def save(values, user, row=None):
if
not
row
:
if
not
row
:
row
=
User
()
row
=
User
()
row
.
from_dict
(
values
)
row
.
from_dict
(
values
)
is_api_key
=
values
.
get
(
'is_api_key'
)
if
is_api_key
==
'0'
:
row
.
api_key
=
None
elif
is_api_key
==
'1'
:
row
.
api_key
=
get_random_string
(
64
)
if
values
[
'password'
]:
if
values
[
'password'
]:
row
.
password
=
values
[
'password'
]
row
.
password
=
values
[
'password'
]
DBSession
.
add
(
row
)
DBSession
.
add
(
row
)
...
@@ -179,7 +200,7 @@ def view_edit(request):
...
@@ -179,7 +200,7 @@ def view_edit(request):
row
=
query_id
(
request
)
.
first
()
row
=
query_id
(
request
)
.
first
()
if
not
row
:
if
not
row
:
return
id_not_found
(
request
)
return
id_not_found
(
request
)
form
=
get_form
(
request
,
EditSchema
)
form
=
get_form
(
request
,
EditSchema
,
user
=
row
)
if
request
.
POST
:
if
request
.
POST
:
if
'save'
in
request
.
POST
:
if
'save'
in
request
.
POST
:
controls
=
request
.
POST
.
items
()
controls
=
request
.
POST
.
items
()
...
...
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