Commit 6c18362e by aagusti

Merge branch 'master' of https://git.opensipkd.com/taufik/esipkd

2 parents 642bc645 89219106
......@@ -395,9 +395,9 @@ class CSVRenderer(object):
# File #
########
# 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) \
for _ in range(6))
for _ in range(width))
def get_ext(filename):
return os.path.splitext(filename)[-1]
......
......@@ -15,6 +15,10 @@ from ..models import (DBSession)
from ..models.isipkd import (Pap)
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_EDIT_FAILED = 'user edit failed'
......@@ -349,6 +353,61 @@ def view_edit(request):
return HTTPFound(location=request.route_url('pap-edit',nr=row.npwpd,
nk=row.m_pjk_bln,
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)
elif SESS_EDIT_FAILED in request.session:
return session_failed(request, SESS_EDIT_FAILED)
......
......@@ -52,6 +52,17 @@
${error}</p>
</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 -->
<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}">
......
......@@ -52,6 +52,17 @@
${error}</p>
</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 -->
<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}">
......
......@@ -26,7 +26,7 @@ from ..models.isipkd import(
from datatables import (
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_EDIT_FAILED = 'user edit failed'
......@@ -86,6 +86,11 @@ def deferred_status(node, kw):
values = kw.get('daftar_status', [])
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 = (
(1, 'Aktif'),
(0, 'Inaktif'),
......@@ -102,6 +107,9 @@ class AddSchema(colander.Schema):
status = colander.SchemaNode(
colander.String(),
widget=deferred_status)
is_api_key = colander.SchemaNode(
colander.String(), widget=api_key_widget, title='API Key',
missing=colander.drop)
password = colander.SchemaNode(
colander.String(),
widget=widget.PasswordWidget(),
......@@ -112,9 +120,17 @@ class EditSchema(AddSchema):
missing=colander.drop,
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 = 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
return Form(schema, buttons=('save','cancel'))
......@@ -122,6 +138,11 @@ def save(values, user, row=None):
if not row:
row = User()
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']:
row.password = values['password']
DBSession.add(row)
......@@ -179,7 +200,7 @@ def view_edit(request):
row = query_id(request).first()
if not row:
return id_not_found(request)
form = get_form(request, EditSchema)
form = get_form(request, EditSchema, user=row)
if request.POST:
if 'save' in request.POST:
controls = request.POST.items()
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!