Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit b4d257e4
authored
Dec 16, 2021
by
aa.gusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
wilayah to partner
1 parent
418142c3
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
337 additions
and
36 deletions
opensipkd/base/models/__init__.py
opensipkd/base/models/base.py
opensipkd/base/models/partner.py
opensipkd/base/models/wilayah.py
opensipkd/base/views/dati2.py
opensipkd/base/views/desa.py
opensipkd/base/views/kecamatan.py
opensipkd/base/views/partner.py
opensipkd/base/views/provinsi.py
opensipkd/base/views/templates/base_wilayah.pt
opensipkd/base/views/widgets/chg_password.pt → opensipkd/base/views/templates/chg_password.pt
opensipkd/base/views/widget_os.py
opensipkd/base/views/widgets/select2_ms.pt
opensipkd/base/models/__init__.py
View file @
b4d257e
from
.base
import
*
from
.base
import
*
from
.common
import
*
from
.common
import
*
from
.users
import
*
from
.users
import
*
from
.wilayah
import
*
from
.partner
import
*
from
.partner
import
*
from
.departemen
import
*
from
.departemen
import
*
# from .meta import *
# from .meta import *
from
.pegawai
import
*
from
.pegawai
import
*
from
.wilayah
import
*
# from .targets import *
# from .targets import *
# from .wilayah import *
# from .wilayah import *
opensipkd/base/models/base.py
View file @
b4d257e
...
@@ -170,5 +170,9 @@ class NamaModel(KodeModel):
...
@@ -170,5 +170,9 @@ class NamaModel(KodeModel):
return
cls
.
query_nama
(
nama
,
db_session
)
.
first
()
return
cls
.
query_nama
(
nama
,
db_session
)
.
first
()
@classmethod
@classmethod
def
query_list
(
cls
):
return
DBSession
.
query
(
cls
.
id
,
cls
.
nama
)
.
order_by
(
cls
.
nama
)
@classmethod
def
get_list
(
cls
):
def
get_list
(
cls
):
return
DBSession
.
query
(
cls
.
id
,
cls
.
nama
)
.
order_by
(
cls
.
nama
)
.
all
()
return
cls
.
query_list
(
)
.
all
()
opensipkd/base/models/partner.py
View file @
b4d257e
...
@@ -3,10 +3,11 @@ from sqlalchemy import (
...
@@ -3,10 +3,11 @@ from sqlalchemy import (
Integer
,
Integer
,
String
,
String
,
SmallInteger
,
SmallInteger
,
DateTime
DateTime
,
ForeignKey
)
)
from
opensipkd.base.models.common
import
NamaModel
from
opensipkd.base.models.common
import
NamaModel
from
.wilayah
import
ResProvinsi
,
ResDesa
,
ResKecamatan
,
ResDati2
from
..models
import
(
Base
)
from
..models
import
(
Base
)
...
@@ -58,6 +59,10 @@ class Partner(Base, PartnerModel):
...
@@ -58,6 +59,10 @@ class Partner(Base, PartnerModel):
perkawinan
=
Column
(
String
(
2
))
perkawinan
=
Column
(
String
(
2
))
pekerjaan
=
Column
(
String
(
32
))
pekerjaan
=
Column
(
String
(
32
))
kewarganegaraan
=
Column
(
String
(
10
))
kewarganegaraan
=
Column
(
String
(
10
))
provinsi_id
=
Column
(
Integer
,
ForeignKey
(
ResProvinsi
.
id
))
dati2_id
=
Column
(
Integer
,
ForeignKey
(
ResDati2
.
id
))
kecamatan_id
=
Column
(
Integer
,
ForeignKey
(
ResKecamatan
.
id
))
desa_id
=
Column
(
Integer
,
ForeignKey
(
ResDesa
.
id
))
# npwp = Column(String(16))
# npwp = Column(String(16))
# npwpd = Column(String(16))
# npwpd = Column(String(16))
#
#
...
...
opensipkd/base/models/wilayah.py
View file @
b4d257e
...
@@ -22,7 +22,6 @@ class ResProvinsi(Base, NamaModel):
...
@@ -22,7 +22,6 @@ class ResProvinsi(Base, NamaModel):
ibu_kota
=
Column
(
String
(
64
))
ibu_kota
=
Column
(
String
(
64
))
kategori_dati2
=
(
kategori_dati2
=
(
(
"kota"
,
"Kota"
),
(
"kota"
,
"Kota"
),
(
"kabupaten"
,
"Kabupaten"
),
(
"kabupaten"
,
"Kabupaten"
),
...
@@ -38,12 +37,24 @@ class ResDati2(Base, NamaModel):
...
@@ -38,12 +37,24 @@ class ResDati2(Base, NamaModel):
ibu_kota
=
Column
(
String
(
64
))
ibu_kota
=
Column
(
String
(
64
))
provinsi_id
=
Column
(
SmallInteger
,
ForeignKey
(
ResProvinsi
.
id
))
provinsi_id
=
Column
(
SmallInteger
,
ForeignKey
(
ResProvinsi
.
id
))
@classmethod
def
get_list
(
cls
,
provinsi_id
):
qry
=
cls
.
query_list
()
if
provinsi_id
:
qry
=
qry
.
filter
(
cls
.
provinsi_id
==
provinsi_id
)
return
qry
.
all
()
class
ResKecamatan
(
Base
,
NamaModel
):
class
ResKecamatan
(
Base
,
NamaModel
):
__tablename__
=
'res_kecamatan'
__tablename__
=
'res_kecamatan'
__table_args__
=
(
TABLE_ARGS
,)
__table_args__
=
(
TABLE_ARGS
,)
ibu_kota
=
Column
(
String
(
64
))
ibu_kota
=
Column
(
String
(
64
))
dati2_id
=
Column
(
SmallInteger
,
ForeignKey
(
ResDati2
.
id
))
dati2_id
=
Column
(
SmallInteger
,
ForeignKey
(
ResDati2
.
id
))
@classmethod
def
get_list
(
cls
,
dati2_id
):
qry
=
cls
.
query_list
()
if
dati2_id
:
qry
=
qry
.
filter
(
cls
.
dati2_id
==
dati2_id
)
return
qry
.
all
()
kategori_desa
=
(
kategori_desa
=
(
...
@@ -57,3 +68,10 @@ class ResDesa(Base, NamaModel):
...
@@ -57,3 +68,10 @@ class ResDesa(Base, NamaModel):
__table_args__
=
(
TABLE_ARGS
,)
__table_args__
=
(
TABLE_ARGS
,)
kategori
=
Column
(
String
(
32
))
kategori
=
Column
(
String
(
32
))
kecamatan_id
=
Column
(
SmallInteger
,
ForeignKey
(
ResKecamatan
.
id
))
kecamatan_id
=
Column
(
SmallInteger
,
ForeignKey
(
ResKecamatan
.
id
))
@classmethod
def
get_list
(
cls
,
kecamatan_id
):
qry
=
cls
.
query_list
()
if
kecamatan_id
:
qry
=
qry
.
filter
(
cls
.
kecamatan_id
==
kecamatan_id
)
return
qry
.
all
()
opensipkd/base/views/dati2.py
View file @
b4d257e
...
@@ -5,6 +5,7 @@ from deform import (widget, Form, )
...
@@ -5,6 +5,7 @@ from deform import (widget, Form, )
from
opensipkd.tools.buttons
import
btn_close
,
btn_cancel
,
btn_save
from
opensipkd.tools.buttons
import
btn_close
,
btn_cancel
,
btn_save
from
pyramid.view
import
(
view_config
,
)
from
pyramid.view
import
(
view_config
,
)
from
.
import
widget_os
from
.provinsi
import
provinsi_widget
from
.provinsi
import
provinsi_widget
from
..models
import
DBSession
,
ResDati2
,
kategori_dati2
,
ResProvinsi
from
..models
import
DBSession
,
ResDati2
,
kategori_dati2
,
ResProvinsi
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
..views
import
ColumnDT
,
DataTables
,
BaseView
...
@@ -15,8 +16,21 @@ SESS_EDIT_FAILED = 'Edit dati2 gagal'
...
@@ -15,8 +16,21 @@ SESS_EDIT_FAILED = 'Edit dati2 gagal'
@colander.deferred
@colander.deferred
def
dati2_widget
(
node
,
kw
):
def
dati2_widget
(
node
,
kw
):
default_url
=
"/kecamatan/select/act?dati2_id="
default_slave
=
"kecamatan_id"
values
=
kw
.
get
(
'dati2_list'
,
[])
values
=
kw
.
get
(
'dati2_list'
,
[])
return
widget
.
Select2Widget
(
values
=
values
)
url
=
kw
.
get
(
'dati2_url'
,
[])
slave
=
kw
.
get
(
'dati2_slave'
,
[])
if
not
url
:
url
=
default_url
if
not
slave
:
slave
=
default_slave
values
.
insert
(
0
,
(
""
,
"Pilih Kab/Kota..."
))
return
widget_os
.
Select2MsWidget
(
values
=
values
,
url
=
url
,
slave
=
slave
)
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
...
@@ -136,11 +150,17 @@ class ViewDati2(BaseView):
...
@@ -136,11 +150,17 @@ class ViewDati2(BaseView):
ColumnDT
(
ResDati2
.
kode
,
mData
=
'kode'
),
ColumnDT
(
ResDati2
.
kode
,
mData
=
'kode'
),
ColumnDT
(
ResDati2
.
nama
,
mData
=
'nama'
),
ColumnDT
(
ResDati2
.
nama
,
mData
=
'nama'
),
ColumnDT
(
ResDati2
.
status
,
mData
=
'status'
),
ColumnDT
(
ResDati2
.
status
,
mData
=
'status'
),
ColumnDT
(
ResProvinsi
.
nama
,
mData
=
'provinsi'
),]
ColumnDT
(
ResProvinsi
.
nama
,
mData
=
'provinsi'
),
]
query
=
DBSession
.
query
()
.
select_from
(
ResDati2
)
\
query
=
DBSession
.
query
()
.
select_from
(
ResDati2
)
\
.
join
(
ResProvinsi
,
ResProvinsi
.
id
==
ResDati2
.
provinsi_id
)
.
join
(
ResProvinsi
,
ResProvinsi
.
id
==
ResDati2
.
provinsi_id
)
row_table
=
DataTables
(
request
.
GET
,
query
,
columns
)
row_table
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
row_table
.
output_result
()
return
row_table
.
output_result
()
elif
url_dict
[
'act'
]
==
'select'
:
provinsi_id
=
request
.
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-add'
,
@view_config
(
route_name
=
'dati2-add'
,
renderer
=
'templates/form_input.pt'
,
permission
=
'dati2'
)
renderer
=
'templates/form_input.pt'
,
permission
=
'dati2'
)
...
...
opensipkd/base/views/desa.py
View file @
b4d257e
...
@@ -141,6 +141,12 @@ class ViewDesa(BaseView):
...
@@ -141,6 +141,12 @@ class ViewDesa(BaseView):
.
join
(
ResKecamatan
,
ResKecamatan
.
id
==
ResDesa
.
kecamatan_id
)
.
join
(
ResKecamatan
,
ResKecamatan
.
id
==
ResDesa
.
kecamatan_id
)
row_table
=
DataTables
(
request
.
GET
,
query
,
columns
)
row_table
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
row_table
.
output_result
()
return
row_table
.
output_result
()
elif
url_dict
[
'act'
]
==
'select'
:
kecamatan_id
=
request
.
params
[
"kecamatan_id"
]
data
=
ResKecamatan
.
get_list
(
kecamatan_id
)
result
=
{
f
"{k[0]}"
:
k
[
1
]
for
k
in
data
}
return
result
@view_config
(
route_name
=
'desa-add'
,
@view_config
(
route_name
=
'desa-add'
,
renderer
=
'templates/form_input.pt'
,
permission
=
'desa'
)
renderer
=
'templates/form_input.pt'
,
permission
=
'desa'
)
...
...
opensipkd/base/views/kecamatan.py
View file @
b4d257e
...
@@ -5,6 +5,7 @@ from deform import (widget, Form, )
...
@@ -5,6 +5,7 @@ from deform import (widget, Form, )
from
opensipkd.tools.buttons
import
btn_close
,
btn_cancel
,
btn_save
from
opensipkd.tools.buttons
import
btn_close
,
btn_cancel
,
btn_save
from
pyramid.view
import
(
view_config
,
)
from
pyramid.view
import
(
view_config
,
)
from
.
import
widget_os
from
.dati2
import
dati2_widget
from
.dati2
import
dati2_widget
from
..models
import
DBSession
,
ResKecamatan
,
ResDati2
from
..models
import
DBSession
,
ResKecamatan
,
ResDati2
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
..views
import
ColumnDT
,
DataTables
,
BaseView
...
@@ -15,8 +16,21 @@ SESS_EDIT_FAILED = 'Edit kecamatan gagal'
...
@@ -15,8 +16,21 @@ SESS_EDIT_FAILED = 'Edit kecamatan gagal'
@colander.deferred
@colander.deferred
def
kecamatan_widget
(
node
,
kw
):
def
kecamatan_widget
(
node
,
kw
):
default_url
=
"/desa/select/act?kecamatan_id="
default_slave
=
"desa_id"
values
=
kw
.
get
(
'kecamatan_list'
,
[])
values
=
kw
.
get
(
'kecamatan_list'
,
[])
return
widget
.
Select2Widget
(
values
=
values
)
url
=
kw
.
get
(
'kecamatan_url'
,
[])
slave
=
kw
.
get
(
'kecamatan_slave'
,
[])
if
not
url
:
url
=
default_url
if
not
slave
:
slave
=
default_slave
values
.
insert
(
0
,
(
""
,
"Pilih Kecamatan..."
))
return
widget_os
.
Select2MsWidget
(
values
=
values
,
url
=
url
,
slave
=
slave
,
placeholder
=
"Pilih Kecamatan"
)
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
...
@@ -137,6 +151,12 @@ class ViewDati2(BaseView):
...
@@ -137,6 +151,12 @@ class ViewDati2(BaseView):
.
join
(
ResDati2
,
ResDati2
.
id
==
ResKecamatan
.
dati2_id
)
.
join
(
ResDati2
,
ResDati2
.
id
==
ResKecamatan
.
dati2_id
)
row_table
=
DataTables
(
request
.
GET
,
query
,
columns
)
row_table
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
row_table
.
output_result
()
return
row_table
.
output_result
()
elif
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
@view_config
(
route_name
=
'kecamatan-add'
,
@view_config
(
route_name
=
'kecamatan-add'
,
renderer
=
'templates/form_input.pt'
,
permission
=
'kecamatan'
)
renderer
=
'templates/form_input.pt'
,
permission
=
'kecamatan'
)
...
...
opensipkd/base/views/partner.py
View file @
b4d257e
...
@@ -7,7 +7,7 @@ from deform import (
...
@@ -7,7 +7,7 @@ from deform import (
widget
,
widget
,
ValidationFailure
,
ValidationFailure
,
)
)
from
opensipkd.base.models
import
User
from
opensipkd.base.models
import
User
,
ResProvinsi
,
ResDati2
,
ResKecamatan
,
ResDesa
from
pyramid.httpexceptions
import
(
from
pyramid.httpexceptions
import
(
HTTPFound
,
HTTPFound
,
)
)
...
@@ -16,6 +16,10 @@ from pyramid.view import (
...
@@ -16,6 +16,10 @@ from pyramid.view import (
)
)
from
opensipkd.tools.buttons
import
btn_save
,
btn_cancel
,
btn_delete
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
.provinsi
import
provinsi_widget
from
..models
import
DBSession
from
..models
import
DBSession
from
..models
import
Partner
from
..models
import
Partner
# from ..models.partner import PartnerUserModel
# from ..models.partner import PartnerUserModel
...
@@ -45,26 +49,49 @@ class AddSchema(colander.Schema):
...
@@ -45,26 +49,49 @@ class AddSchema(colander.Schema):
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
validator
=
colander
.
Length
(
max
=
128
),
validator
=
colander
.
Length
(
max
=
128
),
oid
=
"alamat_2"
)
oid
=
"alamat_2"
)
kelurahan
=
colander
.
SchemaNode
(
# kelurahan = colander.SchemaNode(
colander
.
String
(),
# 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
,
missing
=
colander
.
drop
,
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"provinsi_id"
,
oid
=
"kelurahan"
)
url
=
""
,
kecamatan
=
colander
.
SchemaNode
(
slave
=
"dati2_id"
,
colander
.
String
(),
)
dati2_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
dati2_widget
,
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"dati2_id"
)
oid
=
"kecamatan"
)
kecamatan_id
=
colander
.
SchemaNode
(
kota
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
64
),
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
oid
=
"kota"
)
widget
=
kecamatan_widget
,
provinsi
=
colander
.
SchemaNode
(
oid
=
"kecamatan_id"
)
colander
.
String
(),
desa_id
=
colander
.
SchemaNode
(
validator
=
colander
.
Length
(
max
=
64
),
colander
.
Integer
(),
widget
=
desa_widget
,
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
oid
=
"
provinsi
"
)
oid
=
"
desa_id
"
)
email
=
colander
.
SchemaNode
(
email
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
128
),
validator
=
colander
.
Length
(
max
=
128
),
...
@@ -135,8 +162,8 @@ class ViewPartner(BaseView):
...
@@ -135,8 +162,8 @@ class ViewPartner(BaseView):
ColumnDT
(
Partner
.
status
,
mData
=
'status'
),
ColumnDT
(
Partner
.
status
,
mData
=
'status'
),
]
]
query
=
DBSession
.
query
()
.
select_from
(
Partner
)
query
=
DBSession
.
query
()
.
select_from
(
Partner
)
row
T
able
=
DataTables
(
request
.
GET
,
query
,
columns
)
row
_t
able
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
row
T
able
.
output_result
()
return
row
_t
able
.
output_result
()
elif
url_dict
[
'act'
]
==
'hok'
:
elif
url_dict
[
'act'
]
==
'hok'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
term
=
'term'
in
params
and
params
[
'term'
]
or
''
...
@@ -166,9 +193,6 @@ class ViewPartner(BaseView):
...
@@ -166,9 +193,6 @@ class ViewPartner(BaseView):
keys
=
row
.
keys
()
keys
=
row
.
keys
()
r
=
[
dict
(
zip
(
keys
,
k
))
for
k
in
q
.
all
()]
r
=
[
dict
(
zip
(
keys
,
k
))
for
k
in
q
.
all
()]
# for k in q.all():
# d = )
# r.append(d)
return
r
return
r
elif
url_dict
[
'act'
]
==
'vendor'
:
# vendor only
elif
url_dict
[
'act'
]
==
'vendor'
:
# vendor only
...
@@ -227,7 +251,7 @@ class ViewPartner(BaseView):
...
@@ -227,7 +251,7 @@ class ViewPartner(BaseView):
if
not
row
:
if
not
row
:
return
id_not_found
(
request
)
return
id_not_found
(
request
)
form
=
get_form
(
request
,
EditSchema
)
form
=
get_form
(
request
,
EditSchema
,
row
=
row
)
if
request
.
POST
:
if
request
.
POST
:
if
'save'
in
request
.
POST
:
if
'save'
in
request
.
POST
:
controls
=
request
.
POST
.
items
()
controls
=
request
.
POST
.
items
()
...
@@ -306,7 +330,6 @@ def form_validator(form, value):
...
@@ -306,7 +330,6 @@ def form_validator(form, value):
row
=
q
.
first
()
row
=
q
.
first
()
else
:
else
:
row
=
None
row
=
None
q
=
Partner
.
query_kode
(
value
[
'kode'
])
q
=
Partner
.
query_kode
(
value
[
'kode'
])
found
=
q
.
first
()
found
=
q
.
first
()
if
row
:
if
row
:
...
@@ -318,10 +341,18 @@ def form_validator(form, value):
...
@@ -318,10 +341,18 @@ def form_validator(form, value):
def
get_form
(
request
,
class_form
,
row
=
None
,
buttons
=
(
btn_save
,
btn_cancel
)):
def
get_form
(
request
,
class_form
,
row
=
None
,
buttons
=
(
btn_save
,
btn_cancel
)):
schema
=
class_form
(
validator
=
form_validator
)
schema
=
class_form
(
validator
=
form_validator
)
schema
=
schema
.
bind
()
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
=
request
schema
.
request
=
request
if
row
:
#
if row:
schema
.
deserialize
(
row
)
#
schema.deserialize(row)
return
Form
(
schema
,
buttons
=
buttons
)
return
Form
(
schema
,
buttons
=
buttons
)
...
@@ -370,6 +401,7 @@ def id_not_found(request):
...
@@ -370,6 +401,7 @@ def id_not_found(request):
request
.
session
.
flash
(
msg
,
'error'
)
request
.
session
.
flash
(
msg
,
'error'
)
return
route_list
(
request
)
return
route_list
(
request
)
def
get_partner_list
():
def
get_partner_list
():
r
=
[]
r
=
[]
q
=
DBSession
.
query
(
Partner
)
.
order_by
(
Partner
.
nama
)
q
=
DBSession
.
query
(
Partner
)
.
order_by
(
Partner
.
nama
)
...
...
opensipkd/base/views/provinsi.py
View file @
b4d257e
...
@@ -8,6 +8,7 @@ from pyramid.httpexceptions import (HTTPFound, )
...
@@ -8,6 +8,7 @@ from pyramid.httpexceptions import (HTTPFound, )
from
pyramid.view
import
(
view_config
,
)
from
pyramid.view
import
(
view_config
,
)
from
sqlalchemy.orm
import
aliased
from
sqlalchemy.orm
import
aliased
from
.
import
widget_os
from
..models
import
DBSession
,
ResProvinsi
,
kategori_provinsi
,
flush
from
..models
import
DBSession
,
ResProvinsi
,
kategori_provinsi
,
flush
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
..views
import
ColumnDT
,
DataTables
,
BaseView
...
@@ -17,8 +18,21 @@ SESS_EDIT_FAILED = 'Edit provinsi gagal'
...
@@ -17,8 +18,21 @@ SESS_EDIT_FAILED = 'Edit provinsi gagal'
@colander.deferred
@colander.deferred
def
provinsi_widget
(
node
,
kw
):
def
provinsi_widget
(
node
,
kw
):
default_url
=
"/dati2/select/act?provinsi_id="
default_slave
=
"dati2_id"
values
=
kw
.
get
(
'provinsi_list'
,
[])
values
=
kw
.
get
(
'provinsi_list'
,
[])
return
widget
.
Select2Widget
(
values
=
values
)
url
=
kw
.
get
(
'provinsi_url'
,
[])
slave
=
kw
.
get
(
'provinsi_slave'
,
[])
if
not
url
:
url
=
default_url
if
not
slave
:
slave
=
default_slave
values
.
insert
(
0
,
(
""
,
"Pilih Propinsi..."
))
return
widget_os
.
Select2MsWidget
(
values
=
values
,
url
=
url
,
slave
=
slave
,
placeholder
=
"Pilih Provinsi"
)
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
...
...
opensipkd/base/views/templates/base_wilayah.pt
0 → 100644
View file @
b4d257e
<div i18n:domain="deform"
tal:omit-tag=""
tal:define="oid oid|field.oid;
name name|field.name;
css_class css_class|field.widget.css_class;
style style|field.widget.style;">
${field.start_mapping()}
<div class="row">
<div class="col-xs-4">
<div class="input-group">
<span class="input-group-addon" i18n:translate="">Blok/Kav/No</span>
<input type="text" name="blok_kav_no" value="${blok_kav_no}"
class="span2 form-control ${css_class or ''}"
tal:attributes="style style;
blok_kav_no_attributes|field.widget.blok_kav_no_attributes|{};"
maxlength="15" minlength="1" placeholder="Blok Kav No"
id="${oid}"/>
</div>
</div>
<div class="col-xs-2">
<div class="input-group">
<span class="input-group-addon" i18n:translate="">RT</span>
<input type="text" name="rt" value="${rt}"
class="span2 form-control ${css_class or ''}"
tal:attributes="style style;
rt_attributes|field.widget.rt_attributes|{};"
maxlength="3" minlength="3" placeholder="RT"
id="${oid}-rt/>">
</div>
<script type="text/javascript">
deform.addCallback(
'${oid}-rt',
function (oid) {
$("#" + oid).mask("999",
{placeholder:"_"});
});
</script>
</div>
<div class="col-xs-2">
<div class="input-group">
<span class="input-group-addon" i18n:translate="">RW</span>
<input type="text" name="rw" value="${rw}"
class="span2 form-control ${css_class or ''}"
tal:attributes="style style;
rw_attributes|field.widget.rw_attributes|{};"
maxlength="2" minlength="2" placeholder="RW"
id="${oid}-rw/>">
</div>
<script type="text/javascript">
deform.addCallback(
'${oid}-rw',
function (oid) {
$("#" + oid).mask("99",
{placeholder:"_"});
});
</script>
</div>
</div>
${field.end_mapping()}
</div>
opensipkd/base/views/
widget
s/chg_password.pt
→
opensipkd/base/views/
template
s/chg_password.pt
View file @
b4d257e
File moved
opensipkd/base/views/widget_os.py
View file @
b4d257e
from
colander
import
SchemaNode
,
null
,
Mapping
,
Invalid
,
text_
from
colander
import
SchemaNode
,
null
,
Mapping
,
Invalid
,
text_
from
deform.widget
import
Widget
,
_StrippedString
from
deform.widget
import
Widget
,
_StrippedString
,
Select2Widget
class
DokumenWidget
(
Widget
):
class
DokumenWidget
(
Widget
):
...
@@ -163,3 +163,21 @@ class BlokKavNoWidget(Widget):
...
@@ -163,3 +163,21 @@ class BlokKavNoWidget(Widget):
raise
Invalid
(
field
.
schema
,
"Blok Kav No RT/RW tidak lengkap"
,
result
)
raise
Invalid
(
field
.
schema
,
"Blok Kav No RT/RW tidak lengkap"
,
result
)
return
result
return
result
class
Select2MsWidget
(
Select2Widget
):
"""
Renders ``<select>`` field based on a predefined set of values using
`select2 <https://select2.org/>`_ library.
**Attributes/Arguments**
Same as :func:`~deform.widget.SelectWidget`, with some extra options
listed here.
tags: *bool*
Allow dynamic option creation ( default: ``False`` ).
See `select2 docs on tagging <https://select2.org/tagging>`_ for
more details.
"""
template
=
"select2_ms.pt"
opensipkd/base/views/widgets/select2_ms.pt
0 → 100644
View file @
b4d257e
<div tal:define="
name name|field.name;
style field.widget.style;
oid oid|field.oid;
css_class css_class|field.widget.css_class;
unicode unicode|str;
optgroup_class optgroup_class|field.widget.optgroup_class;
multiple multiple|field.widget.multiple;
url url|field.widget.url;
slave slave|field.widget.slave;"
tal:omit-tag="">
<style>
.select2-selection.form-control {
padding: 0px 0px;
}
.select2-container--default .select2-selection--multiple,
.select2-container--default .select2-selection--single {
border: 1px solid #ccc;
}
</style>
<input type="hidden" name="__start__" value="${name}:sequence"
tal:condition="multiple" />
<select tal:attributes="
name name;
id oid;
class string: form-control ${css_class or ''};
data-placeholder field.widget.placeholder|None;
multiple multiple;
style style;
attributes|field.widget.attributes|{};">
<tal:loop tal:repeat="item values">
<optgroup tal:condition="isinstance(item, optgroup_class)"
tal:attributes="label item.label">
<option tal:repeat="(value, description) item.options"
tal:attributes="
selected python:field.widget.get_select_value(cstruct, value);
class css_class;
label field.widget.long_label_generator and description;
value value"
tal:content="field.widget.long_label_generator and field.widget.long_label_generator(item.label, description) or description"/>
</optgroup>
<option tal:condition="not isinstance(item, optgroup_class)"
tal:attributes="
selected python:field.widget.get_select_value(cstruct, item[0]);
class css_class;
value item[0]">${item[1]}</option>
</tal:loop>
</select>
<script type="text/javascript">
deform.addCallback(
'${field.oid}',
function(oid) {
$('#' + oid).select2({
containerCssClass: 'form-control',
placeholder: "${str(field.widget.placeholder).replace('"','\\"')|""}" || undefined,
allowClear: "${hasattr(field.widget, 'placeholder')}",
tags: ${str(getattr(field.widget, 'tags', 'undefined')).lower()}
});
}
);
</script>
<script type="text/javascript" tal:condition="url and slave">
deform.addCallback(
'${field.oid}',
function(oid) {
$('#' + oid).change(function () {
$("#${slave}").val("");
var value = $(this).val();
if (value) {
$.ajax({
type: "GET",
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>');
});
} else {
$("#${slave}").empty();
}
}
});
} else {
$("#${slave}").empty();
}
});
});
</script>
<input type="hidden" name="__end__" value="${name}:sequence"
tal:condition="multiple" />
</div>
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment