Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
irul
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit b54f3f1a
authored
Nov 18, 2024
by
aa.gusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
perbaikan form routes
1 parent
25e2a5fb
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
136 additions
and
5 deletions
opensipkd/base/views/routes.py
opensipkd/base/views/routes.py
View file @
b54f3f1
import
logging
import
colander
import
colander
from
deform
import
(
widget
,
)
from
deform
import
(
widget
,
)
from
opensipkd.models
import
(
DBSession
,
Route
,
)
from
opensipkd.tools.buttons
import
btn_view
,
btn_edit
,
btn_delete
from
opensipkd.tools.buttons
import
btn_view
,
btn_edit
,
btn_delete
from
pyramid.view
import
view_config
from
pyramid.view
import
view_config
from
sqlalchemy.orm
import
aliased
from
.
import
BaseView
,
get_urls
from
.
import
BaseView
_logging
=
logging
.
getLogger
(
__name__
)
from
opensipkd.models
import
(
DBSession
,
Route
,
)
@colander.deferred
def
route_widget
(
node
,
kw
):
values
=
kw
.
get
(
'route_list'
,
[])
return
widget
.
AutocompleteInputWidget
(
values
=
values
,
placeholder
=
"Pilih Induk"
)
def
route_widget_form
():
return
widget
.
AutocompleteInputWidget
(
size
=
60
,
min_length
=
3
,
requirements
=
((
"typeahead"
,
None
),
(
"deform"
,
None
),
{
"js"
:
"opensipkd.base:static/js/form/departemen_form.js"
}),
)
class
EditSchema
(
colander
.
Schema
):
class
EditSchema
(
colander
.
Schema
):
...
@@ -14,19 +32,84 @@ class EditSchema(colander.Schema):
...
@@ -14,19 +32,84 @@ class EditSchema(colander.Schema):
colander
.
String
(),
title
=
'Path'
)
colander
.
String
(),
title
=
'Path'
)
nama
=
colander
.
SchemaNode
(
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
'Nama'
)
colander
.
String
(),
title
=
'Nama'
)
module
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
description
=
"Nama Aplikasi Untuk Filtering"
)
is_menu
=
colander
.
SchemaNode
(
colander
.
Integer
(),
missing
=
colander
.
drop
,
widget
=
widget
.
CheckboxWidget
(
false_val
=
"0"
,
true_val
=
"1"
),
label
=
"Checklist jika path merupakan Menu"
)
parent_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
# widget=widget.HiddenWidget,
missing
=
colander
.
drop
,
oid
=
"parent_id"
)
parent_nm
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
route_widget
,
missing
=
colander
.
drop
,
oid
=
"parent_nm"
)
order_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
missing
=
colander
.
drop
,
description
=
"Pengurutan Menu"
)
permission
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
description
=
"Nama permission untuk menentukan hak akses"
)
class_view
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
description
=
"Nama file tanpa extension yang berisi class Views"
)
def_func
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
description
=
"Nama fungsi dalam class"
)
template
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
default
=
"form.pt"
,
descripton
=
"Nama File template atau 'json' atau renderer"
)
icon
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
)
type
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
CheckboxWidget
(
false_val
=
"0"
,
true_val
=
"1"
),
label
=
"Checklist jika type url adalah json"
)
status
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
CheckboxWidget
(
false_val
=
"0"
,
true_val
=
"1"
))
alias
=
aliased
(
Route
)
class
ListSchema
(
colander
.
Schema
):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
HiddenWidget
(),
visible
=
False
)
colander
.
Integer
(),
widget
=
widget
.
HiddenWidget
(),
visible
=
False
)
kode
=
colander
.
SchemaNode
(
kode
=
colander
.
SchemaNode
(
colander
.
String
())
colander
.
String
())
parent
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
alias
.
kode
)
nama
=
colander
.
SchemaNode
(
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
'Nama'
)
colander
.
String
(),
title
=
'Nama'
)
path
=
colander
.
SchemaNode
(
path
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
'Path'
)
colander
.
String
(),
title
=
'Path'
)
type
=
colander
.
SchemaNode
(
type
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
"50pt"
)
colander
.
String
(),
width
=
"50pt"
)
status
=
colander
.
SchemaNode
(
colander
.
Boolean
(),
widget
=
widget
.
CheckboxWidget
(
false_val
=
"0"
,
true_val
=
"1"
))
class
Views
(
BaseView
):
class
Views
(
BaseView
):
...
@@ -35,17 +118,35 @@ class Views(BaseView):
...
@@ -35,17 +118,35 @@ class Views(BaseView):
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'routes'
self
.
list_url
=
'routes'
self
.
list_route
=
'routes'
self
.
list_route
=
'routes'
self
.
list_buttons
=
(
btn_view
,
btn_edit
,
btn_delete
)
self
.
list_buttons
=
(
btn_view
,
btn_edit
,
btn_delete
)
# self.add_schema = AddSchema
# self.add_schema = AddSchema
self
.
edit_schema
=
EditSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Route
self
.
table
=
Route
self
.
list_schema
=
ListSchema
self
.
list_schema
=
ListSchema
self
.
form_scripts
=
"""
$('#parent_nm').bind('typeahead:selected', function (obj, datum, name) {
$('#parent_id').val(datum.id);
$('#parent_kd').val(datum.kode);
console.log(datum.kode);
});
$('#parent_nm').on('input',
function (e) {
let val = $('#parent_nm').val();
if (val === null || val === "") {
$('#parent_id').val("");
$('#parent_kd').val("");
}
});
"""
@view_config
(
@view_config
(
route_name
=
'routes'
,
renderer
=
'templates/table.pt'
,
route_name
=
'routes'
,
renderer
=
'templates/table.pt'
,
permission
=
'edit-title'
)
permission
=
'edit-title'
)
def
view_list
(
self
):
def
view_list
(
self
):
return
super
()
.
view_list
()
kwargs
=
{
"allow_view"
:
False
,
"allow_delete"
:
False
}
return
super
()
.
view_list
(
**
kwargs
)
def
form_validator
(
self
,
form
,
values
):
def
form_validator
(
self
,
form
,
values
):
def
err_nama
():
def
err_nama
():
...
@@ -89,7 +190,7 @@ class Views(BaseView):
...
@@ -89,7 +190,7 @@ class Views(BaseView):
@view_config
(
@view_config
(
route_name
=
'routes-act'
,
renderer
=
'json'
,
permission
=
'edit-title'
)
route_name
=
'routes-act'
,
renderer
=
'json'
,
permission
=
'edit-title'
)
def
routes
_act
(
self
):
def
view
_act
(
self
):
return
super
()
.
view_act
()
return
super
()
.
view_act
()
@view_config
(
@view_config
(
...
@@ -97,3 +198,33 @@ class Views(BaseView):
...
@@ -97,3 +198,33 @@ class Views(BaseView):
permission
=
'edit-title'
)
permission
=
'edit-title'
)
def
view_edit
(
self
):
def
view_edit
(
self
):
return
super
()
.
view_edit
()
return
super
()
.
view_edit
()
def
next_act
(
self
,
**
kwargs
):
row
=
kwargs
.
get
(
"row"
)
params
=
self
.
req
.
params
url_dict
=
self
.
req
.
matchdict
if
url_dict
[
'act'
]
==
'hon'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
q
=
Route
.
query
()
.
\
filter
(
Route
.
status
==
1
,
Route
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
\
.
order_by
(
Route
.
nama
)
r
=
[]
for
k
in
q
.
all
():
d
=
dict
(
id
=
k
.
id
,
value
=
k
.
nama
,
kode
=
k
.
kode
,
nama
=
k
.
nama
)
r
.
append
(
d
)
return
r
def
get_bindings
(
self
,
row
=
None
):
return
{
"route_list"
:
get_urls
(
f
"{self.req.route_url('routes')}/hon/act"
)}
def
get_values
(
self
,
row
,
istime
=
False
,
null
=
False
):
values
=
super
()
.
get_values
(
row
,
istime
,
null
)
if
row
.
parent_id
:
route
=
Route
.
query_id
(
row
.
parent_id
)
.
first
()
values
[
"parent_nm"
]
=
route
and
route
.
nama
or
""
_logging
.
debug
(
values
)
return
values
def
list_join
(
self
,
query
,
**
kwargs
):
return
query
.
outerjoin
(
alias
,
Route
.
parent_id
==
alias
.
id
)
\ No newline at end of file
\ No newline at end of file
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