Commit 38bbc273 by taufikyu

penambahan menu api_key di user

1 parent c36d5361
......@@ -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]
......
......@@ -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!