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 38bbc273
authored
Oct 17, 2022
by
taufikyu
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
penambahan menu api_key di user
1 parent
c36d5361
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
49 additions
and
6 deletions
esipkd/tools.py
esipkd/views/templates/user/add.pt
esipkd/views/templates/user/edit.pt
esipkd/views/user.py
esipkd/tools.py
View file @
38bbc27
...
@@ -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/templates/user/add.pt
View file @
38bbc27
...
@@ -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 @
38bbc27
...
@@ -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 @
38bbc27
...
@@ -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