Commit 12632eff by aa.gusti

Upload

1 parent b67e1bb9
import logging
from opensipkd.base import get_params from opensipkd.base import get_params
from opensipkd.base import titles from opensipkd.base import titles, _add_view_config
try: from pyramid.events import subscriber, BeforeRender
COBA_UPLOAD = get_params('coba_upload', '/tmp/coba/upload') _logging = logging.getLogger(__name__)
except: # kode,path,module,class_view,def_func,order_id,permission,parent_id/routes.kode,nama,status,type,app_id,is_menu,template
COBA_UPLOAD = '/tmp/coba/upload'
routes = [ routes = [
("coba-home", "/coba/home", "Home Coba"), #kode, path, module, class_view, def_func, order_id, permission,parent_id/routes.kode,nama,status,type,app_id,is_menu,template
("coba-form", "/coba/form", "Daftar"), {"kode": "coba", "path": "/coba",
("coba-form-add", "/coba/form/add", "Tambah"), "def_func": "home", "nama": "Home",
("coba-form-edit", "/coba/form/{id}/edit", "Koreksi"), "module": "coba", "class_view": "__init__",
("coba-form-view", "/coba/form/{id}/view", "Lihat"), "type": 0,"is_menu": 1, "template":"home.pt", "route_names":[], "children":False, "permission":None, "icon":""},
("coba-form-delete", "/coba/form/{id}/delete", "Hapus"),
("coba-form-act", "/coba/form/{act}/act", "Koreksi"), {"kode": "coba-form", "path": "/coba/form",
("coba-upload", "/coba/upload", "Daftar"), "def_func": "list", "nama": "Formulir",
("coba-upload-add", "/coba/upload/add", "Tambah"), "module": "coba", "class_view": "view_form",
("coba-upload-edit", "/coba/upload/{id}/edit", "Koreksi"), "type": 0, "is_menu": 1, "template": "form.pt", "route_names": [], "children": False, "permission": "view", "icon":""},
("coba-upload-view", "/coba/upload/{id}/view", "Lihat"), {"kode": "coba-form-add", "path": "/coba/form/add",
("coba-upload-delete", "/coba/upload/{id}/delete", "Hapus"), "def_func": "add", "nama": "Tambah",
("coba-upload-act", "/coba/upload/{act}/act", "Koreksi"), "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: for route in routes:
config.add_route(route[0], route[1]) if route.get("is_menu", None):
titles[route[0]] = route[2] 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, MODULE_CLASS = CobaModules()
cache_max_age=3600)
# config.add_static_view('static_coba',
# get_params('static_coba', '/tmp/static_coba'),
# cache_max_age=0) 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('.') config.scan('.')
@subscriber(BeforeRender)
def add_global(event):
event['get_coba_menus'] = MODULE_CLASS.get_menus
...@@ -41,7 +41,7 @@ def main(argv=sys.argv): ...@@ -41,7 +41,7 @@ def main(argv=sys.argv):
engine = engine_from_config(settings, 'sqlalchemy.') engine = engine_from_config(settings, 'sqlalchemy.')
DBSession.configure(bind=engine) DBSession.configure(bind=engine)
Base.metadata.bind = engine Base.metadata.bind = engine
Base.metadata.create_all() Base.metadata.create_all(bind=engine)
# ModuleBase.metadata.create_all() # ModuleBase.metadata.create_all()
print('>>Append Table') print('>>Append Table')
......
...@@ -19,12 +19,12 @@ _logging = logging.getLogger(__name__) ...@@ -19,12 +19,12 @@ _logging = logging.getLogger(__name__)
class BaseView(MasterBaseView): class BaseView(MasterBaseView):
pass pass
class HomeView(BaseView): class Views(BaseView):
def __init__(self, request): def __init__(self, request):
super(HomeView, self).__init__(request) super().__init__(request)
@view_config(route_name='coba-home', renderer='templates/home.pt', # @view_config(route_name='coba-home', renderer='templates/home.pt',
permission='view') # permission='view')
def view_home(self): def view_home(self):
tpl = self.get_params("coba-home-tpl") tpl = self.get_params("coba-home-tpl")
if tpl: if tpl:
......
<html <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:omit-tag=""
tal:define=" tal:define="
route_name request.matched_route.name; route_name request.matched_route.name;
...@@ -18,31 +18,42 @@ ...@@ -18,31 +18,42 @@
<span metal:fill-slot="navs" tal:omit-tag=""> <span metal:fill-slot="navs" tal:omit-tag="">
<ul class="margin-top-0 padding-top-0"> <ul class="margin-top-0 padding-top-0">
<li tal:attributes="class route_name == 'coba'"> <li tal:repeat="menu get_coba_menus()" tal:attributes="class route_name in menu['route_names'] and 'active'">
<a href="${home}/coba"> <a tal:condition="python:not menu['children'] and (has_permission(request, menu['permission']) or not menu['permission'] )"
<i class="fa fa-lg fa-fw fa-home"></i> href="${home}${menu['path']}">
<span class="menu-item-parent">Beranda</span> <i tal:condition="menu['icon']" class="fa fa-lg fa-fw ${menu['icon']}"></i>
<span>${menu['nama']}</span>
</a> </a>
</li> <a tal:condition="python:menu['children'] and has_permission(request, menu['permission'])" href="#">
<!-- Master --> <i tal:condition="menu['icon']" class="fa fa-lg fa-fw ${menu['icon']}"></i>
<!-- <li> <span class="menu-item-parent">${menu['nama']}</span>
<a href="#">
<i class="fa fa-lg fa-fw fa-book"></i>
<span class="menu-item-parent">Master</span>
</a> </a>
<ul> -->
<li tal:attributes="class route_name in coba_form and 'active'"> <ul tal:condition="python:menu['children'] and has_permission(request, menu['permission'])">
<a href="${home}/coba/form">Form</a> <li tal:repeat="submenu menu['children']"
</li> tal:attributes="class route_name in submenu['route_names'] and 'active'">
<li tal:attributes="class route_name in coba_upload and 'active'"> <a tal:condition="python:not submenu['children'] and has_permission(request, submenu['permission'])"
<a href="${home}/coba/upload">Upload</a> 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>
<li tal:attributes="class route_name in coba_view and 'active'"> </ul>
<a href="${home}/coba/view">Upload & View</a>
</li> </li>
<!-- </ul> --> </ul>
<!-- </li> --> </li>
</ul>
</span> </span>
</html> </html>
\ No newline at end of file \ No newline at end of file
import colander import colander
from deform import widget, FileData from deform import widget, FileData
from pyramid.view import view_config from pyramid.view import view_config
from opensipkd.coba import MODULE_CLASS
from opensipkd.coba.models import Coba from opensipkd.coba.models import Coba
from . import BaseView from . import BaseView
from opensipkd.base.views import widget_os from opensipkd.base.views import widget_os
from opensipkd.tools import mem_tmp_store, Upload, ymd, hms, ymdhms from opensipkd.tools import mem_tmp_store, Upload, ymd, hms, ymdhms
from opensipkd.coba import COBA_UPLOAD
from datetime import datetime from datetime import datetime
items = (("1", "Satu"),('2','Dua'),('3','Tiga'),('4','Empat'),('5','Lima'), items = (("1", "Satu"),('2','Dua'),('3','Tiga'),('4','Empat'),('5','Lima'),
("6", "Enam"),('7','Tujuh'),('8','Delapan'),('9','Sembilan'), ("6", "Enam"),('7','Tujuh'),('8','Delapan'),('9','Sembilan'),
...@@ -170,15 +170,15 @@ class Views(BaseView): ...@@ -170,15 +170,15 @@ class Views(BaseView):
# Save File Upload to Folder # Save File Upload to Folder
if "file_upload" in value: if "file_upload" in value:
upload = Upload(COBA_UPLOAD) upload = Upload(MODULE_CLASS.uploads)
value["file_upload"]=upload.save_fp(value["file_upload"]) value["file_upload"]=upload.save_fp(value["file_upload"])
if "img_upload" in value: if "img_upload" in value:
upload = Upload(COBA_UPLOAD) upload = Upload(MODULE_CLASS.uploads)
value["img_upload"]=upload.save_fp(value["img_upload"]) value["img_upload"]=upload.save_fp(value["img_upload"])
def get_values(self, row, istime=False): def get_values(self, row, istime=False):
d = super().get_values(row, istime) d = super().get_values(row, istime)
folder = COBA_UPLOAD+'/' folder = MODULE_CLASS.uploads+'/'
url = get_urls(self.req.static_url(folder)) url = get_urls(self.req.static_url(folder))
if "file_upload" in d: if "file_upload" in d:
filename = row.file_upload filename = row.file_upload
...@@ -204,35 +204,35 @@ class Views(BaseView): ...@@ -204,35 +204,35 @@ class Views(BaseView):
d["check_box"]=row.check_box and "1" or "0" d["check_box"]=row.check_box and "1" or "0"
return d return d
@view_config(route_name='coba-form', renderer='templates/list.pt', # @view_config(route_name='coba-form', renderer='templates/list.pt',
permission='view') # permission='view')
def view_list(self): # def view_list(self):
return super(Views, self).view_list() # return super(Views, self).view_list()
@view_config(route_name='coba-form-act', renderer='json', # @view_config(route_name='coba-form-act', renderer='json',
permission='view') # permission='view')
def view_act(self): # def view_act(self):
return super().view_act() # return super().view_act()
@view_config(route_name='coba-form-add', renderer='templates/form.pt', # @view_config(route_name='coba-form-add', renderer='templates/form.pt',
permission='bphtb-admin') # permission='bphtb-admin')
def view_add(self): # def view_add(self):
return super().view_add() # return super().view_add()
@view_config(route_name='coba-form-edit', renderer='templates/form.pt', # @view_config(route_name='coba-form-edit', renderer='templates/form.pt',
permission='view') # permission='view')
def view_edit(self): # def view_edit(self):
return super().view_edit() # return super().view_edit()
@view_config(route_name='coba-form-delete', renderer='templates/form.pt', # @view_config(route_name='coba-form-delete', renderer='templates/form.pt',
permission='view') # permission='view')
def view_delete(self): # def view_delete(self):
return super().view_delete() # return super().view_delete()
@view_config(route_name='coba-form-view', renderer='templates/form.pt', # @view_config(route_name='coba-form-view', renderer='templates/form.pt',
permission='view') # permission='view')
def view_view(self): # def view_view(self):
return super().view_view() # return super().view_view()
def _coba_list(): def _coba_list():
......
...@@ -2,11 +2,12 @@ import os ...@@ -2,11 +2,12 @@ import os
import colander import colander
from deform import widget, FileData from deform import widget, FileData
from pyramid.view import view_config from pyramid.view import view_config
from opensipkd.coba import MODULE_CLASS
from opensipkd.tools import mem_tmp_store, Upload from opensipkd.tools import mem_tmp_store, Upload
from opensipkd.base import get_urls from opensipkd.base import get_urls
from opensipkd.coba.models import Coba from opensipkd.coba.models import Coba
from . import BaseView from . import BaseView
from opensipkd.coba import COBA_UPLOAD # from opensipkd.coba import COBA_UPLOAD
# from opensipkd.base.views import widget_os # from opensipkd.base.views import widget_os
# from opensipkd.tools.report import csv_response # from opensipkd.tools.report import csv_response
# from sqlalchemy import and_ # from sqlalchemy import and_
...@@ -62,19 +63,19 @@ class Views(BaseView): ...@@ -62,19 +63,19 @@ class Views(BaseView):
def form_validator(self, form, value): def form_validator(self, form, value):
if "file_1" in value: if "file_1" in value:
upload = Upload(COBA_UPLOAD) upload = Upload(MODULE_CLASS.uploads)
value["file_1"]=upload.save_fp(value["file_1"]) value["file_1"]=upload.save_fp(value["file_1"])
if "file_2" in value: if "file_2" in value:
upload = Upload(COBA_UPLOAD) upload = Upload(MODULE_CLASS.uploads)
value["file_2"]=upload.save_fp(value["file_2"]) value["file_2"]=upload.save_fp(value["file_2"])
if "file_3" in value: if "file_3" in value:
upload = Upload(COBA_UPLOAD) upload = Upload(MODULE_CLASS.uploads)
value["file_3"]=upload.save_fp(value["file_3"]) value["file_3"]=upload.save_fp(value["file_3"])
def get_values(self, row, istime=False): def get_values(self, row, istime=False):
d = super().get_values(row, istime=False) d = super().get_values(row, istime=False)
folder = COBA_UPLOAD+'/' folder = MODULE_CLASS.uploads
url = get_urls(self.req.static_url(folder)) url = self.req.static_url(folder)
if "file_1" in d: if "file_1" in d:
filename = row.file_1 filename = row.file_1
preview_url = "/".join([url, filename]) preview_url = "/".join([url, filename])
...@@ -98,32 +99,32 @@ class Views(BaseView): ...@@ -98,32 +99,32 @@ class Views(BaseView):
} }
return d return d
@view_config(route_name='coba-upload', renderer='templates/list.pt', # @view_config(route_name='coba-upload', renderer='templates/list.pt',
permission='view') # permission='view')
def view_list(self): # def view_list(self):
return super(Views, self).view_list() # return super(Views, self).view_list()
@view_config(route_name='coba-upload-act', renderer='json', # @view_config(route_name='coba-upload-act', renderer='json',
permission='view') # permission='view')
def view_act(self): # def view_act(self):
return super().view_act() # return super().view_act()
@view_config(route_name='coba-upload-add', renderer='templates/form.pt', # @view_config(route_name='coba-upload-add', renderer='templates/form.pt',
permission='bphtb-admin') # permission='bphtb-admin')
def view_add(self): # def view_add(self):
return super().view_add() # return super().view_add()
@view_config(route_name='coba-upload-edit', renderer='templates/form.pt', # @view_config(route_name='coba-upload-edit', renderer='templates/form.pt',
permission='view') # permission='view')
def view_edit(self): # def view_edit(self):
return super().view_edit() # return super().view_edit()
@view_config(route_name='coba-upload-delete', renderer='templates/form.pt', # @view_config(route_name='coba-upload-delete', renderer='templates/form.pt',
permission='view') # permission='view')
def view_delete(self): # def view_delete(self):
return super().view_delete() # return super().view_delete()
@view_config(route_name='coba-upload-view', renderer='templates/form.pt', # @view_config(route_name='coba-upload-view', renderer='templates/form.pt',
permission='view') # permission='view')
def view_view(self): # def view_view(self):
return super().view_view() # return super().view_view()
...@@ -18,7 +18,7 @@ strict = true ...@@ -18,7 +18,7 @@ strict = true
[project] [project]
name = 'opensipkd-base' name = 'opensipkd-coba'
version = '4.2' version = '4.2'
dependencies = [ dependencies = [
'opensipkd-base', 'opensipkd-base',
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!