Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
coba
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 12632eff
authored
Feb 24, 2025
by
aa.gusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Upload
1 parent
b67e1bb9
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
201 additions
and
133 deletions
opensipkd/coba/__init__.py
opensipkd/coba/scripts/initializedb.py
opensipkd/coba/views/__init__.py
opensipkd/coba/views/templates/base.pt
opensipkd/coba/views/view_form.py
opensipkd/coba/views/view_upload.py
pyproject.toml
opensipkd/coba/__init__.py
View file @
12632ef
import
logging
from
opensipkd.base
import
get_params
from
opensipkd.base
import
titles
try
:
COBA_UPLOAD
=
get_params
(
'coba_upload'
,
'/tmp/coba/upload'
)
except
:
COBA_UPLOAD
=
'/tmp/coba/upload'
from
opensipkd.base
import
titles
,
_add_view_config
from
pyramid.events
import
subscriber
,
BeforeRender
_logging
=
logging
.
getLogger
(
__name__
)
# kode,path,module,class_view,def_func,order_id,permission,parent_id/routes.kode,nama,status,type,app_id,is_menu,template
routes
=
[
(
"coba-home"
,
"/coba/home"
,
"Home Coba"
),
(
"coba-form"
,
"/coba/form"
,
"Daftar"
),
(
"coba-form-add"
,
"/coba/form/add"
,
"Tambah"
),
(
"coba-form-edit"
,
"/coba/form/{id}/edit"
,
"Koreksi"
),
(
"coba-form-view"
,
"/coba/form/{id}/view"
,
"Lihat"
),
(
"coba-form-delete"
,
"/coba/form/{id}/delete"
,
"Hapus"
),
(
"coba-form-act"
,
"/coba/form/{act}/act"
,
"Koreksi"
),
(
"coba-upload"
,
"/coba/upload"
,
"Daftar"
),
(
"coba-upload-add"
,
"/coba/upload/add"
,
"Tambah"
),
(
"coba-upload-edit"
,
"/coba/upload/{id}/edit"
,
"Koreksi"
),
(
"coba-upload-view"
,
"/coba/upload/{id}/view"
,
"Lihat"
),
(
"coba-upload-delete"
,
"/coba/upload/{id}/delete"
,
"Hapus"
),
(
"coba-upload-act"
,
"/coba/upload/{act}/act"
,
"Koreksi"
),
#kode, path, module, class_view, def_func, order_id, permission,parent_id/routes.kode,nama,status,type,app_id,is_menu,template
{
"kode"
:
"coba"
,
"path"
:
"/coba"
,
"def_func"
:
"home"
,
"nama"
:
"Home"
,
"module"
:
"coba"
,
"class_view"
:
"__init__"
,
"type"
:
0
,
"is_menu"
:
1
,
"template"
:
"home.pt"
,
"route_names"
:[],
"children"
:
False
,
"permission"
:
None
,
"icon"
:
""
},
{
"kode"
:
"coba-form"
,
"path"
:
"/coba/form"
,
"def_func"
:
"list"
,
"nama"
:
"Formulir"
,
"module"
:
"coba"
,
"class_view"
:
"view_form"
,
"type"
:
0
,
"is_menu"
:
1
,
"template"
:
"form.pt"
,
"route_names"
:
[],
"children"
:
False
,
"permission"
:
"view"
,
"icon"
:
""
},
{
"kode"
:
"coba-form-add"
,
"path"
:
"/coba/form/add"
,
"def_func"
:
"add"
,
"nama"
:
"Tambah"
,
"module"
:
"coba"
,
"class_view"
:
"view_form"
,
"type"
:
0
,
"is_menu"
:
0
,
"template"
:
"form.pt"
,
"route_names"
:
[],
"children"
:
False
,
"permission"
:
"view"
,
"icon"
:
""
},
{
"kode"
:
"coba-form-edit"
,
"path"
:
"/coba/form/{id}/edit"
,
"def_func"
:
"edit"
,
"nama"
:
"Edit"
,
"module"
:
"coba"
,
"class_view"
:
"view_form"
,
"type"
:
0
,
"is_menu"
:
0
,
"template"
:
"form.pt"
,
"route_names"
:
[],
"children"
:
False
,
"permission"
:
"view"
,
"icon"
:
""
},
{
"kode"
:
"coba-form-view"
,
"path"
:
"/coba/form/{id}/view"
,
"def_func"
:
"view"
,
"nama"
:
"Lihat"
,
"module"
:
"coba"
,
"class_view"
:
"view_form"
,
"type"
:
0
,
"is_menu"
:
0
,
"template"
:
"form.pt"
,
"children"
:
False
,
"permission"
:
"view"
,
"icon"
:
""
},
{
"kode"
:
"coba-form-delete"
,
"path"
:
"/coba/form/{id}/delete"
,
"def_func"
:
"view"
,
"nama"
:
"Hapus"
,
"module"
:
"coba"
,
"class_view"
:
"view_form"
,
"type"
:
0
,
"is_menu"
:
0
,
"template"
:
"form.pt"
,
"route_names"
:
[],
"children"
:
False
,
"permission"
:
"view"
,
"icon"
:
""
},
{
"kode"
:
"coba-form-act"
,
"path"
:
"/coba/form/{act}/act"
,
"def_func"
:
"act"
,
"nama"
:
"Action"
,
"module"
:
"coba"
,
"class_view"
:
"view_form"
,
"type"
:
0
,
"is_menu"
:
0
,
"template"
:
"json"
,
"route_names"
:
[],
"children"
:
False
,
"permission"
:
""
,
"icon"
:
""
},
{
"kode"
:
"coba-upload"
,
"path"
:
"/coba/upload"
,
"def_func"
:
"list"
,
"nama"
:
"Upload"
,
"module"
:
"coba"
,
"class_view"
:
"view_upload"
,
"type"
:
0
,
"is_menu"
:
1
,
"template"
:
"form.pt"
,
"route_names"
:
[],
"children"
:
False
,
"permission"
:
"view"
,
"icon"
:
""
},
{
"kode"
:
"coba-upload-add"
,
"path"
:
"/coba/upload/add"
,
"def_func"
:
"add"
,
"nama"
:
"Tambah"
,
"module"
:
"coba"
,
"class_view"
:
"view_upload"
,
"type"
:
0
,
"is_menu"
:
0
,
"template"
:
"form.pt"
,
"route_names"
:
[],
"children"
:
False
,
"permission"
:
""
,
"icon"
:
""
},
{
"kode"
:
"coba-upload-edit"
,
"path"
:
"/coba/upload/{id}/edit"
,
"def_func"
:
"edit"
,
"nama"
:
"Edit"
,
"module"
:
"coba"
,
"class_view"
:
"view_upload"
,
"type"
:
0
,
"is_menu"
:
0
,
"template"
:
"form.pt"
,
"route_names"
:[],
"children"
:
False
,
"permission"
:
""
,
"icon"
:
""
},
{
"kode"
:
"coba-upload-view"
,
"path"
:
"/coba/upload/{id}/view"
,
"def_func"
:
"view"
,
"nama"
:
"Lihat"
,
"module"
:
"coba"
,
"class_view"
:
"view_upload"
,
"type"
:
0
,
"is_menu"
:
0
,
"template"
:
"form.pt"
,
"route_names"
:
[],
"children"
:
False
,
"permission"
:
""
,
"icon"
:
""
},
{
"kode"
:
"coba-upload-delete"
,
"path"
:
"/coba/upload/{id}/delete"
,
"def_func"
:
"view"
,
"nama"
:
"Hapus"
,
"module"
:
"coba"
,
"class_view"
:
"view_upload"
,
"type"
:
0
,
"is_menu"
:
0
,
"template"
:
"form.pt"
,
"route_names"
:
[],
"children"
:
False
,
"permission"
:
""
,
"icon"
:
""
},
{
"kode"
:
"coba-upload-act"
,
"path"
:
"/coba/upload/{act}/act"
,
"def_func"
:
"act"
,
"nama"
:
"Action"
,
"module"
:
"coba"
,
"class_view"
:
"view_upload"
,
"type"
:
0
,
"is_menu"
:
0
,
"template"
:
"json"
,
"route_names"
:
[],
"children"
:
False
,
"permission"
:
""
,
"icon"
:
""
},
]
# def init_db(config):
# settings = get_settings()
# url = 'bphtb.url' in settings and settings['bphtb.url'] and 'bphtb.' or 'sqlalchemy.'
# pool_size = 'pool_size' in settings and int(settings['pool_size']) or 5
# max_overflow = 'max_overflow' in settings and int(settings['max_overflow']) or 10
# params = dict(pool_size=pool_size, max_overflow=max_overflow)
# engine = engine_from_config(settings, url, **params)
# BphtbDBSession.configure(bind=engine)
# BphtbBase.metadata.bind = engine
class
CobaModules
():
def
__init__
(
self
):
self
.
menus
=
[]
self
.
uploads
=
None
def
set_routes
(
self
,
config
):
self
.
uploads
=
get_params
(
'coba_upload'
,
'/tmp/coba/upload'
)
def
includeme
(
config
):
config
.
add_static_view
(
'/coba/uploads'
,
self
.
uploads
,
cache_max_age
=
0
)
for
route
in
routes
:
config
.
add_route
(
route
[
0
],
route
[
1
])
titles
[
route
[
0
]]
=
route
[
2
]
if
route
.
get
(
"is_menu"
,
None
):
self
.
menus
.
append
(
route
)
_add_view_config
(
config
,
"opensipkd.coba.views"
,
route
)
_logging
.
debug
(
"Menu Coba"
)
_logging
.
debug
(
self
.
menus
)
# config.add_route(route["kode"], route["path"])
config
.
scan
(
'.'
)
# titles[route["kode"]] = route["path"]
def
get_menus
(
self
):
return
self
.
menus
config
.
add_static_view
(
'coba/static'
,
'opensipkd.coba:static'
,
cache_max_age
=
3600
)
config
.
add_static_view
(
'coba/upload'
,
COBA_UPLOAD
,
cache_max_age
=
3600
)
# config.add_static_view('static_coba',
# get_params('static_coba', '/tmp/static_coba'),
# cache_max_age=0)
MODULE_CLASS
=
CobaModules
()
def
includeme
(
config
):
# for route in routes:
# config.add_route(route[0], route[1])
# titles[route[0]] = route[2]
MODULE_CLASS
.
set_routes
(
config
)
config
.
scan
(
'.'
)
@subscriber
(
BeforeRender
)
def
add_global
(
event
):
event
[
'get_coba_menus'
]
=
MODULE_CLASS
.
get_menus
opensipkd/coba/scripts/initializedb.py
View file @
12632ef
...
...
@@ -41,7 +41,7 @@ def main(argv=sys.argv):
engine
=
engine_from_config
(
settings
,
'sqlalchemy.'
)
DBSession
.
configure
(
bind
=
engine
)
Base
.
metadata
.
bind
=
engine
Base
.
metadata
.
create_all
()
Base
.
metadata
.
create_all
(
bind
=
engine
)
# ModuleBase.metadata.create_all()
print
(
'>>Append Table'
)
...
...
opensipkd/coba/views/__init__.py
View file @
12632ef
...
...
@@ -19,12 +19,12 @@ _logging = logging.getLogger(__name__)
class
BaseView
(
MasterBaseView
):
pass
class
HomeView
(
BaseView
):
class
Views
(
BaseView
):
def
__init__
(
self
,
request
):
super
(
HomeView
,
self
)
.
__init__
(
request
)
super
()
.
__init__
(
request
)
@view_config
(
route_name
=
'coba-home'
,
renderer
=
'templates/home.pt'
,
permission
=
'view'
)
#
@view_config(route_name='coba-home', renderer='templates/home.pt',
#
permission='view')
def
view_home
(
self
):
tpl
=
self
.
get_params
(
"coba-home-tpl"
)
if
tpl
:
...
...
opensipkd/coba/views/templates/base.pt
View file @
12632ef
<html
metal:use-macro=
"load: opensipkd.base:
/
views/templates/base3.1.pt"
metal:use-macro=
"load: opensipkd.base:views/templates/base3.1.pt"
tal:omit-tag=
""
tal:define=
"
route_name request.matched_route.name;
...
...
@@ -18,31 +18,42 @@
<span
metal:fill-slot=
"navs"
tal:omit-tag=
""
>
<ul
class=
"margin-top-0 padding-top-0"
>
<li
tal:attributes=
"class route_name == 'coba'"
>
<a
href=
"${home}/coba"
>
<i
class=
"fa fa-lg fa-fw fa-home"
></i>
<span
class=
"menu-item-parent"
>
Beranda
</span>
<li
tal:repeat=
"menu get_coba_menus()"
tal:attributes=
"class route_name in menu['route_names'] and 'active'"
>
<a
tal:condition=
"python:not menu['children'] and (has_permission(request, menu['permission']) or not menu['permission'] )"
href=
"${home}${menu['path']}"
>
<i
tal:condition=
"menu['icon']"
class=
"fa fa-lg fa-fw ${menu['icon']}"
></i>
<span>
${menu['nama']}
</span>
</a>
</li>
<!-- Master -->
<!-- <li>
<a href="#">
<i class="fa fa-lg fa-fw fa-book"></i>
<span class="menu-item-parent">Master</span>
<a
tal:condition=
"python:menu['children'] and has_permission(request, menu['permission'])"
href=
"#"
>
<i
tal:condition=
"menu['icon']"
class=
"fa fa-lg fa-fw ${menu['icon']}"
></i>
<span
class=
"menu-item-parent"
>
${menu['nama']}
</span>
</a>
<ul> -->
<li
tal:attributes=
"class route_name in coba_form and 'active'"
>
<a
href=
"${home}/coba/form"
>
Form
</a>
</li>
<li
tal:attributes=
"class route_name in coba_upload and 'active'"
>
<a
href=
"${home}/coba/upload"
>
Upload
</a>
<ul
tal:condition=
"python:menu['children'] and has_permission(request, menu['permission'])"
>
<li
tal:repeat=
"submenu menu['children']"
tal:attributes=
"class route_name in submenu['route_names'] and 'active'"
>
<a
tal:condition=
"python:not submenu['children'] and has_permission(request, submenu['permission'])"
href=
"${home}${submenu['path']}"
>
<i
tal:condition=
"submenu['icon']"
class=
"fa fa-lg fa-fw ${submenu['icon']}"
></i>
<span>
${submenu['nama']}
</span>
</a>
<a
tal:condition=
"submenu['children']"
href=
"#"
>
<i
tal:condition=
"submenu['icon']"
class=
"fa fa-lg fa-fw ${submenu['icon']}"
></i>
<span
class=
"menu-item-parent"
>
${submenu['nama']}
</span>
</a>
<ul
tal:condition=
"submenu['children']"
>
<li
tal:repeat=
"submenu2 submenu['children']"
tal:attributes=
"class route_name in submenu2['route_names'] and 'active'"
>
<a
href=
"${home}${submenu2['path']}"
>
${submenu2['nama']}
</a>
</li>
<li
tal:attributes=
"class route_name in coba_view and 'active'"
>
<a
href=
"${home}/coba/view"
>
Upload
&
View
</a>
</ul>
</li>
<!-- </ul> --
>
</ul
>
<!-- </li> -->
</li>
</ul>
</span>
</html>
\ No newline at end of file
opensipkd/coba/views/view_form.py
View file @
12632ef
import
colander
from
deform
import
widget
,
FileData
from
pyramid.view
import
view_config
from
opensipkd.coba
import
MODULE_CLASS
from
opensipkd.coba.models
import
Coba
from
.
import
BaseView
from
opensipkd.base.views
import
widget_os
from
opensipkd.tools
import
mem_tmp_store
,
Upload
,
ymd
,
hms
,
ymdhms
from
opensipkd.coba
import
COBA_UPLOAD
from
datetime
import
datetime
items
=
((
"1"
,
"Satu"
),(
'2'
,
'Dua'
),(
'3'
,
'Tiga'
),(
'4'
,
'Empat'
),(
'5'
,
'Lima'
),
(
"6"
,
"Enam"
),(
'7'
,
'Tujuh'
),(
'8'
,
'Delapan'
),(
'9'
,
'Sembilan'
),
...
...
@@ -170,15 +170,15 @@ class Views(BaseView):
# Save File Upload to Folder
if
"file_upload"
in
value
:
upload
=
Upload
(
COBA_UPLOAD
)
upload
=
Upload
(
MODULE_CLASS
.
uploads
)
value
[
"file_upload"
]
=
upload
.
save_fp
(
value
[
"file_upload"
])
if
"img_upload"
in
value
:
upload
=
Upload
(
COBA_UPLOAD
)
upload
=
Upload
(
MODULE_CLASS
.
uploads
)
value
[
"img_upload"
]
=
upload
.
save_fp
(
value
[
"img_upload"
])
def
get_values
(
self
,
row
,
istime
=
False
):
d
=
super
()
.
get_values
(
row
,
istime
)
folder
=
COBA_UPLOAD
+
'/'
folder
=
MODULE_CLASS
.
uploads
+
'/'
url
=
get_urls
(
self
.
req
.
static_url
(
folder
))
if
"file_upload"
in
d
:
filename
=
row
.
file_upload
...
...
@@ -204,35 +204,35 @@ class Views(BaseView):
d
[
"check_box"
]
=
row
.
check_box
and
"1"
or
"0"
return
d
@view_config
(
route_name
=
'coba-form'
,
renderer
=
'templates/list.pt'
,
permission
=
'view'
)
def
view_list
(
self
):
return
super
(
Views
,
self
)
.
view_list
()
@view_config
(
route_name
=
'coba-form-act'
,
renderer
=
'json'
,
permission
=
'view'
)
def
view_act
(
self
):
return
super
()
.
view_act
()
@view_config
(
route_name
=
'coba-form-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'bphtb-admin'
)
def
view_add
(
self
):
return
super
()
.
view_add
()
@view_config
(
route_name
=
'coba-form-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_edit
(
self
):
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'coba-form-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_delete
(
self
):
return
super
()
.
view_delete
()
@view_config
(
route_name
=
'coba-form-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_view
(
self
):
return
super
()
.
view_view
()
#
@view_config(route_name='coba-form', renderer='templates/list.pt',
#
permission='view')
#
def view_list(self):
#
return super(Views, self).view_list()
#
@view_config(route_name='coba-form-act', renderer='json',
#
permission='view')
#
def view_act(self):
#
return super().view_act()
#
@view_config(route_name='coba-form-add', renderer='templates/form.pt',
#
permission='bphtb-admin')
#
def view_add(self):
#
return super().view_add()
#
@view_config(route_name='coba-form-edit', renderer='templates/form.pt',
#
permission='view')
#
def view_edit(self):
#
return super().view_edit()
#
@view_config(route_name='coba-form-delete', renderer='templates/form.pt',
#
permission='view')
#
def view_delete(self):
#
return super().view_delete()
#
@view_config(route_name='coba-form-view', renderer='templates/form.pt',
#
permission='view')
#
def view_view(self):
#
return super().view_view()
def
_coba_list
():
...
...
opensipkd/coba/views/view_upload.py
View file @
12632ef
...
...
@@ -2,11 +2,12 @@ import os
import
colander
from
deform
import
widget
,
FileData
from
pyramid.view
import
view_config
from
opensipkd.coba
import
MODULE_CLASS
from
opensipkd.tools
import
mem_tmp_store
,
Upload
from
opensipkd.base
import
get_urls
from
opensipkd.coba.models
import
Coba
from
.
import
BaseView
from
opensipkd.coba
import
COBA_UPLOAD
#
from opensipkd.coba import COBA_UPLOAD
# from opensipkd.base.views import widget_os
# from opensipkd.tools.report import csv_response
# from sqlalchemy import and_
...
...
@@ -62,19 +63,19 @@ class Views(BaseView):
def
form_validator
(
self
,
form
,
value
):
if
"file_1"
in
value
:
upload
=
Upload
(
COBA_UPLOAD
)
upload
=
Upload
(
MODULE_CLASS
.
uploads
)
value
[
"file_1"
]
=
upload
.
save_fp
(
value
[
"file_1"
])
if
"file_2"
in
value
:
upload
=
Upload
(
COBA_UPLOAD
)
upload
=
Upload
(
MODULE_CLASS
.
uploads
)
value
[
"file_2"
]
=
upload
.
save_fp
(
value
[
"file_2"
])
if
"file_3"
in
value
:
upload
=
Upload
(
COBA_UPLOAD
)
upload
=
Upload
(
MODULE_CLASS
.
uploads
)
value
[
"file_3"
]
=
upload
.
save_fp
(
value
[
"file_3"
])
def
get_values
(
self
,
row
,
istime
=
False
):
d
=
super
()
.
get_values
(
row
,
istime
=
False
)
folder
=
COBA_UPLOAD
+
'/'
url
=
get_urls
(
self
.
req
.
static_url
(
folder
)
)
folder
=
MODULE_CLASS
.
uploads
url
=
self
.
req
.
static_url
(
folder
)
if
"file_1"
in
d
:
filename
=
row
.
file_1
preview_url
=
"/"
.
join
([
url
,
filename
])
...
...
@@ -98,32 +99,32 @@ class Views(BaseView):
}
return
d
@view_config
(
route_name
=
'coba-upload'
,
renderer
=
'templates/list.pt'
,
permission
=
'view'
)
def
view_list
(
self
):
return
super
(
Views
,
self
)
.
view_list
()
@view_config
(
route_name
=
'coba-upload-act'
,
renderer
=
'json'
,
permission
=
'view'
)
def
view_act
(
self
):
return
super
()
.
view_act
()
@view_config
(
route_name
=
'coba-upload-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'bphtb-admin'
)
def
view_add
(
self
):
return
super
()
.
view_add
()
@view_config
(
route_name
=
'coba-upload-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_edit
(
self
):
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'coba-upload-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_delete
(
self
):
return
super
()
.
view_delete
()
@view_config
(
route_name
=
'coba-upload-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_view
(
self
):
return
super
()
.
view_view
()
#
@view_config(route_name='coba-upload', renderer='templates/list.pt',
#
permission='view')
#
def view_list(self):
#
return super(Views, self).view_list()
#
@view_config(route_name='coba-upload-act', renderer='json',
#
permission='view')
#
def view_act(self):
#
return super().view_act()
#
@view_config(route_name='coba-upload-add', renderer='templates/form.pt',
#
permission='bphtb-admin')
#
def view_add(self):
#
return super().view_add()
#
@view_config(route_name='coba-upload-edit', renderer='templates/form.pt',
#
permission='view')
#
def view_edit(self):
#
return super().view_edit()
#
@view_config(route_name='coba-upload-delete', renderer='templates/form.pt',
#
permission='view')
#
def view_delete(self):
#
return super().view_delete()
#
@view_config(route_name='coba-upload-view', renderer='templates/form.pt',
#
permission='view')
#
def view_view(self):
#
return super().view_view()
pyproject.toml
View file @
12632ef
...
...
@@ -18,7 +18,7 @@ strict = true
[project]
name
=
'opensipkd-
base
'
name
=
'opensipkd-
coba
'
version
=
'
4.2
'
dependencies
=
[
'opensipkd-base'
,
...
...
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