Commit a30218b3 by aa.gusti

penambahan company

1 parent b4d257e4
......@@ -21,6 +21,9 @@ def upgrade():
helpers = context.opts['helpers']
if not helpers.table_has_column('users', 'partner_id'):
op.add_column('users', sa.Column('partner_id', sa.Integer))
if not helpers.table_has_column('partner', 'company_id'):
op.add_column('partner', sa.Column('company_id', sa.Integer))
def downgrade():
......
......@@ -6,5 +6,36 @@ from .partner import *
from .departemen import *
# from .meta import *
from .pegawai import *
# from .targets import *
# from .wilayah import *
ALL_TABLES = {}
for sub_class in Base.__subclasses__():
if hasattr(sub_class, "__tablename__"):
tablename = sub_class.__tablename__
if tablename not in ALL_TABLES:
ALL_TABLES.update({tablename: sub_class})
def query_table(table_name, fields=None, domain=None):
cls = ALL_TABLES[table_name]
if fields:
query = DBSession.query().select_from(cls)
for field in fields:
query = query.add_columns(*[getattr(cls, c) for c in fields])
else:
query = DBSession.query(cls)
if domain:
filter_expressions = []
for d in domain:
field = getattr(cls, d[0])
operator = d[1]
value = d[2]
filter_expressions.append(field.op(operator)(value))
query = query.filter(
*[
e for i, e in enumerate(filter_expressions)
if e is not None]
)
return query
......@@ -73,8 +73,18 @@ class DefaultModel(CommonModel):
return db_session.query(func.count('id')).scalar()
@classmethod
def query(cls, db_session=DBSession):
return db_session.query(cls)
def query(cls, db_session=DBSession, filters=None):
query = db_session.query(cls)
if filters:
filter_expressions = []
for d in filters:
field = getattr(cls, d[0])
operator = d[1]
value = d[2]
filter_expressions.append(field.op(operator)(value))
query = query.filter(
*[e for i, e in enumerate(filter_expressions) if e is not None])
return query
@classmethod
def query_id(cls, row_id, db_session=DBSession):
......
from sqlalchemy import Column, String, SmallInteger, Integer, DateTime, ForeignKey
from ziggurat_foundations.tests import User
from .base import NamaModel, DefaultModel, DBSession, KodeModel
from .meta import Base
from .base import NamaModel, DefaultModel, DBSession, KodeModel
from .partner import Partner
class Route(Base, NamaModel):
......@@ -37,3 +38,8 @@ class UserDeviceModel(Base, KodeModel):
token = Column(String(256))
logged_in = Column(Integer)
las_login_date = Column(DateTime)
class ResCompany(Base, NamaModel):
__tablename__ = 'company'
partner_id = Column(Integer, ForeignKey(Partner.id))
\ No newline at end of file
......@@ -8,7 +8,7 @@ from sqlalchemy import (
from opensipkd.base.models.common import NamaModel
from .wilayah import ResProvinsi, ResDesa, ResKecamatan, ResDati2
from ..models import (Base)
from .meta import (Base)
class PartnerModel(NamaModel):
......@@ -20,6 +20,7 @@ class PartnerModel(NamaModel):
fax = Column(String(16))
mobile = Column(String(16))
website = Column(String(64))
# pic = Column(String(16))
# pic_mobile = Column(String(16))
# pic_email = Column(String(16))
......@@ -63,6 +64,8 @@ class Partner(Base, PartnerModel):
dati2_id = Column(Integer, ForeignKey(ResDati2.id))
kecamatan_id = Column(Integer, ForeignKey(ResKecamatan.id))
desa_id = Column(Integer, ForeignKey(ResDesa.id))
company_id = Column(Integer)
# npwp = Column(String(16))
# npwpd = Column(String(16))
#
......
from opensipkd.base.models import TABLE_ARGS
from sqlalchemy import (
Column,
ForeignKey,
......@@ -5,9 +6,8 @@ from sqlalchemy import (
SmallInteger,
)
from ..models import Base
from ..models import (NamaModel,
TABLE_ARGS)
from .meta import Base
from .common import (NamaModel)
kategori_provinsi = (
("provinsi", "Provinsi"),
......
......@@ -160,3 +160,10 @@ desa-view,/desa/{id}/view,Desa/Kelurahan View,1,0
desa-delete,/desa/{id}/delete,Desa/Kelurahan Hapus,1,0
desa-act,/desa/{act}/act,Desa/Kelurahan Act,1,0
desa-rpt,/desa/{rpt}/rpt,Desa/Kelurahan Report,1,0
company,/company,Pemda,1,0
company-add,/company/add,Pemda Add,1,0
company-edit,/company/{id}/edit,Pemda Edit,1,0
company-view,/company/{id}/view,Pemda View,1,0
company-delete,/company/{id}/delete,Pemda Hapus,1,0
company-act,/company/{act}/act,Pemda Act,1,0
company-rpt,/company/{rpt}/rpt,Pemda Report,1,0
import json
import colander
from deform import (widget, Form, ValidationFailure, )
from opensipkd.base.models import ResProvinsi, ResDati2, ResDesa
from opensipkd.tools.buttons import btn_close, btn_cancel, btn_save
from pyramid.view import (view_config, )
from .kecamatan import kecamatan_widget
from .partner_base import PartnerSchema
from ..models import DBSession, ResCompany, ResKecamatan, Partner
from ..views import ColumnDT, DataTables, BaseView
# from opensipkd.base.views import partner
SESS_ADD_FAILED = 'Tambah pemda gagal'
SESS_EDIT_FAILED = 'Edit pemda gagal'
@colander.deferred
def company_widget(node, kw):
values = kw.get('company_list', [])
print(values)
values.insert(0, ("", "Select Pemda"))
return widget.Select2Widget(values=values,
placeholder="Pilih Organisasi")
class AddSchema(PartnerSchema):
def after_bind(self, node, kw):
self["email"].missing = colander.drop
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(), missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
partner_id = colander.SchemaNode(colander.Integer(),
widget=widget.HiddenWidget(),
missing=colander.drop,
oid="partner_id")
class ViewCompany(BaseView):
def __init__(self, request):
super(ViewCompany, self).__init__(request)
self.form_scripts = ""
self.list_col_defs = json.dumps(
[{"searchable": False, "visible": False, "targets": [0], }, {
"searchable": True, "orderable": True, "targets": [1, 2],
}])
self.list_cols = [{'title': "ID", 'data': "id"},
{'title': "Kode", 'data': "kode", 'width': '100pt'},
{'title': "Nama", 'data': "nama"}, ]
self.list_buttons = 'btn_view, btn_add, btn_edit, btn_delete, ' \
'btn_close'
self.form_params = dict(scripts="")
self.list_url = 'company'
self.list_route = 'company'
self.add_schema = AddSchema
self.edit_schema = EditSchema
self.table = ResCompany
########
# 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(ResCompany).filter_by(id=uid)
row = q.first()
else:
row = None
q = ResCompany.query_kode(value['kode'])
found = q.first()
if row:
if found and found.id != row.id:
err_kode()
elif found:
err_kode()
found = ResCompany.query_nama(value['nama']).first()
if found:
if found and found.id != row.id:
err_nama()
elif found:
err_nama()
def get_form(self, class_form, row=None, buttons=(btn_save, btn_cancel)):
schema = class_form(validator=self.form_validator)
provinsi_list = ResProvinsi.get_list()
dati2_list = row and row.provinsi_id and ResDati2.get_list(row.provinsi_id) or []
kecamatan_list = row and row.dati2_id and ResKecamatan.get_list(row.dati2_id) or []
desa_list = row and row.kecamatan_id and ResDesa.get_list(row.kecamatan_id) or []
schema = schema.bind(provinsi_list=provinsi_list,
dati2_list=dati2_list,
kecamatan_list=kecamatan_list,
desa_list=desa_list
)
schema.request = self.req
return Form(schema, buttons=buttons)
@view_config(route_name='company-view',
renderer='templates/form_input.pt', permission='company')
def view_view(self): # row = query_id(request).first()
request = self.req
row = self.query_id().first()
if not row:
return self.id_not_found()
form = self.get_form(EditSchema, buttons=(btn_close,))
if request.POST:
return self.route_list()
form.set_appstruct(self.get_values(row))
return dict(form=form.render(readonly=True), scripts=self.form_scripts)
@view_config(route_name='company',
renderer='templates/list.pt',
permission='company')
def view_list(self):
return super().view_list()
@view_config(route_name='company-act', renderer='json',
permission='view')
def view_act(self):
request = self.req
url_dict = request.matchdict
if url_dict['act'] == 'grid':
columns = [ColumnDT(ResCompany.id, mData='id'),
ColumnDT(ResCompany.kode, mData='kode'),
ColumnDT(ResCompany.nama, mData='nama'), ]
query = DBSession.query().select_from(ResCompany)
row_table = DataTables(request.GET, query, columns)
return row_table.output_result()
@view_config(route_name='company-add',
renderer='templates/form_input.pt', permission='company')
def view_add(self):
return super(ViewCompany, self).view_add()
########
# Edit #
########
@view_config(route_name='company-edit',
renderer='templates/form_input.pt', permission='company')
def view_edt(self):
row = self.query_id().first()
if not row:
return self.id_not_found()
part = Partner.query_id(row.partner_id).first()
form = self.get_form(self.edit_schema, row=part)
if self.req.POST:
if 'save' in self.req.POST:
controls = self.req.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
form.set_appstruct(e.cstruct)
return dict(form=form.render(), scripts=self.form_scripts)
self.save_request(dict(controls), row)
return self.route_list()
values = part and part.to_dict() or {}
values.update(row.to_dict())
form.set_appstruct(values)
return dict(form=form.render(), scripts=self.form_scripts)
@view_config(route_name='company-delete',
renderer='templates/form_input.pt', permission='company')
def view_delete(self):
return super(ViewCompany, self).view_delete()
def save_request(self, values, row=None):
if 'partner_id' in values:
part = Partner.query_id(values['partner_id']).first()
values["id"] = part.id
else:
part = None
if "id" in values:
del values["id"]
from .partner import save as partner_save
part = partner_save(values, self.req.user, part)
if part:
values["partner_id"] = part.id
if "id" in self.req.matchdict:
values["id"] = self.req.matchdict["id"]
row = self.save(values, self.req.user, row)
return row
......@@ -16,21 +16,15 @@ SESS_EDIT_FAILED = 'Edit dati2 gagal'
@colander.deferred
def dati2_widget(node, kw):
default_url = "/kecamatan/select/act?dati2_id="
default_slave = "kecamatan_id"
values = kw.get('dati2_list', [])
url = kw.get('dati2_url', [])
slave = kw.get('dati2_slave', [])
if not url:
url = default_url
if not slave:
slave = default_slave
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)
slave=slave,
placeholder="Pilih Kota/Kabupaten"
)
class AddSchema(colander.Schema):
......@@ -161,7 +155,6 @@ class ViewDati2(BaseView):
result = {f"{k[0]}": k[1] for k in data}
return result
@view_config(route_name='dati2-add',
renderer='templates/form_input.pt', permission='dati2')
def view_add(self):
......
......@@ -16,7 +16,8 @@ SESS_EDIT_FAILED = 'Edit desa gagal'
@colander.deferred
def desa_widget(node, kw):
values = kw.get('desa_list', [])
return widget.Select2Widget(values=values)
return widget.Select2Widget(values=values,
placeholder="Pilih Desa/Kelurahan")
class AddSchema(colander.Schema):
......
......@@ -16,15 +16,9 @@ SESS_EDIT_FAILED = 'Edit kecamatan gagal'
@colander.deferred
def kecamatan_widget(node, kw):
default_url = "/desa/select/act?kecamatan_id="
default_slave = "desa_id"
values = kw.get('kecamatan_list', [])
url = kw.get('kecamatan_url', [])
slave = kw.get('kecamatan_slave', [])
if not url:
url = default_url
if not slave:
slave = default_slave
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,
......
......@@ -7,6 +7,8 @@ from deform import (
widget,
ValidationFailure,
)
from opensipkd.base.models.common import ResCompany
from opensipkd.base.models import User, ResProvinsi, ResDati2, ResKecamatan, ResDesa
from pyramid.httpexceptions import (
HTTPFound,
......@@ -19,103 +21,18 @@ from opensipkd.tools.buttons import btn_save, btn_cancel, btn_delete
from .dati2 import dati2_widget
from .desa import desa_widget
from .kecamatan import kecamatan_widget
from .partner_base import PartnerSchema
from .provinsi import provinsi_widget
from ..models import DBSession
from ..models import Partner
# from ..models.partner import PartnerUserModel
from ..views import ColumnDT, DataTables, BaseView
from .company import company_widget
SESS_ADD_FAILED = 'Tambah partner gagal'
SESS_EDIT_FAILED = 'Edit partner gagal'
class AddSchema(colander.Schema):
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
oid="kode",
title="Kode")
nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=64),
oid="nama")
alamat_1 = colander.SchemaNode(
colander.String(),
missing=colander.drop,
validator=colander.Length(max=128),
oid="alamat_1")
alamat_2 = colander.SchemaNode(
colander.String(),
missing=colander.drop,
validator=colander.Length(max=128),
oid="alamat_2")
# kelurahan = colander.SchemaNode(
# colander.String(),
# missing=colander.drop,
# validator=colander.Length(max=64),
# oid="kelurahan")
# kecamatan = colander.SchemaNode(
# colander.String(),
# missing=colander.drop,
# validator=colander.Length(max=64),
# oid="kecamatan")
# kota = colander.SchemaNode(
# colander.String(),
# validator=colander.Length(max=64),
# missing=colander.drop,
# oid="kota")
# provinsi = colander.SchemaNode(
# colander.String(),
# validator=colander.Length(max=64),
# missing=colander.drop,
# oid="provinsi")
provinsi_id = colander.SchemaNode(
colander.Integer(),
widget=provinsi_widget,
missing=colander.drop,
oid="provinsi_id",
url="",
slave="dati2_id",
)
dati2_id = colander.SchemaNode(
colander.Integer(),
widget=dati2_widget,
missing=colander.drop,
oid="dati2_id")
kecamatan_id = colander.SchemaNode(
colander.Integer(),
missing=colander.drop,
widget=kecamatan_widget,
oid="kecamatan_id")
desa_id = colander.SchemaNode(
colander.Integer(),
widget=desa_widget,
missing=colander.drop,
oid="desa_id")
email = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128),
oid="email")
phone = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=16),
missing=colander.drop,
oid="phone")
fax = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=16),
missing=colander.drop,
oid="fax")
mobile = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=16),
missing=colander.drop,
oid="mobile")
website = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128),
missing=colander.drop,
oid="website")
class AddSchema(PartnerSchema):
is_vendor = colander.SchemaNode(
colander.Boolean(),
oid="is_vendor",
......@@ -124,9 +41,11 @@ class AddSchema(colander.Schema):
colander.Boolean(),
oid="is_customer",
title="Customer")
status = colander.SchemaNode(
colander.Boolean(),
oid="status")
company_id = colander.SchemaNode(
colander.Integer(),
widget=company_widget,
oid="company_id",
title="Company")
class EditSchema(AddSchema):
......@@ -340,19 +259,20 @@ def form_validator(form, value):
def get_form(request, class_form, row=None, buttons=(btn_save, btn_cancel)):
schema = class_form(validator=form_validator)
provinsi_list = ResProvinsi.get_list()
dati2_list = row and row.provinsi_id and ResDati2.get_list(row.provinsi_id) or []
kecamatan_list = row and row.dati2_id and ResKecamatan.get_list(row.dati2_id) or []
desa_list = row and row.kecamatan_id and ResDesa.get_list(row.kecamatan_id) or []
schema = schema.bind(provinsi_list=provinsi_list,
dati2_list=dati2_list,
kecamatan_list=kecamatan_list,
desa_list=desa_list
)
schema = class_form(validator=form_validator)
schema = schema.bind(
request=request,
provinsi_list=provinsi_list,
dati2_list=dati2_list,
kecamatan_list=kecamatan_list,
desa_list=desa_list,
company_list=ResCompany.get_list()
)
schema.request = request
# if row:
# schema.deserialize(row)
return Form(schema, buttons=buttons)
......
import colander
from opensipkd.base.views.dati2 import dati2_widget
from opensipkd.base.views.desa import desa_widget
from opensipkd.base.views.kecamatan import kecamatan_widget
from opensipkd.base.views.provinsi import provinsi_widget
class PartnerSchema(colander.Schema):
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
oid="kode",
title="Kode")
nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=64),
oid="nama")
alamat_1 = colander.SchemaNode(
colander.String(),
missing=colander.drop,
validator=colander.Length(max=128),
oid="alamat_1")
alamat_2 = colander.SchemaNode(
colander.String(),
missing=colander.drop,
validator=colander.Length(max=128),
oid="alamat_2")
# kelurahan = colander.SchemaNode(
# colander.String(),
# missing=colander.drop,
# validator=colander.Length(max=64),
# oid="kelurahan")
# kecamatan = colander.SchemaNode(
# colander.String(),
# missing=colander.drop,
# validator=colander.Length(max=64),
# oid="kecamatan")
# kota = colander.SchemaNode(
# colander.String(),
# validator=colander.Length(max=64),
# missing=colander.drop,
# oid="kota")
# provinsi = colander.SchemaNode(
# colander.String(),
# validator=colander.Length(max=64),
# missing=colander.drop,
# oid="provinsi")
provinsi_id = colander.SchemaNode(
colander.Integer(),
widget=provinsi_widget,
missing=colander.drop,
oid="provinsi_id",
slave="dati2_id",
slave_url="/dati2/select/act?provinsi_id=",
title="Provinsi",
)
dati2_id = colander.SchemaNode(
colander.Integer(),
widget=dati2_widget,
missing=colander.drop,
slave="kecamatan_id",
slave_url="/kecamatan/select/act?dati2_id=",
title="Kab/Kota",
oid="dati2_id")
kecamatan_id = colander.SchemaNode(
colander.Integer(),
missing=colander.drop,
widget=kecamatan_widget,
slave="desa_id",
slave_url="/desa/select/act?kecamatan_id=",
title="Kecamatan",
oid="kecamatan_id")
desa_id = colander.SchemaNode(
colander.Integer(),
widget=desa_widget,
missing=colander.drop,
title="Desa/Kelurahan",
oid="desa_id")
email = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128),
oid="email")
phone = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=16),
missing=colander.drop,
oid="phone")
fax = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=16),
missing=colander.drop,
oid="fax")
mobile = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=16),
missing=colander.drop,
oid="mobile")
website = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128),
missing=colander.drop,
oid="website")
status = colander.SchemaNode(
colander.Boolean(),
oid="status")
......@@ -18,17 +18,10 @@ SESS_EDIT_FAILED = 'Edit provinsi gagal'
@colander.deferred
def provinsi_widget(node, kw):
default_url = "/dati2/select/act?provinsi_id="
default_slave = "dati2_id"
values = kw.get('provinsi_list', [])
url = kw.get('provinsi_url', [])
slave = kw.get('provinsi_slave', [])
if not url:
url = default_url
if not slave:
slave = default_slave
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..."))
return widget_os.Select2MsWidget(values=values,
url=url,
slave=slave,
......
......@@ -7,6 +7,7 @@
param_path ['parameter', 'parameter-add', 'parameter-edit', 'parameter-view', 'parameter-delete'];
dep_path ['departemen', 'departemen-add', 'departemen-edit', 'departemen-view', 'departemen-delete'];
partner_path ['partner', 'partner-add', 'partner-edt', 'partner-view', 'partner-del'];
company_path ['company', 'company-add', 'company-edt', 'company-view', 'company-del'];
part_dep_path ['partner-departemen', 'partner-departemen-add', 'partner-departemen-edit', 'partner-departemen-view',
'partner-departemen-delete'];
jabatan_path ['jabatan', 'jabatan-add', 'jabatan-edit', 'jabatan-view', 'jabatan-delete'];
......@@ -202,6 +203,9 @@
<li tal:condition="has_permission(request, 'parameter')"
tal:attributes="class request.matched_route.name in param_path and 'active'">
<a href="${home}/parameter">Parameter</a></li>
<li tal:condition="has_permission(request, 'company')"
tal:attributes="class request.matched_route.name in company_path and 'active'">
<a href="${home}/company">Pemerintah</a></li>
<li tal:condition="has_permission(request, 'eselon')"
tal:attributes="class request.matched_route.name in eselon_path and 'active'">
<a href="${home}/eselon">Eselon</a></li>
......
......@@ -71,6 +71,8 @@
function(oid) {
$('#' + oid).change(function () {
$("#${slave}").val("");
$("#${slave}").empty();
$("#${slave}").append('<option value="" selected disabled>Pilih Data...</option>');
var value = $(this).val();
if (value) {
$.ajax({
......@@ -78,8 +80,6 @@
url: "${url}" + value,
success: function (res) {
if (res) {
$("#${slave}").empty();
$("#${slave}").append('<option value="">Pilih Data...</option>');
$.each(res, function (key, value) {
$("#${slave}").append('<option value="' + key + '">' + value + '</option>');
});
......@@ -88,9 +88,8 @@
}
}
});
} else {
$("#${slave}").empty();
}
$("#${slave}").change();
});
});
</script>
......
import unittest
from pyramid import testing
class MyTest(unittest.TestCase):
def setUp(self):
self.config = testing.setUp()
def tearDown(self):
testing.tearDown()
def test_view_fn_query_table(self):
from pyramid.httpexceptions import HTTPForbidden
from opensipkd.base.models import query_table
res = query_table('routes', ['id'])
print(res.first())
# , [('id', '=', 1)]
# self.config.testing_securitypolicy(userid='hank',
# permissive=False)
# request = testing.DummyRequest()
# request.context = testing.DummyResource()
# self.assertRaises(HTTPForbidden, view_fn, request)
# def test_view_fn_allowed(self):
# from my.package import view_fn
# self.config.testing_securitypolicy(userid='hank',
# permissive=True)
# request = testing.DummyRequest()
# request.context = testing.DummyResource()
# response = view_fn(request)
# self.assertEqual(response, {'greeting':'hello'})
import unittest
from configparser import ConfigParser
import transaction
from pyramid import testing
from sqlalchemy import create_engine
from opensipkd.base.models import (
DBSession,
Base
)
from opensipkd.base import main
# def _initTestingDB():
# engine = create_engine('postgresql://aagusti:a@localhost/demo')
# Base.metadata.create_all(engine)
# DBSession.configure(bind=engine)
# # with transaction.manager:
# # model = Page('FrontPage', 'This is the front page')
# # DBSession.add(model)
# return DBSession
def settings():
config = ConfigParser()
config.read('/home/aagusti/apps/base/test.ini')
dictionary = {}
for section in config.sections():
dictionary[section] = {}
for option in config.options(section):
try:
dictionary[section][option] = config.get(section, option)
except:
pass
return dictionary
class PageModelTests(unittest.TestCase):
def setUp(self):
self.config = testing.setUp()
config = settings()
main(self.config, **config['app:main'])
def tearDown(self):
# self.session.remove()
testing.tearDown()
def test_view_fn_query_table(self):
from pyramid.httpexceptions import HTTPForbidden
from opensipkd.base.models import query_table
res = query_table('routes', ['id'])
row = res.first()
assert row.id == 1
def test_view_fn_query_table2(self):
from pyramid.httpexceptions import HTTPForbidden
from opensipkd.base.models import query_table
res = query_table('routes', ['id', 'nama'], [('id', '=', 2)])
row = res.first()
assert row.id == 2
if __name__ == "__main__":
print("START")
config = testing.setUp()
cfg = settings()
main(config, **cfg['app:main'])
from opensipkd.base.models import query_table
res = query_table('routes', ['id', 'nama', 'kode'],
[('|', ('nama', 'ilike', "a%"),
('kode', 'ilike', 'g%'))])
for row in res.all():
print(row.id, row.nama, row.kode)
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!