Commit 1970af04 by aa.gusti

perbaikan terimatgl

1 parent 42da8054
import importlib
from opensipkd.base import get_params from opensipkd.base import get_params
from opensipkd.base import titles from opensipkd.base import titles
try: try:
COBA_UPLOAD = get_params('coba_upload', '/tmp/coba/upload') COBA_UPLOAD = get_params('coba_upload', '/tmp/coba/upload')
except: except:
COBA_UPLOAD = '/tmp/coba/upload' COBA_UPLOAD = '/tmp/coba/upload'
routes = [ routes = [
("coba-home", "/coba/home", "Home Coba"), ("coba-home", "/coba/home", "Home Coba", "__init__", "home", "home.pt", "",),
("coba-form", "/coba/form", "Daftar"), ("coba-form", "/coba/form", "Daftar", "view_form", "list", "list.pt", "",),
("coba-form-add", "/coba/form/add", "Tambah"), ("coba-form-add", "/coba/form/add", "Tambah", "view_form", "add", "form.pt", "",),
("coba-form-edit", "/coba/form/{id}/edit", "Koreksi"), ("coba-form-edit", "/coba/form/{id}/edit", "Koreksi", "view_form", "edit", "form.pt", "",),
("coba-form-view", "/coba/form/{id}/view", "Lihat"), ("coba-form-view", "/coba/form/{id}/view", "Lihat", "view_form", "view", "form.pt", "",),
("coba-form-delete", "/coba/form/{id}/delete", "Hapus"), ("coba-form-delete", "/coba/form/{id}/delete", "Hapus", "view_form", "delete", "form.pt", "",),
("coba-form-act", "/coba/form/{act}/act", "Koreksi"), ("coba-form-act", "/coba/form/{act}/act", "Koreksi", "view_form", "act", "json", "",),
("coba-upload", "/coba/upload", "Daftar"), ("coba-upload", "/coba/upload", "Daftar", "view_upload", "list", "list.pt", "",),
("coba-upload-add", "/coba/upload/add", "Tambah"), ("coba-upload-add", "/coba/upload/add", "Tambah", "view_upload", "add", "form.pt", "",),
("coba-upload-edit", "/coba/upload/{id}/edit", "Koreksi"), (
("coba-upload-view", "/coba/upload/{id}/view", "Lihat"), "coba-upload-edit", "/coba/upload/{id}/edit", "Koreksi", "view_upload", "edit", "form.pt",
("coba-upload-delete", "/coba/upload/{id}/delete", "Hapus"), "",),
("coba-upload-act", "/coba/upload/{act}/act", "Koreksi"), ("coba-upload-view", "/coba/upload/{id}/view", "Lihat", "view_upload", "view", "form.pt", "",),
("coba-upload-delete", "/coba/upload/{id}/delete", "Hapus", "view_upload", "delete", "form.pt",
"",),
("coba-upload-act", "/coba/upload/{act}/act", "Koreksi", "view_upload", "act", "json", "",),
("coba-filters", "/coba/filter", "Filter", "view_filter", "add", "form.pt", "",),
] ]
# def init_db(config): # def init_db(config):
# settings = get_settings() # settings = get_settings()
# url = 'bphtb.url' in settings and settings['bphtb.url'] and 'bphtb.' or 'sqlalchemy.' # url = 'bphtb.url' in settings and settings['bphtb.url'] and 'bphtb.' or 'sqlalchemy.'
...@@ -32,17 +40,39 @@ routes = [ ...@@ -32,17 +40,39 @@ routes = [
# BphtbBase.metadata.bind = engine # BphtbBase.metadata.bind = engine
def includeme(config): def includeme(config):
for route in routes: for route in routes:
config.add_route(route[0], route[1]) config.add_route(route[0], route[1])
titles[route[0]] = route[2] titles[route[0]] = route[2]
class_name = f".views.{route[3]}"
attr = f"view_{route[4]}"
template = route[5]
_views = importlib.import_module(class_name, "opensipkd.coba")
views = _views
if template == "json":
renderer = template
else:
renderer = "views/templates/" + template
kode = route[0]
permission = route[6]
print(views, attr)
print(getattr(views.Views, attr))
if not permission:
config.add_view(views.Views, attr=f"{attr}",
route_name=kode,
renderer=renderer)
else:
config.add_view(views.Views, attr=f"{attr}",
route_name=kode, permission=permission,
renderer=renderer)
config.add_static_view('coba/static', 'opensipkd.coba:static', config.add_static_view('coba/static', 'opensipkd.coba:static',
cache_max_age=3600) cache_max_age=3600)
config.add_static_view('coba/upload', COBA_UPLOAD, config.add_static_view('coba/upload', COBA_UPLOAD,
cache_max_age=3600) cache_max_age=3600)
# config.add_static_view('static_coba', # config.add_static_view('static_coba',
# get_params('static_coba', '/tmp/static_coba'), # get_params('static_coba', '/tmp/static_coba'),
# cache_max_age=0) # cache_max_age=0)
......
...@@ -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(engine)
# ModuleBase.metadata.create_all() # ModuleBase.metadata.create_all()
print('>>Append Table') print('>>Append Table')
......
("coba-home", "/coba/home", "Home Coba", "view_form", "home", home.pt,"",)
("coba-form", "/coba/form", "Daftar", "view_form", "list", list.pt,"",)
("coba-form-add", "/coba/form/add", "Tambah", "view_form", "add", form.pt,"",)
("coba-form-edit", "/coba/form/{id}/edit", "Koreksi", "view_form", "edit", form.pt,"",)
("coba-form-view", "/coba/form/{id}/view", "Lihat", "view_form", "view", form.pt,"",)
("coba-form-delete", "/coba/form/{id}/delete", "Hapus", "view_form", "delete", form.pt,"",)
("coba-form-act", "/coba/form/{act}/act", "Koreksi", "view_form", "act", json,"",)
("coba-upload", "/coba/upload", "Daftar", "view_upload", "list", list.pt,"",)
("coba-upload-add", "/coba/upload/add", "Tambah", "view_upload", "add", form.pt,"",)
("coba-upload-edit", "/coba/upload/{id}/edit", "Koreksi", "view_upload", "edit", form.pt,"",)
("coba-upload-view", "/coba/upload/{id}/view", "Lihat", "view_upload", "view", form.pt,"",)
("coba-upload-delete", "/coba/upload/{id}/delete", "Hapus", "view_upload", "delete", form.pt,"",)
("coba-upload-act", "/coba/upload/{act}/act", "Koreksi", "view_upload", "act", json,"",)
("coba-filters", "/coba/filter", "Filter", "view_filter", "add", form.pt,"",)
\ No newline at end of file \ No newline at end of file
...@@ -20,12 +20,12 @@ _logging = logging.getLogger(__name__) ...@@ -20,12 +20,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;
......
<html metal:use-macro="load: ./base.pt" tal:omit-tag=""> <html metal:use-macro="load: ./base.pt" tal:omit-tag="">
<div metal:fill-slot="content" tal:omit-tag=""> <div metal:fill-slot="content" tal:omit-tag="">
<h1>Home BPHTB</h1> <h1>Home BPHTB</h1>
<a href="/test/filters">Filter Form</a>
</div> </div>
</html> </html>
\ No newline at end of file \ No newline at end of file
import colander
from deform import Form, ValidationFailure
from opensipkd.base.views import widget_os, BaseView
class FilterSchema(colander.SequenceSchema):
test = colander.SchemaNode(
colander.String(),
widget=widget_os.FilterWidget(values=(("nama", "Nama"), ("alamat", "Alamat")))
)
class AddSchema(colander.Schema):
ada = FilterSchema()
class Views(BaseView):
def __init__(self, request):
super().__init__(request)
self.add_schema = AddSchema
self.list_route = "coba-form"
self.is_object = True
def view_add(self):
# if self.req.POST:
# c = self.req.POST.items()
# form = Form(self.add_schema())
# try:
# c = form.validate(c)
# except ValidationFailure as e:
# print(str(e))
# print(dict(c))
result = super().view_add()
form = result["form"]
values1 = {"test": "alamat.gt.Jakarta.OR"}
values2 = {"test": "alamat.lt.Bandung."}
values = {"ada": [values1["test"], values2["test"]]}
# values = {}
form.set_appstruct(values)
return {"form": form.render(), "scripts": {}, "js": result["js"],
"css": result["css"]}
\ No newline at end of file \ No newline at end of file
from datetime import datetime
import colander import colander
from deform import widget, FileData from deform import widget, FileData
from opensipkd.base.views import widget_os
from pyramid.view import view_config from pyramid.view import view_config
from opensipkd.coba import COBA_UPLOAD
from opensipkd.coba.models import Coba from opensipkd.coba.models import Coba
from opensipkd.tools import mem_tmp_store, Upload, ymd, hms
from . import BaseView from . import BaseView
from opensipkd.base.views import widget_os
from opensipkd.tools import mem_tmp_store, Upload, ymd, hms, ymdhms items = (("1", "Satu"), ('2', 'Dua'), ('3', 'Tiga'), ('4', 'Empat'), ('5', 'Lima'),
from opensipkd.coba import COBA_UPLOAD ("6", "Enam"), ('7', 'Tujuh'), ('8', 'Delapan'), ('9', 'Sembilan'),
from datetime import datetime ('10', 'Sepuluh'), ("11", "Sebelas"), ('12', 'Dua Belas'),
items = (("1", "Satu"),('2','Dua'),('3','Tiga'),('4','Empat'),('5','Lima'), ('13', 'Tiga Belas'), ('14', 'Empat Belas'), ('15', 'Lima Belas'))
("6", "Enam"),('7','Tujuh'),('8','Delapan'),('9','Sembilan'),
('10','Sepuluh'),("11", "Sebelas"),('12','Dua Belas'),
('13','Tiga Belas'),('14','Empat Belas'),('15','Lima Belas'))
from opensipkd.base import get_urls from opensipkd.base import get_urls
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String(), colander.String(),
widget=widget.TextInputWidget(mask="9999.9999.9999"),
validator=colander.Length(min=3, max=10), validator=colander.Length(min=3, max=10),
) )
nama = colander.SchemaNode( nama = colander.SchemaNode(
...@@ -29,66 +35,65 @@ class AddSchema(colander.Schema): ...@@ -29,66 +35,65 @@ class AddSchema(colander.Schema):
date_os = colander.SchemaNode( date_os = colander.SchemaNode(
colander.String(), colander.String(),
widget = widget_os.BootStrapDateInputWidget(type_name="text") widget=widget_os.BootStrapDateInputWidget(type_name="text")
) )
date_ori = colander.SchemaNode( date_ori = colander.SchemaNode(
colander.String(), colander.String(),
widget = widget.DateInputWidget(type_name="text") widget=widget.DateInputWidget(type_name="text")
) )
date_part = colander.SchemaNode( date_part = colander.SchemaNode(
colander.String(), colander.String(),
widget = widget.DatePartsWidget() widget=widget.DatePartsWidget()
) )
time_ori = colander.SchemaNode( time_ori = colander.SchemaNode(
colander.String(), colander.String(),
widget = widget.TimeInputWidget() widget=widget.TimeInputWidget()
) )
date_time = colander.SchemaNode( date_time = colander.SchemaNode(
colander.String(), colander.String(),
widget = widget.DateTimeInputWidget() widget=widget.DateTimeInputWidget()
) )
check_box = colander.SchemaNode( check_box = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget = widget.CheckboxWidget(true_val="1", false_val="0") widget=widget.CheckboxWidget(true_val="1", false_val="0")
) )
select_combo = colander.SchemaNode( select_combo = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget = widget.SelectWidget(values=items) widget=widget.SelectWidget(values=items)
) )
select_combo2 = colander.SchemaNode( select_combo2 = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget = widget.Select2Widget(values=items) widget=widget.Select2Widget(values=items)
) )
file_upload = colander.SchemaNode( file_upload = colander.SchemaNode(
FileData(), FileData(),
widget = widget.FileUploadWidget(tmpstore=mem_tmp_store, widget=widget.FileUploadWidget(tmpstore=mem_tmp_store,
template='opensipkd.coba:views/templates/file_upload.pt', template='opensipkd.coba:views/templates/file_upload.pt',
readonly_template='opensipkd.coba:views/templates/readonly/file_upload.pt') readonly_template='opensipkd.coba:views/templates/readonly/file_upload.pt')
) )
img_upload = colander.SchemaNode( img_upload = colander.SchemaNode(
FileData(), FileData(),
widget = widget.FileUploadWidget(tmpstore=mem_tmp_store, widget=widget.FileUploadWidget(tmpstore=mem_tmp_store,
template='opensipkd.coba:views/templates/img_upload.pt', template='opensipkd.coba:views/templates/img_upload.pt',
readonly_template='opensipkd.coba:views/templates/readonly/img_upload.pt') readonly_template='opensipkd.coba:views/templates/readonly/img_upload.pt')
) )
option_list = colander.SchemaNode( option_list = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget = widget.RadioChoiceWidget(values=items) widget=widget.RadioChoiceWidget(values=items)
) )
option_box = colander.SchemaNode( option_box = colander.SchemaNode(
colander.Set(), colander.Set(),
widget = widget.CheckboxChoiceWidget(values=items) widget=widget.CheckboxChoiceWidget(values=items)
) )
...@@ -128,6 +133,7 @@ class Views(BaseView): ...@@ -128,6 +133,7 @@ class Views(BaseView):
def form_validator(self, form, value): def form_validator(self, form, value):
exc = colander.Invalid(form, '') exc = colander.Invalid(form, '')
def err_kode(): def err_kode():
exc['kode'] = 'Kode %s sudah digunakan oleh %s' % ( exc['kode'] = 'Kode %s sudah digunakan oleh %s' % (
value['kode'], found.nama) value['kode'], found.nama)
...@@ -140,19 +146,19 @@ class Views(BaseView): ...@@ -140,19 +146,19 @@ class Views(BaseView):
if 'id' in form.request.matchdict: if 'id' in form.request.matchdict:
uid = form.request.matchdict['id'] uid = form.request.matchdict['id']
q =Coba.query_id(uid) q = Coba.query_id(uid)
current = q.first() current = q.first()
else: else:
current = None current = None
found =Coba.query_kode(value['kode']).first() found = Coba.query_kode(value['kode']).first()
if current: if current:
if found and found.id != current.id: if found and found.id != current.id:
err_kode() err_kode()
elif found: elif found:
err_kode() err_kode()
found =Coba.query_nama(value['nama']).first() found = Coba.query_nama(value['nama']).first()
if current: if current:
if found and found.id != current.id: if found and found.id != current.id:
err_nama() err_nama()
...@@ -160,25 +166,25 @@ class Views(BaseView): ...@@ -160,25 +166,25 @@ class Views(BaseView):
err_nama() err_nama()
# Set to String # Set to String
if "option_box" in value: if "option_box" in value:
value["option_box"]=str(value["option_box"]) value["option_box"] = str(value["option_box"])
if "time_ori" in value: if "time_ori" in value:
value["time_ori"]=datetime.strptime(value["time_ori"], "%H:%M:%S") value["time_ori"] = datetime.strptime(value["time_ori"], "%H:%M:%S")
if "check_box" in value: if "check_box" in value:
value["check_box"]=value["check_box"] and 1 or 0 value["check_box"] = value["check_box"] and 1 or 0
# 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(COBA_UPLOAD)
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(COBA_UPLOAD)
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 = COBA_UPLOAD + '/'
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
...@@ -195,48 +201,48 @@ class Views(BaseView): ...@@ -195,48 +201,48 @@ class Views(BaseView):
"filename": filename, "filename": filename,
"preview_url": preview_url "preview_url": preview_url
} }
d["date_ori"]=ymd(row.date_ori) d["date_ori"] = ymd(row.date_ori)
d["date_os"]=ymd(row.date_os) d["date_os"] = ymd(row.date_os)
d["date_part"]=ymd(row.date_part) d["date_part"] = ymd(row.date_part)
d["date_time"]=ymd(row.date_time)+'T'+hms(row.date_time)+'Z' d["date_time"] = ymd(row.date_time) + 'T' + hms(row.date_time) + 'Z'
d["time_ori"]=hms(row.time_ori) d["time_ori"] = hms(row.time_ori)
d["option_box"]=set(row.option_box) d["option_box"] = set(row.option_box)
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():
qry =Coba.query().order_by(Coba.nama) qry = Coba.query().order_by(Coba.nama)
return qry return qry
...@@ -262,6 +268,7 @@ def coba_widget(node, kw): ...@@ -262,6 +268,7 @@ def coba_widget(node, kw):
placeholder="Pilih Coba", placeholder="Pilih Coba",
style="width:200px;") style="width:200px;")
class CobaFilterSchema(): class CobaFilterSchema():
coba_id = colander.SchemaNode( coba_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
......
...@@ -98,32 +98,32 @@ class Views(BaseView): ...@@ -98,32 +98,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()
\ No newline at end of file \ No newline at end of file
import colander
from deform import Form
class Schema(colander.Schema):
a = colander.SchemaNode(colander.String())
schema = Schema()
form = Form(schema)
# print (dir(form.oid))
print (form.oid)
print (form.schema.a.id)
# print(form.render())
\ No newline at end of file \ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!