Commit 99ad3621 by aagusti

init

1 parent cd12e57d
from opensipkd.base import get_params from opensipkd.base import get_params
from opensipkd.base import titles from opensipkd.base import titles
try:
COBA_UPLOAD = get_params('coba_upload', '/tmp/coba/upload')
except:
COBA_UPLOAD = '/tmp/coba/upload'
COBA_UPLOAD = get_params('coba_upload', '/tmp/coba/upload')
routes = [ routes = [
("coba-home", "/coba/home", "Home Coba"), ("coba-home", "/coba/home", "Home Coba"),
("coba", "/coba", "Daftar"), ("coba-form", "/coba/form", "Daftar"),
("coba-add", "/coba/add", "Tambah"), ("coba-form-add", "/coba/form/add", "Tambah"),
("coba-edit", "/coba/{id}/edit", "Koreksi"), ("coba-form-edit", "/coba/form/{id}/edit", "Koreksi"),
("coba-view", "/coba/{id}/view", "Lihat"), ("coba-form-view", "/coba/form/{id}/view", "Lihat"),
("coba-delete", "/coba/{id}/delete", "Hapus"), ("coba-form-delete", "/coba/form/{id}/delete", "Hapus"),
("coba-act", "/coba/{act}/act", "Koreksi"), ("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"),
] ]
# def init_db(config): # def init_db(config):
......
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from zope.sqlalchemy import register from zope.sqlalchemy import register
from sqlalchemy import Column, ForeignKey, Integer, String, engine_from_config, func from sqlalchemy import Column, ForeignKey, Integer, String, engine_from_config, func
from opensipkd.base.models import Base, CommonModel, DefaultModel, TABLE_ARGS from opensipkd.base.models import Base, NamaModel, DefaultModel, TABLE_ARGS
from opensipkd.base import get_settings from opensipkd.base import get_settings
from opensipkd.models import User from opensipkd.models import User
from sqlalchemy.orm import (scoped_session, sessionmaker) from sqlalchemy.orm import (scoped_session, sessionmaker)
...@@ -15,7 +15,7 @@ from sqlalchemy.orm import (scoped_session, sessionmaker) ...@@ -15,7 +15,7 @@ from sqlalchemy.orm import (scoped_session, sessionmaker)
class Coba(Base, DefaultModel): class Coba(Base, NamaModel):
__tablename__="coba" __tablename__="coba"
__table_args__ = (TABLE_ARGS,) __table_args__ = (TABLE_ARGS,)
kode = Column(String(255)) kode = Column(String(255))
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
tal:omit-tag="" tal:omit-tag=""
tal:define=" tal:define="
route_name request.matched_route.name; route_name request.matched_route.name;
coba ['coba','coba-add','coba-edit','coba-delete','coba-view']; coba_form ['coba-form','coba-form-add','coba-form-edit','coba-form-delete','coba-form-view'];
coba_upload ['coba-upload','coba-upload-add','coba-upload-edit','coba-upload-delete','coba-upload-view'];
" "
> >
<js metal:fill-slot="js_files"> <js metal:fill-slot="js_files">
...@@ -29,11 +30,11 @@ ...@@ -29,11 +30,11 @@
<span class="menu-item-parent">Master</span> <span class="menu-item-parent">Master</span>
</a> </a>
<ul> --> <ul> -->
<li tal:attributes="class route_name in coba and 'active'"> <li tal:attributes="class route_name in coba_form and 'active'">
<a href="${home}/coba">List</a> <a href="${home}/coba/form">Form</a>
</li> </li>
<li tal:attributes="class route_name == 'coba-add' and 'active'"> <li tal:attributes="class route_name in coba_upload and 'active'">
<a href="${home}/coba/add">Form Tambah</a> <a href="${home}/coba/upload">Upload</a>
</li> </li>
<!-- </ul> --> <!-- </ul> -->
......
import colander
from deform import widget
from pyramid.view import view_config
from opensipkd.coba.models import Coba
from . import BaseView
from opensipkd.base.views import widget_os
class AddSchema(colander.Schema):
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(min=3, max=10),
)
nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(min=3, max=64),
)
class EditSchema(AddSchema):
id = colander.SchemaNode(
colander.Integer(),
widget=widget.HiddenWidget()
)
class ListSchema(colander.Schema):
id = colander.SchemaNode(
colander.Integer(),
title="Action"
)
kode = colander.SchemaNode(
colander.String(),
title="Kode",
)
nama = colander.SchemaNode(
colander.String(),
title="Nama",
field="nama"
)
class Views(BaseView):
def __init__(self, request):
super().__init__(request)
self.add_schema = AddSchema
self.edit_schema = EditSchema
self.list_schema = ListSchema
self.list_route = "coba-form"
self.table = Coba
self.list_buttons = self.list_buttons + self.list_report
def form_validator(self, form, value):
exc = colander.Invalid(form, '')
def err_kode():
exc['kode'] = 'Kode %s sudah digunakan oleh %s' % (
value['kode'], found.nama)
raise exc
def err_nama():
exc['nama'] = 'Nama %s sudah digunakan oleh kode %s' % (
value['nama'], found.kode)
raise exc
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q =Coba.query_id(uid)
current = q.first()
else:
current = None
found =Coba.query_kode(value['kode']).first()
if current:
if found and found.id != current.id:
err_kode()
elif found:
err_kode()
found =Coba.query_nama(value['nama']).first()
if current:
if found and found.id != current.id:
err_nama()
elif found:
err_nama()
@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():
qry =Coba.query().order_by(Coba.nama)
return qry
def coba_list(kecamatan_id=None):
qry = _coba_list(kecamatan_id)
return [(r.id, r.nm_coba) for r in qry]
def coba_select(kecamatan_id=None):
result = coba_list(kecamatan_id)
result.insert(0, ('', 'Semua Coba'))
return result
@colander.deferred
def coba_widget(node, kw):
values = kw.get('coba_list', [])
url = node and hasattr(node, 'slave_url') and node.slave_url or ""
slave = node and hasattr(node, 'slave') and node.slave or ""
return widget_os.Select2MsWidget(values=values,
url=url,
slave=slave,
placeholder="Pilih Coba",
style="width:200px;")
class CobaFilterSchema():
coba_id = colander.SchemaNode(
colander.Integer(),
widget=coba_widget,
title="Coba",
oid="coba_id",
missing=colander.drop,
)
...@@ -12,14 +12,6 @@ from opensipkd.coba import COBA_UPLOAD ...@@ -12,14 +12,6 @@ from opensipkd.coba import COBA_UPLOAD
# from sqlalchemy import and_ # from sqlalchemy import and_
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(min=3, max=10),
)
nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(min=3, max=64),
)
file_1 = colander.SchemaNode( file_1 = colander.SchemaNode(
FileData(), FileData(),
widget=widget.FileUploadWidget(tmpstore=mem_tmp_store), widget=widget.FileUploadWidget(tmpstore=mem_tmp_store),
...@@ -46,15 +38,15 @@ class ListSchema(colander.Schema): ...@@ -46,15 +38,15 @@ class ListSchema(colander.Schema):
colander.Integer(), colander.Integer(),
title="Action" title="Action"
) )
kode = colander.SchemaNode( file_1 = colander.SchemaNode(
colander.String(), colander.String(),
title="Kode",
) )
nama = colander.SchemaNode( file_2 = colander.SchemaNode(
colander.String(),
)
file_3 = colander.SchemaNode(
colander.String(), colander.String(),
title="Nama",
field="nama"
) )
...@@ -64,15 +56,9 @@ class Views(BaseView): ...@@ -64,15 +56,9 @@ class Views(BaseView):
self.add_schema = AddSchema self.add_schema = AddSchema
self.edit_schema = EditSchema self.edit_schema = EditSchema
self.list_schema = ListSchema self.list_schema = ListSchema
self.list_route = "coba" self.list_route = "coba-upload"
self.table = Coba self.table = Coba
self.list_buttons = self.list_buttons + self.list_report self.list_buttons = self.list_buttons + self.list_report
# path = os.path.dirname(__file__)
# self.report_file = os.path.dirname(
# path)+"/reports/master/kelurahan.jrxml"
# def get_bindings(self, row):
# return {"kecamatan_list":Kecamatan.get_list()}
def form_validator(self, form, value): def form_validator(self, form, value):
if "file_1" in value: if "file_1" in value:
...@@ -85,38 +71,6 @@ class Views(BaseView): ...@@ -85,38 +71,6 @@ class Views(BaseView):
upload = Upload(COBA_UPLOAD) upload = Upload(COBA_UPLOAD)
value["file_3"]=upload.save_fp(value["file_3"]) value["file_3"]=upload.save_fp(value["file_3"])
# exc = colander.Invalid(form, '')
# def err_kode():
# exc['kelurahankd'] = 'Kode %s sudah digunakan oleh %s' % (
# value['kelurahankd'], found.nama)
# raise exc
# def err_nama():
# exc['nm_kelurahan'] = 'Uraian %s sudah digunakan oleh kode %s' % (
# value['nm_kelurahan'], found.kode)
# raise exc
# if 'id' in form.request.matchdict:
# uid = form.request.matchdict['id']
# q =Kelurahan.query_id(uid)
# current = q.first()
# else:
# current = None
# found =Kelurahan.query_kode(value['kelurahankd']).first()
# if current:
# if found and found.id != current.id:
# err_kode()
# elif found:
# err_kode()
# found =Kelurahan.query_nama(value['nm_kelurahan']).first()
# if current:
# if found and found.id != current.id:
# err_nama()
# elif found:
# err_nama()
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 = COBA_UPLOAD+'/'
...@@ -136,7 +90,7 @@ class Views(BaseView): ...@@ -136,7 +90,7 @@ class Views(BaseView):
"preview_url": preview_url "preview_url": preview_url
} }
if "file_3" in d: if "file_3" in d:
filename = row.file_1 filename = row.file_3
preview_url = "/".join([url, filename]) preview_url = "/".join([url, filename])
d["file_3"] = {"uid": filename.split(".")[0], d["file_3"] = {"uid": filename.split(".")[0],
"filename": filename, "filename": filename,
...@@ -144,94 +98,32 @@ class Views(BaseView): ...@@ -144,94 +98,32 @@ class Views(BaseView):
} }
return d return d
@view_config(route_name='coba', 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-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-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-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-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-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()
# def next_act(self):
# url_dict = self.req.matchdict
# if url_dict['act'] == 'select':
# kecamatan_id = self.req.GET["kecamatan_id"]
# qry = _kelurahan_list(kecamatan_id)
# return {f"{r.id}": f"{r.kelurahankd}-{r.nm_kelurahan}" for r in qry}
# return super().next_act()
# def list_join(self, query):
# return query.join(Kecamatan,
# and_(Kecamatan.kd_propinsi==Kelurahan.kd_propinsi,
# Kecamatan.kd_dati2==Kelurahan.kd_dati2,
# Kecamatan.kd_kecamatan==Kelurahan.kd_kecamatan))
# def get_values(self, row, istime=False):
# d = row.to_dict(date_format = '%Y-%m-%d')
# for f in d:
# if type(d[f]) is str:
# d[f] = d[f].strip()
# return d
# def _kelurahan_list(kecamatan_id=None):
# qry =Kelurahan.query().order_by(Kelurahan.nm_kelurahan)
# if kecamatan_id:
# qry = qry.filter(Kelurahan.kecamatan_id == kecamatan_id)
# return qry
# def kelurahan_list(kecamatan_id=None):
# qry = _kelurahan_list(kecamatan_id)
# return [(r.id, r.nm_kelurahan) for r in qry]
# def kelurahan_select(kecamatan_id=None):
# result = kelurahan_list(kecamatan_id)
# result.insert(0, ('', 'Semua Kelurahan'))
# return result
# @colander.deferred
# def kelurahan_widget(node, kw):
# # values = kw.get('kecamatan_list', [])
# # return widget.Select2Widget(values=values)
# values = kw.get('kelurahan_list', [])
# url = node and hasattr(node, 'slave_url') and node.slave_url or ""
# slave = node and hasattr(node, 'slave') and node.slave or ""
# return widget_os.Select2MsWidget(values=values,
# url=url,
# slave=slave,
# placeholder="Pilih Kelurahan",
# style="width:200px;")
# class KelurahanFilterSchema(KecamatanFilterSchema):
# kelurahan_id = colander.SchemaNode(
# colander.Integer(),
# widget=kelurahan_widget,
# title="Kelurahan",
# oid="kelurahan_id",
# missing=colander.drop,
# )
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!