Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit b6326cf6
authored
Mar 17, 2025
by
aa.gustiana@gmail.com
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Perbaikan route from csv
1 parent
c73f8e66
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
117 additions
and
92 deletions
opensipkd/base/__init__.py
opensipkd/base/scripts/data/routes.csv
opensipkd/base/views/departemen.py
opensipkd/base/__init__.py
View file @
b6326cf
...
@@ -439,6 +439,8 @@ def get_home(request):
...
@@ -439,6 +439,8 @@ def get_home(request):
def
_set_routes1
(
config
,
app_id
):
def
_set_routes1
(
config
,
app_id
):
"""Compatibility
"""
q
=
DBSession
.
query
(
Route
)
.
filter
(
Route
.
path
!=
None
,
q
=
DBSession
.
query
(
Route
)
.
filter
(
Route
.
path
!=
None
,
Route
.
module
==
None
,
Route
.
status
==
1
)
Route
.
module
==
None
,
Route
.
status
==
1
)
if
not
app_id
:
if
not
app_id
:
...
@@ -457,6 +459,8 @@ def _set_routes1(config, app_id):
...
@@ -457,6 +459,8 @@ def _set_routes1(config, app_id):
def
_set_routes2
(
config
,
module
=
"base"
):
def
_set_routes2
(
config
,
module
=
"base"
):
"""Compatibility
"""
q
=
DBSession
.
query
(
Route
)
.
filter
(
q
=
DBSession
.
query
(
Route
)
.
filter
(
Route
.
module
==
module
,
Route
.
status
==
1
)
Route
.
module
==
module
,
Route
.
status
==
1
)
for
route
in
q
:
for
route
in
q
:
...
@@ -471,6 +475,8 @@ def _set_routes2(config, module="base"):
...
@@ -471,6 +475,8 @@ def _set_routes2(config, module="base"):
def
set_routes
(
config
,
app_id
=
None
):
def
set_routes
(
config
,
app_id
=
None
):
"""Compatibility
"""
if
app_id
and
type
(
app_id
)
==
str
:
if
app_id
and
type
(
app_id
)
==
str
:
return
_set_routes2
(
config
,
app_id
)
return
_set_routes2
(
config
,
app_id
)
else
:
else
:
...
@@ -478,40 +484,51 @@ def set_routes(config, app_id=None):
...
@@ -478,40 +484,51 @@ def set_routes(config, app_id=None):
def
_add_route
(
config
,
route
):
def
_add_route
(
config
,
route
):
if
int
(
route
.
get
(
"typ
e
"
,
0
))
==
0
:
if
int
(
route
.
get
(
"typ"
,
0
))
==
0
:
config
.
add_route
(
route
.
get
(
"kode"
),
route
.
get
(
"path"
))
config
.
add_route
(
route
.
get
(
"kode"
),
route
.
get
(
"path"
))
elif
int
(
route
.
get
(
"typ
e
"
))
==
1
:
elif
int
(
route
.
get
(
"typ"
))
==
1
:
config
.
add_jsonrpc_endpoint
(
route
.
get
(
"kode"
),
route
.
get
(
"path"
),
config
.
add_jsonrpc_endpoint
(
route
.
get
(
"kode"
),
route
.
get
(
"path"
),
default_renderer
=
"json_rpc"
)
default_renderer
=
"json_rpc"
)
if
route
.
get
(
"nama"
):
if
route
.
get
(
"nama"
):
titles
[
route
.
get
(
"kode"
)]
=
route
.
get
(
"nama"
)
titles
[
route
.
get
(
"kode"
)]
=
route
.
get
(
"nama"
)
def
_add_view_config
(
config
,
view_name
,
route
):
def
_add_view_config
(
config
,
paket
,
route
):
_add_route
(
config
,
route
)
_add_route
(
config
,
route
)
if
not
route
.
get
(
"def_func"
):
if
not
route
.
get
(
"func_name"
):
return
func_name
=
""
.
join
(
route
.
get
(
"kode"
)
.
split
(
'-'
)[
-
1
:])
route
[
"func_name"
]
=
"_"
.
join
([
"view"
,
func_name
])
class_view
=
route
.
get
(
file_name
=
f
"{paket}.{route.get("
file_name
")}"
"class_view"
)
and
f
".{route.get('class_view')}"
or
""
_logging
.
debug
(
f
"File Name: {file_name}"
)
class_name
=
f
"{view_name}{class_view}"
attr
=
f
"{route.get('func_name')}"
attr
=
f
"view_{route.get('def_func')}"
try
:
try
:
_views
=
importlib
.
import_module
(
class_name
)
_views
=
importlib
.
import_module
(
file_name
)
views
=
_views
class_name
=
route
.
get
(
"class_name"
,
None
)
if
route
.
get
(
"template"
)
==
"json"
:
if
not
class_name
:
renderers
=
route
.
get
(
"template"
)
class_name
=
"Views"
else
:
renderers
=
"views/templates/"
+
route
.
get
(
"template"
)
views
=
getattr
(
_views
,
class_name
)
params
=
dict
(
attr
=
f
"{attr}"
,
route_name
=
route
.
get
(
"kode"
),
template
=
route
.
get
(
"template"
,
"form.pt"
)
renderer
=
renderers
)
if
not
template
:
template
=
"form.pt"
if
template
!=
"json"
:
template
=
"views/templates/"
+
template
params
=
dict
(
attr
=
f
"{attr}"
,
route_name
=
route
.
get
(
"kode"
),
renderer
=
template
)
if
route
.
get
(
"permission"
):
if
route
.
get
(
"permission"
):
params
[
"permission"
]
=
route
.
get
(
"permission"
)
params
[
"permission"
]
=
route
.
get
(
"permission"
)
config
.
add_view
(
views
.
Views
,
**
params
)
config
.
add_view
(
views
,
**
params
)
except
Exception
as
e
:
except
Exception
as
e
:
raise
e
_logging
.
error
(
f
"Add View Config :"
)
_logging
.
error
(
str
(
e
))
_logging
.
error
(
str
(
e
))
_logging
.
error
(
route
)
_logging
.
error
(
route
)
# def add_view_config(config, module, view_name):
# def add_view_config(config, module, view_name):
# """
# """
# Digunakan untuk mengenerate view_config berdasarkan tabel Routes
# Digunakan untuk mengenerate view_config berdasarkan tabel Routes
...
@@ -666,12 +683,7 @@ def get_config(settings):
...
@@ -666,12 +683,7 @@ def get_config(settings):
config
.
add_renderer
(
'json'
,
json_renderer
())
config
.
add_renderer
(
'json'
,
json_renderer
())
config
.
add_renderer
(
'json_rpc'
,
json_rpc
())
config
.
add_renderer
(
'json_rpc'
,
json_rpc
())
config
.
registry
[
'mailer'
]
=
mailer_factory_from_settings
(
settings
)
config
.
registry
[
'mailer'
]
=
mailer_factory_from_settings
(
settings
)
# set_routes(config)
BASE_CLASS
.
route_from_csv
(
config
)
BASE_CLASS
.
route_from_list
(
config
)
# routes_by_array(config)
config
.
scan
()
_logging
.
debug
(
config
)
return
config
return
config
...
@@ -709,7 +721,12 @@ def main(global_config, **settings):
...
@@ -709,7 +721,12 @@ def main(global_config, **settings):
# if cfg:
# if cfg:
# config = cfg
# config = cfg
return
get_config
(
settings
=
settings
)
.
make_wsgi_app
()
config
=
get_config
(
settings
=
settings
)
BASE_CLASS
.
route_from_csv
(
config
)
BASE_CLASS
.
route_from_list
(
config
)
config
.
scan
()
_logging
.
debug
(
config
)
return
config
.
make_wsgi_app
()
def
get_route_file
(
filename
):
def
get_route_file
(
filename
):
...
@@ -726,30 +743,6 @@ class BaseApp():
...
@@ -726,30 +743,6 @@ class BaseApp():
def
__init__
(
self
):
def
__init__
(
self
):
self
.
menus
=
[]
self
.
menus
=
[]
def
route_from_csv
(
self
,
config
,
get_file
=
get_route_file
,
paket
=
"opensipkd.base.views"
):
with
get_file
(
"routes.csv"
)
as
f
:
rows
=
csv
.
DictReader
(
f
)
new_routes
=
[]
for
row
in
rows
:
if
row
.
get
(
"parent_id"
)
or
row
.
get
(
"parent_id/routes.kode"
):
new_routes
[
len
(
new_routes
)
-
1
][
"children"
]
.
append
(
row
)
else
:
row
[
"children"
]
=
[]
new_routes
.
append
(
row
)
self
.
add_menu
(
config
,
new_routes
,
paket
)
def
route_from_list
(
self
,
config
,
routs
=
routes
,
paket
=
"opensipkd.base.views"
):
new_routes
=
[]
for
route
in
routs
:
d
=
{
"kode"
:
route
[
0
],
"path"
:
route
[
1
],
"nama"
:
route
[
2
],
"type"
:
len
(
route
)
>
4
and
route
[
4
]
or
0
}
new_routes
.
append
(
d
)
self
.
add_menu
(
config
,
new_routes
,
paket
)
def
add_menu
(
self
,
config
,
route_menus
,
parent
=
None
,
paket
=
"opensipkd.base.views"
):
def
add_menu
(
self
,
config
,
route_menus
,
parent
=
None
,
paket
=
"opensipkd.base.views"
):
route_names
=
[]
route_names
=
[]
...
@@ -757,22 +750,22 @@ class BaseApp():
...
@@ -757,22 +750,22 @@ class BaseApp():
route
[
"route_names"
]
=
[
route
[
"kode"
]]
route
[
"route_names"
]
=
[
route
[
"kode"
]]
route
[
"permission"
]
=
route
.
get
(
"permission"
,
""
)
route
[
"permission"
]
=
route
.
get
(
"permission"
,
""
)
route
[
"icon"
]
=
route
.
get
(
"icon"
,
None
)
route
[
"icon"
]
=
route
.
get
(
"icon"
,
None
)
route_typ
e
=
route
.
get
(
"type
"
,
0
)
route_typ
=
route
.
get
(
"typ
"
,
0
)
if
route_typ
e
==
""
or
route_type
==
None
:
if
route_typ
==
""
or
route_typ
==
None
:
route_typ
e
=
0
route_typ
=
0
else
:
else
:
route_typ
e
=
int
(
route_type
)
route_typ
=
int
(
route_typ
)
route
[
"typ
e"
]
=
route_type
route
[
"typ
"
]
=
route_typ
route
[
"is_menu"
]
=
route
.
get
(
"is_menu"
,
0
)
route
[
"is_menu"
]
=
route
.
get
(
"is_menu"
,
0
)
url_path
=
route
.
get
(
"path"
,
None
)
url_path
=
route
.
get
(
"path"
,
None
)
if
not
url_path
:
if
not
url_path
:
url_path
=
"/"
+
route
[
"kode"
]
.
replace
(
"-"
,
"/"
)
url_path
=
"/"
+
route
[
"kode"
]
.
replace
(
"-"
,
"/"
)
route
[
"path"
]
=
url_path
route
[
"path"
]
=
url_path
children
=
route
.
get
(
"children"
,
[])
children
=
route
.
get
(
"children"
,
[])
route
[
"children"
]
=
[]
route
[
"children"
]
=
[]
if
route
.
get
(
"
class_view
"
):
if
route
.
get
(
"
file_name
"
):
_add_view_config
(
config
,
paket
,
route
)
_add_view_config
(
config
,
paket
,
route
)
elif
route
[
"path"
]
!=
"#"
:
elif
route
[
"path"
]
!=
"#"
:
_add_route
(
config
,
route
)
_add_route
(
config
,
route
)
...
@@ -789,6 +782,33 @@ class BaseApp():
...
@@ -789,6 +782,33 @@ class BaseApp():
route_names
.
append
(
route
[
"kode"
])
route_names
.
append
(
route
[
"kode"
])
return
route_names
return
route_names
def
route_from_csv
(
self
,
config
,
get_file
=
get_route_file
,
paket
=
"opensipkd.base.views"
):
with
get_file
(
"routes.csv"
)
as
f
:
rows
=
csv
.
DictReader
(
f
)
new_routes
=
[]
for
row
in
rows
:
row
[
"children"
]
=
[]
if
row
.
get
(
"parent_id"
)
or
row
.
get
(
"parent_id/routes.kode"
):
new_routes
[
len
(
new_routes
)
-
1
][
"children"
]
.
append
(
row
)
else
:
new_routes
.
append
(
row
)
self
.
add_menu
(
config
,
new_routes
,
None
,
paket
)
def
route_from_list
(
self
,
config
,
routs
=
routes
,
paket
=
"opensipkd.base.views"
):
new_routes
=
[]
for
route
in
routs
:
d
=
{
"kode"
:
route
[
0
],
"path"
:
route
[
1
],
"nama"
:
route
[
2
],
"typ"
:
len
(
route
)
>
4
and
route
[
4
]
or
0
}
new_routes
.
append
(
d
)
self
.
add_menu
(
config
,
new_routes
,
paket
)
def
get_menus
(
self
):
def
get_menus
(
self
):
return
self
.
menus
return
self
.
menus
...
...
opensipkd/base/scripts/data/routes.csv
View file @
b6326cf
This diff is collapsed.
Click to expand it.
opensipkd/base/views/departemen.py
View file @
b6326cf
from
datetime
import
datetime
from
datetime
import
datetime
from
email.policy
import
default
import
colander
import
colander
from
deform
import
(
widget
,
)
from
deform
import
(
widget
,
)
...
@@ -58,7 +59,7 @@ class ListSchema(colander.Schema):
...
@@ -58,7 +59,7 @@ class ListSchema(colander.Schema):
status
=
colander
.
SchemaNode
(
status
=
colander
.
SchemaNode
(
colander
.
Boolean
(),
colander
.
Boolean
(),
title
=
"Status"
,
width
=
'50pt'
,
title
=
"Status"
,
width
=
'50pt'
,
widget
=
widget
.
CheckboxWidget
())
widget
=
widget
.
CheckboxWidget
(
true_val
=
'1'
,
false_val
=
'0'
))
level_id
=
colander
.
SchemaNode
(
level_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
title
=
"Level"
,
title
=
"Level"
,
...
@@ -110,17 +111,20 @@ class AddSchema(colander.Schema):
...
@@ -110,17 +111,20 @@ class AddSchema(colander.Schema):
singkat
=
colander
.
SchemaNode
(
singkat
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
oid
=
"singkat"
)
oid
=
"singkat"
,
default
=
""
)
kategori
=
colander
.
SchemaNode
(
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
oid
=
"kategori"
)
oid
=
"kategori"
,
default
=
""
)
alamat
=
colander
.
SchemaNode
(
alamat
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
oid
=
"alamat"
)
oid
=
"alamat"
,
default
=
""
)
company_id
=
colander
.
SchemaNode
(
company_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
widget
=
company_widget
,
widget
=
company_widget
,
...
@@ -130,6 +134,7 @@ class AddSchema(colander.Schema):
...
@@ -130,6 +134,7 @@ class AddSchema(colander.Schema):
status
=
colander
.
SchemaNode
(
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
widget
=
widget
.
CheckboxWidget
(
true_val
=
'1'
,
false_val
=
'0'
),
widget
=
widget
.
CheckboxWidget
(
true_val
=
'1'
,
false_val
=
'0'
),
default
=
0
,
oid
=
"status"
)
oid
=
"status"
)
def
after_bind
(
self
,
schema
,
kwargs
):
def
after_bind
(
self
,
schema
,
kwargs
):
...
@@ -178,8 +183,8 @@ class Views(BaseView):
...
@@ -178,8 +183,8 @@ class Views(BaseView):
raise
exc
raise
exc
def
err_nama
():
def
err_nama
():
raise
colander
.
Invalid
(
form
,
raise
colander
.
Invalid
(
'Uraian
%
s sudah digunakan oleh kode
%
s'
%
(
form
,
'Uraian
%
s sudah digunakan oleh kode
%
s'
%
(
value
[
'nama'
],
found
.
kode
))
value
[
'nama'
],
found
.
kode
))
if
'id'
in
form
.
request
.
matchdict
:
if
'id'
in
form
.
request
.
matchdict
:
...
@@ -220,9 +225,9 @@ class Views(BaseView):
...
@@ -220,9 +225,9 @@ class Views(BaseView):
self
.
update_children
(
child
.
children
)
self
.
update_children
(
child
.
children
)
def
save_request
(
self
,
values
,
row
=
None
):
# save(self, row, values):
def
save_request
(
self
,
values
,
row
=
None
):
# save(self, row, values):
for
k
,
v
in
values
.
items
():
#
for k, v in values.items():
if
not
v
:
#
if not v:
setattr
(
row
,
k
,
None
)
#
setattr(row, k, None)
values
[
"level_id"
]
=
1
values
[
"level_id"
]
=
1
if
"parent_id"
in
values
and
values
[
"parent_id"
]:
if
"parent_id"
in
values
and
values
[
"parent_id"
]:
...
@@ -237,17 +242,17 @@ class Views(BaseView):
...
@@ -237,17 +242,17 @@ class Views(BaseView):
row
=
super
()
.
save_request
(
values
,
row
)
row
=
super
()
.
save_request
(
values
,
row
)
return
row
return
row
@view_config
(
route_name
=
'departemen-view'
,
#
@view_config(route_name='departemen-view',
renderer
=
'templates/form.pt'
,
#
renderer='templates/form.pt',
permission
=
'departemen'
)
#
permission='departemen')
def
view_view
(
self
):
#
def view_view(self):
return
super
()
.
view_view
()
#
return super().view_view()
@view_config
(
route_name
=
'departemen'
,
#
@view_config(route_name='departemen',
renderer
=
'templates/table.pt'
,
#
renderer='templates/table.pt',
permission
=
'departemen'
)
#
permission='departemen')
def
view_list
(
self
):
#
def view_list(self):
return
super
()
.
view_list
()
#
return super().view_list()
def
list_join
(
self
,
query
):
def
list_join
(
self
,
query
):
query
=
query
.
outerjoin
(
query
=
query
.
outerjoin
(
...
@@ -257,8 +262,8 @@ class Views(BaseView):
...
@@ -257,8 +262,8 @@ class Views(BaseView):
)
)
return
query
return
query
@view_config
(
route_name
=
'departemen-act'
,
renderer
=
'json'
,
#
@view_config(route_name='departemen-act', renderer='json',
permission
=
'view'
)
#
permission='view')
def
view_act
(
self
):
def
view_act
(
self
):
request
=
self
.
req
request
=
self
.
req
# ses = request.session
# ses = request.session
...
@@ -381,24 +386,24 @@ class Views(BaseView):
...
@@ -381,24 +386,24 @@ class Views(BaseView):
def
get_bindings
(
self
,
row
=
None
):
def
get_bindings
(
self
,
row
=
None
):
return
{
"company_list"
:
ResCompany
.
get_list
()}
return
{
"company_list"
:
ResCompany
.
get_list
()}
@view_config
(
route_name
=
'departemen-add'
,
renderer
=
'templates/form.pt'
,
#
@view_config(route_name='departemen-add', renderer='templates/form.pt',
permission
=
'departemen'
)
#
permission='departemen')
def
view_add
(
self
):
#
def view_add(self):
return
super
()
.
view_add
()
#
return super().view_add()
@view_config
(
route_name
=
'departemen-edit'
,
#
@view_config(route_name='departemen-edit',
renderer
=
'templates/form.pt'
,
permission
=
'departemen'
)
#
renderer='templates/form.pt', permission='departemen')
def
view_edit
(
self
):
#
def view_edit(self):
return
super
()
.
view_edit
()
#
return super().view_edit()
@view_config
(
route_name
=
'departemen-delete'
,
#
@view_config(route_name='departemen-delete',
renderer
=
'templates/form.pt'
,
permission
=
'departemen'
)
#
renderer='templates/form.pt', permission='departemen')
def
view_delete
(
self
):
#
def view_delete(self):
return
super
()
.
view_delete
()
#
return super().view_delete()
@view_config
(
route_name
=
'departemen-upload'
,
#
@view_config(route_name='departemen-upload',
renderer
=
'templates/form.pt'
,
#
renderer='templates/form.pt',
permission
=
'departemen'
)
#
permission='departemen')
def
view_upload
(
self
):
def
view_upload
(
self
):
return
super
()
.
view_upload
(
exts
=
(
'.csv'
,
'.tsv'
),
delimiter
=
"
\t
"
)
return
super
()
.
view_upload
(
exts
=
(
'.csv'
,
'.tsv'
),
delimiter
=
"
\t
"
)
...
...
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