Aktiasi Kembali Prvinsi, Departemen, Dati2, Kecamatan dan Desa

1 parent 9c3865e3
......@@ -39,3 +39,46 @@ base-groups-upload,/groups/upload,base,groups,,,,admin,base-groups,Groups Uload,
base-upload-logo,/upload/logo,,,,,,admin,base-admin,Upload Logo,1,0,,1,upload.pt,1
googleOauth2,/googleOauth2,,,,,,,,Google Oauth2,1,1,,0,json,
googlesignin,/googlesignin,base,,,,1,,,GoogleSignIn,1,1,,0,json,
base-departemen,/departemen,base,departemen,,view_list,,admin,base-admin,Departemen,1,0,,1,form.pt,
base-departemen-act,/departemen/{act}/act,base,departemen,,,,admin,base-departemen,Departemen Action,1,0,,,json,
base-departemen-add,/departemen/add,base,departemen,,,,admin,base-departemen,Departemen Add,1,0,,,form6.pt,
base-departemen-edit,/departemen/{id}/edit,base,departemen,,,,admin,base-departemen,Departemen Edit,1,0,,,form6.pt,
base-departemen-view,/departemen/{id}/view,base,departemen,,,,admin,base-departemen,Departemen View,1,0,,,form6.pt,
base-departemen-delete,/departemen/{id}/delete,base,departemen,,,,admin,base-departemen,Departemen Delete,1,0,,,form6.pt,
base-departemen-upload,/departemen/upload,base,departemen,,,,admin,base-departemen,Departemen Uload,1,0,,,form6.pt,
base-provinsi,/provinsi,base,provinsi,,view_list,,admin,base-admin,Provinsi,1,0,,1,form.pt,
base-provinsi-act,/provinsi/{act}/act,base,provinsi,,,,admin,base-provinsi,Provinsi Action,1,0,,,json,
base-provinsi-add,/provinsi/add,base,provinsi,,,,admin,base-provinsi,Provinsi Add,1,0,,,form6.pt,
base-provinsi-edit,/provinsi/{id}/edit,base,provinsi,,,,admin,base-provinsi,Provinsi Edit,1,0,,,form6.pt,
base-provinsi-view,/provinsi/{id}/view,base,provinsi,,,,admin,base-provinsi,Provinsi View,1,0,,,form6.pt,
base-provinsi-delete,/provinsi/{id}/delete,base,provinsi,,,,admin,base-provinsi,Provinsi Delete,1,0,,,form6.pt,
base-provinsi-upload,/provinsi/upload,base,provinsi,,,,admin,base-provinsi,Provinsi Uload,1,0,,,form6.pt,
base-dati2,/dati2,base,dati2,,view_list,,admin,base-admin,Dati2,1,0,,1,form.pt,
base-dati2-act,/dati2/{act}/act,base,dati2,,,,admin,base-dati2,Dati2 Action,1,0,,,json,
base-dati2-add,/dati2/add,base,dati2,,,,admin,base-dati2,Dati2 Add,1,0,,,form6.pt,
base-dati2-edit,/dati2/{id}/edit,base,dati2,,,,admin,base-dati2,Dati2 Edit,1,0,,,form6.pt,
base-dati2-view,/dati2/{id}/view,base,dati2,,,,admin,base-dati2,Dati2 View,1,0,,,form6.pt,
base-dati2-delete,/dati2/{id}/delete,base,dati2,,,,admin,base-dati2,Dati2 Delete,1,0,,,form6.pt,
base-dati2-upload,/dati2/upload,base,dati2,,,,admin,base-dati2,Dati2 Uload,1,0,,,form6.pt,
base-kecamatan,/kecamatan,base,kecamatan,,view_list,,admin,base-admin,Kecamatan,1,0,,1,form.pt,
base-kecamatan-act,/kecamatan/{act}/act,base,kecamatan,,,,admin,base-kecamatan,Kecamatan Action,1,0,,,json,
base-kecamatan-add,/kecamatan/add,base,kecamatan,,,,admin,base-kecamatan,Kecamatan Add,1,0,,,form6.pt,
base-kecamatan-edit,/kecamatan/{id}/edit,base,kecamatan,,,,admin,base-kecamatan,Kecamatan Edit,1,0,,,form6.pt,
base-kecamatan-view,/kecamatan/{id}/view,base,kecamatan,,,,admin,base-kecamatan,Kecamatan View,1,0,,,form6.pt,
base-kecamatan-delete,/kecamatan/{id}/delete,base,kecamatan,,,,admin,base-kecamatan,Kecamatan Delete,1,0,,,form6.pt,
base-kecamatan-upload,/kecamatan/upload,base,kecamatan,,,,admin,base-kecamatan,Kecamatan Uload,1,0,,,form6.pt,
base-desa,/desa,base,desa,,view_list,,admin,base-admin,Desa,1,0,,1,form.pt,
base-desa-act,/desa/{act}/act,base,desa,,,,admin,base-desa,Desa Action,1,0,,,json,
base-desa-add,/desa/add,base,desa,,,,admin,base-desa,Desa Add,1,0,,,form6.pt,
base-desa-edit,/desa/{id}/edit,base,desa,,,,admin,base-desa,Desa Edit,1,0,,,form6.pt,
base-desa-view,/desa/{id}/view,base,desa,,,,admin,base-desa,Desa View,1,0,,,form6.pt,
base-desa-delete,/desa/{id}/delete,base,desa,,,,admin,base-desa,Desa Delete,1,0,,,form6.pt,
base-desa-upload,/desa/upload,base,desa,,,,admin,base-desa,Desa Uload,1,0,,,form6.pt,
base-user-area,/user/area,base,user_area,,view_list,,admin,base-admin,User-area,1,0,,1,form.pt,
base-user-area-act,/user/area/{act}/act,base,user_area,,,,admin,base-user-area,User-area Action,1,0,,,json,
base-user-area-add,/user/area/add,base,user_area,,,,admin,base-user-area,User-area Add,1,0,,,form6.pt,
base-user-area-edit,/user/area/{id}/edit,base,user_area,,,,admin,base-user-area,User-area Edit,1,0,,,form6.pt,
base-user-area-view,/user/area/{id}/view,base,user_area,,,,admin,base-user-area,User-area View,1,0,,,form6.pt,
base-user-area-delete,/user/area/{id}/delete,base,user_area,,,,admin,base-user-area,User-area Delete,1,0,,,form6.pt,
$(document).ready(function () {
$('#parent_nm').bind('typeahead:selected', function (obj, datum, name) {
$('#parent_id').val(datum.id);
$('#parent_kd').val(datum.kode);
console.log(datum.kode);
});
$('#parent_nm').on('input',
function (e) {
let val = $('#parent_nm').val();
if (val === null || val === "") {
$('#parent_id').val("");
$('#parent_kd').val("");
}
});
});
\ No newline at end of file
......@@ -730,6 +730,7 @@ class BaseView(object):
bindings = self.get_bindings()
form = self.get_form(self.upload_schema, bindings=bindings)
kw["table"] = table
if self.req.POST:
if 'save' in self.req.POST:
# _here = get_params('temp_files', '/tmp')
......@@ -743,21 +744,20 @@ class BaseView(object):
file_name = upload.save(self.req, "upload", exts)
except:
self.ses.flash(f'File harus format {exts}', 'error')
return self.returned_form(form, table, **kw)
return self.returned_form(form, **kw)
fullpath = os.path.join(folder, file_name)
try:
self.save_upload(fullpath, **kw)
except Exception as e:
self.req.session.flash(str(e), 'error')
return self.returned_form(form, table, **kw)
return self.returned_form(form, **kw)
elif "cancel" in self.req.POST or 'batal' in self.req.POST or "close" in self.req.POST:
self.cancel_act()
return self.route_list()
return self.returned_form(form, table, **kw)
return self.returned_form(form, **kw)
def get_file(self, filename):
return open(filename)
......
import colander
from deform import (widget, )
from pyramid.i18n import TranslationStringFactory
from pyramid.view import (view_config, )
from ..widgets import widget_os
from .provinsi import provinsi_widget
from opensipkd.models import DBSession, ResDati2, kategori_dati2, ResProvinsi
from ..views import BaseView
_ = TranslationStringFactory("opensipkd")
SESS_ADD_FAILED = 'Tambah dati2 gagal'
SESS_EDIT_FAILED = 'Edit dati2 gagal'
@colander.deferred
def dati2_widget(node, kw):
values = kw.get('dati2_list', [])
url = node and hasattr(node, 'slave_url') and node.slave_url or ""
slave = node and hasattr(node, 'slave') and node.slave or ""
values.insert(0, ("", "Pilih Kab/Kota..."))
return widget_os.Select2MsWidget(values=values,
url=url,
slave=slave,
placeholder="Pilih Kota/Kabupaten"
)
class AddSchema(colander.Schema):
provinsi_id = colander.SchemaNode(colander.String(),
widget=provinsi_widget,
validator=colander.Length(max=32),
oid="kode")
kode = colander.SchemaNode(colander.String(),
validator=colander.Length(max=32), oid="kode")
kategori = colander.SchemaNode(colander.String(),
widget=widget.SelectWidget(
values=kategori_dati2),
validator=colander.Length(max=32),
oid="kode")
nama = colander.SchemaNode(colander.String(), oid="nama")
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(), missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class ListSchema(colander.Schema):
id = colander.SchemaNode(colander.Integer(),
title=_("action", default="Action"))
kode = colander.SchemaNode(colander.String(), width='100pt', title="Kode")
nama = colander.SchemaNode(colander.String(), title="Nama")
provinsi = colander.SchemaNode(colander.String(), field=ResProvinsi.nama)
class Views(BaseView):
def __init__(self, request):
super().__init__(request)
self.form_scripts = ""
self.form_params = dict(scripts="")
# self.list_url = 'dati2'
self.list_route = 'base-dati2'
self.add_schema = AddSchema
self.edit_schema = EditSchema
self.table = ResDati2
self.list_schema = ListSchema
def form_validator(self, form, value):
def err_kode():
raise colander.Invalid(form, 'Kode %s sudah digunakan oleh %s' % (
value['kode'], found.nama))
def err_nama():
raise colander.Invalid(form,
'Uraian %s sudah digunakan oleh kode %s' % (
value['nama'], found.kode))
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = DBSession.query(ResDati2).filter_by(id=uid)
row = q.first()
else:
row = None
q = ResDati2.query_kode(value['kode']) \
.filter(ResDati2.provinsi_id == value["provinsi_id"])
found = q.first()
if row:
if found and found.id != row.id:
err_kode()
elif found:
err_kode()
found = ResDati2.query_nama(value['nama']) \
.filter(ResDati2.provinsi_id == value["provinsi_id"]).first()
if found:
if found and found.id != row.id:
err_nama()
elif found:
err_nama()
def get_bindings(self, row=None):
return dict(provinsi_list=ResProvinsi.get_list())
def list_join(self, query):
return query.join(ResProvinsi, ResProvinsi.id == ResDati2.provinsi_id)
def next_act(self):
url_dict = self.req.matchdict
if url_dict['act'] == 'select':
provinsi_id = self.req.params["provinsi_id"]
data = ResDati2.get_list(provinsi_id)
result = {f"{k[0]}": k[1] for k in data}
return result
# @view_config(route_name='dati2-upload',
# renderer='templates/form.pt', permission='wilayah')
def view_upload(self):
return super().view_upload(exts=(".csv", ".tsv"))
# @view_config(route_name='dati2',
# renderer='templates/table.pt',
# permission='wilayah')
# def view_list(self):
# return super(ViewDati2, self).view_list()
# @view_config(route_name='dati2-view',
# renderer='templates/form.pt', permission='wilayah')
# def view_view(self): # row = query_id(request).first()
# return super(ViewDati2, self).view_view()
# @view_config(route_name='dati2-act', renderer='json')
# def view_act(self):
# return super().view_act()
# @view_config(route_name='dati2-add',
# renderer='templates/form.pt', permission='wilayah')
# def view_add(self):
# return super(ViewDati2, self).view_add()
# @view_config(route_name='dati2-edit',
# renderer='templates/form.pt', permission='wilayah')
# def view_edt(self):
# return super(ViewDati2, self).view_edit()
# @view_config(route_name='dati2-delete',
# renderer='templates/form.pt', permission='wilayah')
# def view_delete(self):
# return super(ViewDati2, self).view_delete()
import colander
from deform import (widget, )
from opensipkd.models import DBSession, ResDesa, kategori_desa, ResKecamatan, ResProvinsi, ResDati2
from opensipkd.tools.buttons import btn_upload, btn_close, btn_add
from pyramid.i18n import TranslationStringFactory
from pyramid.view import (view_config, )
from .dati2 import dati2_widget
from .kecamatan import kecamatan_widget
from .provinsi import provinsi_widget
from ..views import BaseView
_ = TranslationStringFactory("opensipkd")
SESS_ADD_FAILED = 'Tambah desa gagal'
SESS_EDIT_FAILED = 'Edit desa gagal'
@colander.deferred
def desa_widget(node, kw):
values = kw.get('desa_list', [])
return widget.Select2Widget(values=values,
placeholder="Pilih Desa/Kelurahan")
class AddSchema(colander.Schema):
provinsi_id = colander.SchemaNode(colander.String(),
widget=provinsi_widget,
validator=colander.Length(max=32),
oid="provinsi_id",
slave="dati2_id",
slave_url="/dati2/select/act?provinsi_id=",
title="Provinsi",
)
dati2_id = colander.SchemaNode(colander.String(),
widget=dati2_widget,
validator=colander.Length(max=32),
oid="dati2_id",
slave="kecamatan_id",
slave_url="/kecamatan/select/act?dati2_id=",
title="Kabupaten/Kota",
)
kecamatan_id = colander.SchemaNode(colander.String(),
widget=kecamatan_widget,
validator=colander.Length(max=32),
oid="kecamatan_id",
title="Kecamatan")
kode = colander.SchemaNode(colander.String(),
validator=colander.Length(max=32), oid="kode")
kategori = colander.SchemaNode(colander.String(),
widget=widget.SelectWidget(
values=kategori_desa),
validator=colander.Length(max=32), oid="kode")
nama = colander.SchemaNode(colander.String(), oid="nama")
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(), missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class ListSchema(colander.Schema):
id = colander.SchemaNode(colander.Integer(),
title=_("action", default="Action"))
kode = colander.SchemaNode(colander.String(), width='100pt', title="Kode")
nama = colander.SchemaNode(colander.String(), title="Nama")
kecamatan = colander.SchemaNode(colander.String(), field=ResKecamatan.nama)
class Views(BaseView):
def __init__(self, request):
super().__init__(request)
self.form_scripts = ""
self.form_params = dict(scripts="")
self.list_route = 'base-desa'
self.add_schema = AddSchema
self.edit_schema = EditSchema
self.table = ResDesa
self.list_schema = ListSchema
self.list_buttons = (btn_add, btn_close, btn_upload)
def form_validator(self, form, value):
def err_kode():
raise colander.Invalid(form, 'Kode %s sudah digunakan oleh %s' % (
value['kode'], found.nama))
def err_nama():
raise colander.Invalid(form,
'Uraian %s sudah digunakan oleh kode %s' % (
value['nama'], found.kode))
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = DBSession.query(ResDesa).filter_by(id=uid)
row = q.first()
else:
row = None
q = ResDesa.query_kode(value['kode']) \
.filter(ResDesa.kecamatan_id == value["kecamatan_id"])
found = q.first()
if row:
if found and found.id != row.id:
err_kode()
elif found:
err_kode()
found = ResDesa.query_nama(value['nama']) \
.filter(ResDesa.kecamatan_id == value["kecamatan_id"]).first()
if found:
if found and found.id != row.id:
err_nama()
elif found:
err_nama()
def get_bindings(self, row=None):
provinsi_list = ResProvinsi.get_list()
kecamatan = row and row.kecamatan or None
kecamatan_list = kecamatan and ResKecamatan.get_list(
kecamatan.dati2_id) or []
dati2 = kecamatan and kecamatan.dati2 or None
dati2_list = dati2 and ResDati2.get_list(dati2.provinsi_id) or []
return dict(
provinsi_list=provinsi_list,
dati2_list=dati2_list,
kecamatan_list=kecamatan_list,
)
def get_values(self, row, istime=False):
d = super().get_values(row, istime)
kecamatan = row and row.kecamatan or None
d["dati2_id"] = kecamatan and kecamatan.dati2_id or None
dati2 = kecamatan and kecamatan.dati2 or None
d["provinsi_id"] = dati2 and dati2.provinsi_id or None
return d
# @view_config(route_name='desa-view',
# renderer='templates/form.pt', permission='wilayah')
# def view_view(self):
# return super().view_view()
# @view_config(route_name='desa',
# renderer='templates/table.pt',
# permission='wilayah')
# def view_list(self):
# return super(ViewDesa, self).view_list()
def list_join(self, query):
return query.outerjoin(ResKecamatan)
# @view_config(route_name='desa-act', renderer='json',
# permission='view')
# def view_act(self):
# return super().view_act()
def next_act(self):
request = self.req
url_dict = request.matchdict
if url_dict['act'] == 'select':
kecamatan_id = request.params["kecamatan_id"]
data = ResDesa.get_list(kecamatan_id)
result = {f"{k[0]}": k[1] for k in data}
return result
# @view_config(route_name='desa-add',
# renderer='templates/form.pt', permission='wilayah')
# def view_add(self):
# return super(ViewDesa, self).view_add()
# @view_config(route_name='desa-edit',
# renderer='templates/form.pt', permission='wilayah')
# def view_edt(self):
# return super(ViewDesa, self).view_edit()
# @view_config(route_name='desa-delete',
# renderer='templates/form.pt', permission='wilayah')
# def view_delete(self):
# return super(ViewDesa, self).view_delete()
# @view_config(route_name='desa-upload',
# renderer='templates/form.pt', permission='wilayah')
def view_upload(self):
return super().view_upload(exts=('.csv', ".tsv"))
import colander
from deform import (widget, )
from opensipkd.base.views.provinsi import provinsi_widget
from opensipkd.models import DBSession, ResKecamatan, ResDati2, ResProvinsi
from opensipkd.tools.buttons import btn_upload, btn_close, btn_add
from pyramid.i18n import TranslationStringFactory
from pyramid.view import (view_config, )
from ..widgets import widget_os
from .dati2 import dati2_widget
from ..views import BaseView
SESS_ADD_FAILED = 'Tambah kecamatan gagal'
SESS_EDIT_FAILED = 'Edit kecamatan gagal'
_ = TranslationStringFactory("opensipkd")
@colander.deferred
def kecamatan_widget(node, kw):
values = kw.get('kecamatan_list', [])
url = node and hasattr(node, 'slave_url') and node.slave_url or ""
slave = node and hasattr(node, 'slave') and node.slave or ""
values.insert(0, ("", "Pilih Kecamatan..."))
return widget_os.Select2MsWidget(values=values,
url=url,
slave=slave,
placeholder="Pilih Kecamatan")
class AddSchema(colander.Schema):
provinsi_id = colander.SchemaNode(
colander.String(),
widget=provinsi_widget,
validator=colander.Length(max=32),
oid="provinsi_id",
slave="dati2_id",
slave_url="/dati2/select/act?provinsi_id=",
title="Provinsi",
)
dati2_id = colander.SchemaNode(
colander.String(),
widget=dati2_widget,
validator=colander.Length(max=32),
oid="dati2_id")
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32), oid="kode")
nama = colander.SchemaNode(colander.String(), oid="nama")
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(), missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class ListSchema(colander.Schema):
id = colander.SchemaNode(colander.Integer(),
title=_("action", default="Action"))
kode = colander.SchemaNode(colander.String(), width='100pt', title="Kode")
nama = colander.SchemaNode(colander.String(), title="Nama")
kabupaten = colander.SchemaNode(colander.String(), field=ResDati2.nama)
class Views(BaseView):
def __init__(self, request):
super(Views, self).__init__(request)
self.form_params = dict(scripts="")
self.list_route = 'base-kecamatan'
self.add_schema = AddSchema
self.edit_schema = EditSchema
self.table = ResKecamatan
self.list_schema = ListSchema
self.list_buttons = (btn_add, btn_close, btn_upload)
def form_validator(self, form, value):
def err_kode():
raise colander.Invalid(form, 'Kode %s sudah digunakan oleh %s' % (
value['kode'], found.nama))
def err_nama():
raise colander.Invalid(form,
'Uraian %s sudah digunakan oleh kode %s' % (
value['nama'], found.kode))
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = DBSession.query(ResKecamatan).filter_by(id=uid)
row = q.first()
else:
row = None
q = ResKecamatan.query_kode(value['kode']) \
.filter(ResKecamatan.dati2_id == value["dati2_id"])
found = q.first()
if row:
if found and found.id != row.id:
err_kode()
elif found:
err_kode()
found = ResKecamatan.query_nama(value['nama']) \
.filter(ResKecamatan.dati2_id == value["dati2_id"]).first()
if found:
if found and found.id != row.id:
err_nama()
elif found:
err_nama()
def next_act(self):
request = self.req
url_dict = request.matchdict
if url_dict['act'] == 'select':
dati2_id = request.params["dati2_id"]
data = ResKecamatan.get_list(dati2_id)
result = {f"{k[0]}": k[1] for k in data}
return result
def get_bindings(self, row=None):
provinsi_list = ResProvinsi.get_list()
kecamatan = row
dati2 = kecamatan and kecamatan.dati2 or None
dati2_list = dati2 and ResDati2.get_list(dati2.provinsi_id) or []
return dict(
provinsi_list=provinsi_list,
dati2_list=dati2_list,
)
def get_values(self, row, istime=False):
d = super().get_values(row, istime)
kecamatan = row
dati2 = kecamatan and kecamatan.dati2 or None
d["provinsi_id"] = dati2 and dati2.provinsi_id or None
return d
def list_join(self, query):
return query.join(ResDati2, ResDati2.id == ResKecamatan.dati2_id)
# @view_config(route_name='kecamatan-upload',
# renderer='templates/form.pt', permission='wilayah')
def view_upload(self):
return super().view_upload(exts=(".csv", ".tsv"))
# @view_config(route_name='kecamatan-view',
# renderer='templates/form.pt', permission='wilayah')
# def view_view(self): # row = query_id(request).first()
# return super().view_view()
# @view_config(route_name='kecamatan',
# renderer='templates/table.pt',
# permission='wilayah')
# def view_list(self):
# return super(Views, self).view_list()
# @view_config(route_name='kecamatan-act', renderer='json',
# permission='view')
# def view_act(self):
# return super().view_act()
# @view_config(route_name='kecamatan-add',
# renderer='templates/form.pt', permission='wilayah')
# def view_add(self):
# return super(Views, self).view_add()
# @view_config(route_name='kecamatan-edit',
# renderer='templates/form.pt', permission='wilayah')
# def view_edt(self):
# return super(Views, self).view_edit()
# @view_config(route_name='kecamatan-delete',
# renderer='templates/form.pt', permission='wilayah')
# def view_delete(self):
# return super(Views, self).view_delete()
import colander
from deform import (widget, )
from pyramid.i18n import TranslationStringFactory
from pyramid.view import (view_config, )
from ..widgets import widget_os
from opensipkd.models import DBSession, ResProvinsi, kategori_provinsi
from ..views import BaseView
_ = TranslationStringFactory("opensipkd")
SESS_ADD_FAILED = 'Tambah provinsi gagal'
SESS_EDIT_FAILED = 'Edit provinsi gagal'
@colander.deferred
def provinsi_widget(node, kw):
values = kw.get('provinsi_list', [])
url = node and hasattr(node, 'slave_url') and node.slave_url or ""
slave = node and hasattr(node, 'slave') and node.slave or ""
values.insert(0, ("", "Pilih Propinsi..."))
readonly = kw.get("readonly", False)
return widget_os.Select2MsWidget(values=values,
readonly=readonly,
url=url,
slave=slave,
placeholder="Pilih Provinsi")
class AddSchema(colander.Schema):
kode = colander.SchemaNode(colander.String(),
oid="kode",
validator=colander.Length(max=32), )
kategori = colander.SchemaNode(colander.String(),
widget=widget.SelectWidget(
values=kategori_provinsi),
validator=colander.Length(max=32), oid="kode")
nama = colander.SchemaNode(colander.String(), oid="nama")
ibu_kota = colander.SchemaNode(
colander.String(), oid="nama", missing=colander.drop)
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(), missing=colander.drop,
widget=widget.HiddenWidget(readonly=True),
visible=False)
class ListSchema(colander.Schema):
id = colander.SchemaNode(colander.Integer(),
title=_("action", default="Action"))
kode = colander.SchemaNode(colander.String(), width=100)
nama = colander.SchemaNode(colander.String())
ibu_kota = colander.SchemaNode(colander.String())
class Views(BaseView):
def __init__(self, request):
super().__init__(request)
self.form_scripts = ""
self.form_params = dict(scripts="")
self.list_route = 'base-provinsi'
self.list_schema = ListSchema
self.add_schema = AddSchema
self.edit_schema = EditSchema
self.table = ResProvinsi
########
# List #
########
def form_validator(self, form, value):
def err_kode():
raise colander.Invalid(form, 'Kode %s sudah digunakan oleh %s' % (
value['kode'], found.nama))
def err_nama():
raise colander.Invalid(form,
'Uraian %s sudah digunakan oleh kode %s' % (
value['nama'], found.kode))
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = DBSession.query(ResProvinsi).filter_by(id=uid)
row = q.first()
else:
row = None
q = ResProvinsi.query_kode(value['kode'])
found = q.first()
if row:
if found and found.id != row.id:
err_kode()
elif found:
err_kode()
found = ResProvinsi.query_nama(value['nama']).first()
if found:
if found and found.id != row.id:
err_nama()
elif found:
err_nama()
def view_upload(self):
return super().view_upload(exts=(".csv", ".tsv"))
# @view_config(route_name='provinsi-view',
# renderer='templates/form.pt', permission='provinsi')
# def view_view(self): # row = query_id(request).first()
# return super(ViewProvinsi, self).view_view()
# @view_config(route_name='provinsi',
# renderer='templates/table.pt',
# permission='provinsi')
# def view_list(self):
# return super(ViewProvinsi, self).view_list()
# @view_config(route_name='provinsi-act', renderer='json',
# permission='view')
# def view_act(self):
# return super(ViewProvinsi, self).view_act()
# @view_config(route_name='provinsi-add',
# renderer='templates/form.pt', permission='provinsi')
# def view_add(self):
# return super(ViewProvinsi, self).view_add()
# @view_config(route_name='provinsi-edit',
# renderer='templates/form.pt', permission='provinsi')
# def view_edt(self):
# return super(ViewProvinsi, self).view_edit()
# @view_config(route_name='provinsi-delete',
# renderer='templates/form.pt', permission='provinsi')
# def view_delete(self):
# return super(ViewProvinsi, self).view_delete()
......@@ -27,16 +27,21 @@ class ListSchema(colander.Schema):
class AddSchema(colander.Schema):
user_id = colander.SchemaNode(
colander.Integer(),
# widget=widget.SelectWidget(values=User.get_list()),
widget=widget.SelectWidget(), # (values=User.get_list()
oid="user_id",
title="User",
)
desa_id = colander.SchemaNode(
colander.Integer(),
# widget=widget.SelectWidget(values=ResDesa.get_list()),
widget=widget.SelectWidget(), # values=ResDesa.get_list()
oid="desa_id",
title="Kelurahan/Desa", )
def after_bind(self, schema, kw):
user_list = User.get_list()
desa_list = ResDesa.get_list()
schema['user_id'].widget.values = user_list
schema['desa_id'].widget.values = desa_list
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
......@@ -50,7 +55,7 @@ class Views(BaseView):
self.list_schema = ListSchema
self.add_schema = AddSchema
self.edit_schema = EditSchema
self.list_route = 'user-area'
self.list_route = 'base-user-area'
self.table = UserArea
def list_join(self, query, **kwargs):
......@@ -86,3 +91,4 @@ class Views(BaseView):
# permission='user-edit')
# def view_edit(self):
# return super().view_edit()
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!