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 dc70cf17
authored
Jun 28, 2022
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
penggunaan simple development
1 parent
91124f84
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
552 additions
and
1526 deletions
opensipkd/base/models/common.py
opensipkd/base/models/wilayah.py
opensipkd/base/views/base_views.py
opensipkd/base/views/company.py
opensipkd/base/views/dati2.py
opensipkd/base/views/departemen.py
opensipkd/base/views/desa.py
opensipkd/base/views/eselon.py
opensipkd/base/views/groups.py
opensipkd/base/views/jabatan.py
opensipkd/base/views/kecamatan.py
opensipkd/base/views/log_app.py
opensipkd/base/views/parameter.py
opensipkd/base/views/partner_base.py
opensipkd/base/views/permission.py
opensipkd/base/views/provinsi.py
opensipkd/base/views/routes.py
opensipkd/base/views/user.py
opensipkd/base/views/widget_os.py
opensipkd/base/views/widgets/readonly/select.pt
opensipkd/detable/detable.py
opensipkd/detable/templates/detable.pt
opensipkd/base/models/common.py
View file @
dc70cf1
from
sqlalchemy
import
Column
,
String
,
SmallInteger
,
Integer
,
DateTime
,
ForeignKey
from
sqlalchemy.orm
import
relationship
,
backref
from
ziggurat_foundations.tests
import
User
from
.meta
import
Base
...
...
@@ -42,4 +43,5 @@ class UserDeviceModel(Base, KodeModel):
class
ResCompany
(
Base
,
NamaModel
):
__tablename__
=
'company'
partner_id
=
Column
(
Integer
,
ForeignKey
(
Partner
.
id
))
\ No newline at end of file
partner_id
=
Column
(
Integer
,
ForeignKey
(
Partner
.
id
))
partner
=
relationship
(
Partner
,
backref
=
backref
(
"company"
))
opensipkd/base/models/wilayah.py
View file @
dc70cf1
from
sqlalchemy.orm
import
relationship
,
backref
from
opensipkd.base.models
import
TABLE_ARGS
from
sqlalchemy
import
(
Column
,
...
...
@@ -36,6 +38,7 @@ class ResDati2(Base, NamaModel):
kategori
=
Column
(
String
(
32
))
ibu_kota
=
Column
(
String
(
64
))
provinsi_id
=
Column
(
SmallInteger
,
ForeignKey
(
ResProvinsi
.
id
))
provinsi
=
relationship
(
ResProvinsi
,
backref
=
backref
(
"dati2"
))
@classmethod
def
get_list
(
cls
,
provinsi_id
):
...
...
@@ -49,8 +52,9 @@ class ResKecamatan(Base, NamaModel):
__table_args__
=
(
TABLE_ARGS
,)
ibu_kota
=
Column
(
String
(
64
))
dati2_id
=
Column
(
SmallInteger
,
ForeignKey
(
ResDati2
.
id
))
dati2
=
relationship
(
ResDati2
,
backref
=
backref
(
"kecamatan"
))
@classmethod
def
get_list
(
cls
,
dati2_id
):
def
get_list
(
cls
,
dati2_id
=
None
):
qry
=
cls
.
query_list
()
if
dati2_id
:
qry
=
qry
.
filter
(
cls
.
dati2_id
==
dati2_id
)
...
...
@@ -68,7 +72,7 @@ class ResDesa(Base, NamaModel):
__table_args__
=
(
TABLE_ARGS
,)
kategori
=
Column
(
String
(
32
))
kecamatan_id
=
Column
(
SmallInteger
,
ForeignKey
(
ResKecamatan
.
id
))
kecamatan
=
relationship
(
ResKecamatan
,
backref
=
backref
(
"desa"
))
@classmethod
def
get_list
(
cls
,
kecamatan_id
):
qry
=
cls
.
query_list
()
...
...
opensipkd/base/views/base_views.py
View file @
dc70cf1
...
...
@@ -149,7 +149,7 @@ class BaseView(object):
def
get_form
(
self
,
class_form
,
row
=
None
,
buttons
=
(
btn_save
,
btn_cancel
),
**
bindings
):
buttons
=
self
.
buttons
and
self
.
buttons
or
buttons
bindings
=
self
.
bindings
and
self
.
bindings
or
self
.
get_bindings
()
bindings
=
self
.
bindings
and
self
.
bindings
or
bindings
schema
=
class_form
(
validator
=
self
.
form_validator
)
schema
=
schema
.
bind
(
request
=
self
.
req
,
**
bindings
)
schema
.
request
=
self
.
req
...
...
@@ -168,6 +168,7 @@ class BaseView(object):
action_suffix
=
"/grid/act"
,
buttons
=
self
.
list_buttons
)
resources
=
table
.
get_widget_resources
()
# resources=dict(css="", js="")
return
dict
(
form
=
table
.
render
(),
scripts
=
""
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
])
arg
=
arg
and
arg
or
{}
...
...
opensipkd/base/views/company.py
View file @
dc70cf1
import
json
import
colander
from
deform
import
(
widget
,
Form
,
ValidationFailure
,
)
from
opensipkd.tools.buttons
import
btn_close
,
btn_cancel
,
btn_save
from
deform
import
(
widget
,
)
from
pyramid.view
import
(
view_config
,
)
from
opensipkd.base.models
import
ResProvinsi
,
ResDati2
,
ResDesa
from
.partner_base
import
PartnerSchema
from
opensipkd.base.models
import
ResProvinsi
,
ResDati2
,
ResDesa
,
User
from
.partner_base
import
PartnerSchema
,
NamaSchema
from
..models
import
DBSession
,
ResCompany
,
ResKecamatan
,
Partner
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
..views
import
BaseView
SESS_ADD_FAILED
=
'Tambah pemda gagal'
SESS_EDIT_FAILED
=
'Edit pemda gagal'
...
...
@@ -29,46 +26,46 @@ class AddSchema(PartnerSchema):
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
))
widget
=
widget
.
HiddenWidget
(
readonly
=
True
),
visible
=
False
,)
partner_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
HiddenWidget
(),
missing
=
colander
.
drop
,
oid
=
"partner_id"
)
class
ListSchema
(
NamaSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
visible
=
False
)
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
.
list_schema
=
ListSchema
self
.
table
=
ResCompany
########
# List #
########
def
form_validator
(
self
,
form
,
value
):
err
=
colander
.
Invalid
(
form
,
""
)
def
err_kode
():
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh
%
s'
%
(
value
[
'kode'
],
found
.
nama
))
msg
=
f
"Kode {value['kode']} sudah digunakan oleh {found.nama}"
err
[
"kode"
]
=
msg
raise
err
def
err_nama
():
raise
colander
.
Invalid
(
form
,
'Uraian
%
s sudah digunakan oleh kode
%
s'
%
(
value
[
'nama'
],
found
.
kode
))
err
[
"nama"
]
=
f
"Uraian {value['nama']} sudah digunakan oleh kode {found.kode}"
raise
err
def
err_email
():
err
[
"email"
]
=
f
"Email {value['email']} sudah digunakan oleh kode {found.nama}"
raise
err
def
err_user
():
err
[
"email"
]
=
f
"Email {value['email']} sudah digunakan oleh kode {found.user_name}"
raise
err
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
...
...
@@ -77,7 +74,7 @@ class ViewCompany(BaseView):
else
:
row
=
None
q
=
ResCompany
.
query_kode
(
value
[
'kode'
])
q
=
self
.
table
.
query_kode
(
value
[
'kode'
])
found
=
q
.
first
()
if
row
:
if
found
and
found
.
id
!=
row
.
id
:
...
...
@@ -85,44 +82,45 @@ class ViewCompany(BaseView):
elif
found
:
err_kode
()
found
=
ResCompany
.
query_nama
(
value
[
'nama'
])
.
first
()
found
=
self
.
table
.
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
)
partner_id
=
value
.
get
(
'partner_id'
)
@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
()
found
=
Partner
.
query_email
(
value
.
get
(
'email'
))
.
first
()
if
found
:
if
found
and
found
.
id
!=
partner_id
:
err_email
()
elif
found
:
err_email
()
form
=
self
.
get_form
(
EditSchema
,
buttons
=
(
btn_close
,))
if
request
.
POST
:
return
self
.
route_list
()
found
=
User
.
get_by_identity
(
value
.
get
(
'email'
))
if
found
:
err_user
()
def
get_bindings
(
self
,
row
=
None
):
provinsi_list
=
ResProvinsi
.
get_list
()
partner
=
row
and
row
.
partner
or
None
dati2_list
=
partner
and
partner
.
provinsi_id
and
ResDati2
.
get_list
(
partner
.
provinsi_id
)
or
[]
kecamatan_list
=
partner
and
partner
.
dati2_id
and
ResKecamatan
.
get_list
(
partner
.
dati2_id
)
or
[]
desa_list
=
partner
and
partner
.
kecamatan_id
and
ResDesa
.
get_list
(
partner
.
kecamatan_id
)
or
[]
return
dict
(
provinsi_list
=
provinsi_list
,
dati2_list
=
dati2_list
,
kecamatan_list
=
kecamatan_list
,
desa_list
=
desa_list
)
form
.
set_appstruct
(
self
.
get_values
(
row
))
return
dict
(
form
=
form
.
render
(
readonly
=
True
),
scripts
=
self
.
form_scripts
)
@view_config
(
route_name
=
'company-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'company'
)
def
view_view
(
self
):
return
super
()
.
view_view
()
@view_config
(
route_name
=
'company'
,
renderer
=
'templates/
list
.pt'
,
renderer
=
'templates/
table
.pt'
,
permission
=
'company'
)
def
view_list
(
self
):
return
super
()
.
view_list
()
...
...
@@ -130,52 +128,26 @@ class ViewCompany(BaseView):
@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
)
if
request
.
user
.
company_id
:
query
=
query
.
filter_by
(
id
=
request
.
user
.
company_id
)
row_table
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
row_table
.
output_result
()
return
super
()
.
view_act
()
@view_config
(
route_name
=
'company-add'
,
renderer
=
'templates/form
_input
.pt'
,
permission
=
'company'
)
renderer
=
'templates/form.pt'
,
permission
=
'company'
)
def
view_add
(
self
):
if
self
.
req
.
user
.
company_id
:
return
self
.
route_list
(
"Hak Akses Terbatas"
,
"error"
)
return
super
(
ViewCompany
,
self
)
.
view_add
()
########
# Edit #
########
def
get_values
(
self
,
row
,
istime
=
False
):
d
=
super
()
.
get_values
(
row
,
istime
)
partner
=
row
.
partner
if
partner
:
p
=
partner
.
to_dict
()
del
p
[
"id"
]
d
.
update
(
p
)
return
d
@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
)
renderer
=
'templates/form.pt'
,
permission
=
'company'
)
def
view_edit
(
self
):
return
super
(
ViewCompany
,
self
)
.
view_edit
()
@view_config
(
route_name
=
'company-delete'
,
renderer
=
'templates/form_input.pt'
,
permission
=
'company'
)
...
...
@@ -192,6 +164,7 @@ class ViewCompany(BaseView):
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
:
...
...
@@ -200,9 +173,3 @@ class ViewCompany(BaseView):
row
=
self
.
save
(
values
,
self
.
req
.
user
,
row
)
return
row
def
query_id
(
self
):
q
=
DBSession
.
query
(
self
.
table
)
.
filter_by
(
id
=
self
.
req
.
matchdict
[
'id'
])
if
self
.
req
.
user
.
company_id
:
q
=
q
.
filter_by
(
id
=
self
.
req
.
user
.
company_id
)
return
q
\ No newline at end of file
opensipkd/base/views/dati2.py
View file @
dc70cf1
...
...
@@ -5,7 +5,7 @@ from pyramid.view import (view_config, )
from
.
import
widget_os
from
.provinsi
import
provinsi_widget
from
..models
import
DBSession
,
ResDati2
,
kategori_dati2
,
ResProvinsi
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
..views
import
BaseView
SESS_ADD_FAILED
=
'Tambah dati2 gagal'
SESS_EDIT_FAILED
=
'Edit dati2 gagal'
...
...
@@ -46,7 +46,7 @@ class ListSchema(colander.Schema):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
searchable
=
False
,
orderable
=
False
,
visible
=
False
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
'100pt'
,
title
=
"Kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
)
provinsi
=
colander
.
SchemaNode
(
colander
.
String
())
provinsi
=
colander
.
SchemaNode
(
colander
.
String
()
,
field
=
ResProvinsi
.
nama
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
width
=
"30pt"
)
...
...
@@ -62,10 +62,6 @@ class ViewDati2(BaseView):
self
.
table
=
ResDati2
self
.
list_schema
=
ListSchema
########
# List #
########
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh
%
s'
%
(
...
...
@@ -101,8 +97,7 @@ class ViewDati2(BaseView):
err_nama
()
def
get_bindings
(
self
,
row
=
None
):
return
dict
(
request
=
self
.
req
,
provinsi_list
=
ResProvinsi
.
get_list
())
return
dict
(
provinsi_list
=
ResProvinsi
.
get_list
())
@view_config
(
route_name
=
'dati2'
,
renderer
=
'templates/table.pt'
,
...
...
@@ -115,41 +110,33 @@ class ViewDati2(BaseView):
def
view_view
(
self
):
# row = query_id(request).first()
return
super
(
ViewDati2
,
self
)
.
view_view
()
def
list_join
(
self
,
query
):
return
query
.
join
(
ResProvinsi
,
ResProvinsi
.
id
==
ResDati2
.
provinsi_id
)
@view_config
(
route_name
=
'dati2-act'
,
renderer
=
'json'
,
permission
=
'view'
)
def
view_act
(
self
):
request
=
self
.
req
url_dict
=
request
.
matchdict
if
url_dict
[
'act'
]
==
'grid'
:
columns
=
[
ColumnDT
(
ResDati2
.
id
,
mData
=
'id'
),
ColumnDT
(
ResDati2
.
kode
,
mData
=
'kode'
),
ColumnDT
(
ResDati2
.
nama
,
mData
=
'nama'
),
ColumnDT
(
ResDati2
.
status
,
mData
=
'status'
),
ColumnDT
(
ResProvinsi
.
nama
,
mData
=
'provinsi'
),
]
query
=
DBSession
.
query
()
.
select_from
(
ResDati2
)
\
.
join
(
ResProvinsi
,
ResProvinsi
.
id
==
ResDati2
.
provinsi_id
)
row_table
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
row_table
.
output_result
()
elif
url_dict
[
'act'
]
==
'select'
:
provinsi_id
=
request
.
params
[
"provinsi_id"
]
return
super
()
.
view_act
()
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-add'
,
renderer
=
'templates/form
_input
.pt'
,
permission
=
'dati2'
)
renderer
=
'templates/form.pt'
,
permission
=
'dati2'
)
def
view_add
(
self
):
return
super
(
ViewDati2
,
self
)
.
view_add
()
########
# Edit #
########
@view_config
(
route_name
=
'dati2-edit'
,
renderer
=
'templates/form
_input
.pt'
,
permission
=
'dati2'
)
renderer
=
'templates/form.pt'
,
permission
=
'dati2'
)
def
view_edt
(
self
):
return
super
(
ViewDati2
,
self
)
.
view_edit
()
@view_config
(
route_name
=
'dati2-delete'
,
renderer
=
'templates/form
_input
.pt'
,
permission
=
'dati2'
)
renderer
=
'templates/form.pt'
,
permission
=
'dati2'
)
def
view_delete
(
self
):
return
super
(
ViewDati2
,
self
)
.
view_delete
()
opensipkd/base/views/departemen.py
View file @
dc70cf1
...
...
@@ -5,7 +5,6 @@ from datetime import datetime
import
colander
from
deform
import
(
widget
,
)
from
deform.widget
import
AutocompleteInputWidget
from
opensipkd.tools
import
(
get_ext
,
get_random_string
,
get_settings
)
from
pyramid.view
import
(
view_config
,
)
from
sqlalchemy
import
func
...
...
@@ -119,22 +118,6 @@ class ViewDepartemen(BaseView):
self
.
list_route
=
'departemen'
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="")
########
# List #
########
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh
%
s'
%
(
...
...
@@ -182,89 +165,18 @@ class ViewDepartemen(BaseView):
if
child
.
children
:
self
.
update_children
(
child
.
children
)
def
before_
save
(
self
,
row
,
values
):
def
save_request
(
self
,
values
,
row
=
None
):
#
save(self, row, values):
for
k
,
v
in
values
.
items
():
if
not
v
:
setattr
(
row
,
k
,
None
)
row
=
super
()
.
save_request
(
values
,
row
)
return
row
# def save(self, values, user, row=None)
# if not row:
# row = Departemen()
# row.created = datetime.now()
# row.create_uid = user.id
# if 'parent_id' in values and not values['parent_id']:
# del values['parent_id']
#
# row.from_dict(values)
# row.updated = datetime.now()
# row.update_uid = user.id
# row.status = 'status' in values and values['status'] and 1 or 0
# row.level_id = 1
# DBSession.add(row)
# DBSession.flush()
# if row.parent_id:
# row.level_id = (row.parent.level_id or 0) + 1
#
# DBSession.add(row)
# if row.children:
# for child in row.children:
# child.level_id = child.parent.level_id + 1
# DBSession.add(child)
# DBSession.flush()
#
# return row
#
# def save_request(self, values, row=None):
# request = self.req
# if 'id' in request.matchdict:
# values['id'] = request.matchdict['id']
# values["company_id"] = request.user.company_id
# row = self.save(values, request.user, row)
# request.session.flash(
# "Departemen {nama} sudah disimpan.".format(nama=row.nama))
# def route_list(self, ):
# return HTTPFound(location=self.req.route_url(self.list_route))
# def get_form(self, class_form, row=None, buttons=(btn_save, btn_cancel)):
# schema = class_form(validator=self.form_validator)
# schema = schema.bind(request=self.req,
# company_list=ResCompany.get_list())
# schema.request = self.req
# if row:
# schema.deserialize(row)
# return Form(schema, buttons=buttons)
#
# def session_failed(self, session_name):
# r = dict(form=self.req.session[session_name])
# del self.req.session[session_name]
# return r
# def query_id(self):
# return DBSession.query(Departemen).filter_by(
# id=self.req.matchdict['id'])
# def id_not_found(self):
# msg = 'Departemen ID %s Tidak Ditemukan.' % self.req.matchdict['id']
# self.req.session.flash(msg, 'error')
# return self.route_list()
@view_config
(
route_name
=
'departemen-view'
,
renderer
=
'templates/form
_input
.pt'
,
permission
=
'departemen'
)
def
view_view
(
self
):
# row = query_id(request).first()
renderer
=
'templates/form.pt'
,
permission
=
'departemen'
)
def
view_view
(
self
):
return
super
(
ViewDepartemen
,
self
)
.
view_view
()
# 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
=
'departemen'
,
renderer
=
'templates/table.pt'
,
...
...
@@ -272,9 +184,6 @@ class ViewDepartemen(BaseView):
def
view_list
(
self
):
return
super
()
.
view_list
()
##########
# Action #
##########
@view_config
(
route_name
=
'departemen-act'
,
renderer
=
'json'
,
permission
=
'view'
)
def
view_act
(
self
):
...
...
@@ -390,63 +299,21 @@ class ViewDepartemen(BaseView):
r
.
append
(
d
)
return
r
@view_config
(
route_name
=
'departemen-add'
,
renderer
=
'templates/form
_input
.pt'
,
@view_config
(
route_name
=
'departemen-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'departemen'
)
def
view_add
(
self
):
return
super
(
ViewDepartemen
,
self
)
.
view_add
()
@view_config
(
route_name
=
'departemen-edit'
,
renderer
=
'templates/form
_input
.pt'
,
permission
=
'departemen'
)
renderer
=
'templates/form.pt'
,
permission
=
'departemen'
)
def
view_edit
(
self
):
return
super
(
ViewDepartemen
,
self
)
.
view_edit
()
# request = self.req
# row = self.query_id().first()
# if not row:
# return self.id_not_found()
#
# form = self.get_form(EditSchema)
# if request.POST:
# if 'save' in request.POST:
# controls = request.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()
# form.set_appstruct(self.get_values(row))
# return dict(form=form.render(), scripts=self.form_scripts)
##########
# Delete #
##########
@view_config
(
route_name
=
'departemen-delete'
,
renderer
=
'templates/form
_input
.pt'
,
permission
=
'departemen'
)
renderer
=
'templates/form.pt'
,
permission
=
'departemen'
)
def
view_delete
(
self
):
return
super
(
ViewDepartemen
,
self
)
.
view_delete
()
# request = self.req
# q = self.query_id()
# row = q.first()
# if not row:
# return self.id_not_found()
# if request.POST:
# if 'delete' in request.POST:
# msg = 'Departemen ID %d %s sudah dihapus.' % (row.id, row.nama)
# q.delete()
# DBSession.flush()
# request.session.flash(msg)
# return self.route_list()
# form = self.get_form(EditSchema,
# buttons=(btn_delete, btn_cancel))
# form.set_appstruct(self.get_values(row))
# return dict(form=form.render(readonly=True), scripts=self.form_scripts)
##########
# Upload #
##########
@view_config
(
route_name
=
'departemen-upload'
,
renderer
=
'templates/departemen/upload.pt'
,
permission
=
'departemen'
)
...
...
@@ -455,7 +322,6 @@ class ViewDepartemen(BaseView):
form
=
self
.
get_form
(
UploadSchema
)
if
request
.
POST
:
if
'save'
in
request
.
POST
:
# settings = get_settings()
input_file
=
request
.
POST
[
'upload'
]
.
file
filename
=
request
.
POST
[
'upload'
]
.
filename
ext
=
get_ext
(
filename
)
...
...
@@ -485,9 +351,9 @@ class ViewDepartemen(BaseView):
if
code
:
code
=
code
[:
-
1
]
s
ave_upload
(
request
,
code
,
csv_row
)
s
elf
.
save_upload
(
code
,
csv_row
)
s
ave_upload
(
request
,
kode
,
csv_row
)
s
elf
.
save_upload
(
kode
,
csv_row
)
DBSession
.
flush
()
os
.
remove
(
temp_file_path
)
...
...
opensipkd/base/views/desa.py
View file @
dc70cf1
import
json
import
colander
from
deform
import
(
widget
,
Form
,
)
from
opensipkd.tools.buttons
import
btn_close
,
btn_cancel
,
btn_save
,
btn_add
,
btn_edit
,
btn_delete
from
deform
import
(
widget
,
)
from
pyramid.view
import
(
view_config
,
)
from
.dati2
import
dati2_widget
from
.kecamatan
import
kecamatan_widget
from
.
.models
import
DBSession
,
ResDesa
,
kategori_desa
,
ResKecamatan
from
..
views
import
ColumnDT
,
DataTables
,
BaseView
from
..
.detable
import
DeTable
from
.
provinsi
import
provinsi_widget
from
..
models
import
DBSession
,
ResDesa
,
kategori_desa
,
ResKecamatan
,
ResProvinsi
,
ResDati2
from
..
views
import
BaseView
SESS_ADD_FAILED
=
'Tambah desa gagal'
SESS_EDIT_FAILED
=
'Edit desa gagal'
...
...
@@ -22,6 +20,12 @@ def desa_widget(node, kw):
class
AddSchema
(
colander
.
Schema
):
provinsi_id
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
provinsi_widget
,
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
dati2_id
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
dati2_widget
,
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
kecamatan_id
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
kecamatan_widget
,
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
...
...
@@ -43,7 +47,7 @@ class ListSchema(colander.Schema):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
searchable
=
False
,
orderable
=
False
,
visible
=
False
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
'100pt'
,
title
=
"Kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
)
kecamatan
=
colander
.
SchemaNode
(
colander
.
String
())
kecamatan
=
colander
.
SchemaNode
(
colander
.
String
()
,
field
=
ResKecamatan
.
nama
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
width
=
"30pt"
)
...
...
@@ -94,24 +98,29 @@ class ViewDesa(BaseView):
err_nama
()
def
get_bindings
(
self
,
row
=
None
):
return
dict
(
request
=
self
.
req
,
kecamatan_list
=
ResKecamatan
.
get_list
())
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
=
'desa'
)
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
)
def
view_view
(
self
):
return
super
()
.
view_view
()
@view_config
(
route_name
=
'desa'
,
renderer
=
'templates/table.pt'
,
...
...
@@ -119,22 +128,18 @@ class ViewDesa(BaseView):
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'
]
==
'grid'
:
columns
=
[
ColumnDT
(
ResDesa
.
id
,
mData
=
'id'
),
ColumnDT
(
ResDesa
.
kode
,
mData
=
'kode'
),
ColumnDT
(
ResDesa
.
nama
,
mData
=
'nama'
),
ColumnDT
(
ResDesa
.
status
,
mData
=
'status'
),
ColumnDT
(
ResKecamatan
.
nama
,
mData
=
'kecamatan'
),
]
query
=
DBSession
.
query
()
.
select_from
(
ResDesa
)
\
.
join
(
ResKecamatan
,
ResKecamatan
.
id
==
ResDesa
.
kecamatan_id
)
row_table
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
row_table
.
output_result
()
elif
url_dict
[
'act'
]
==
'select'
:
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
}
...
...
opensipkd/base/views/eselon.py
View file @
dc70cf1
from
datetime
import
datetime
import
colander
from
deform
import
(
Form
,
widget
,
ValidationFailure
,
)
from
pyramid.httpexceptions
import
(
HTTPFound
,
)
from
pyramid.view
import
(
view_config
,
)
from
.partner_base
import
NamaSchema
from
..models
import
(
DBSession
,
Eselon
)
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
..views
import
BaseView
SESS_ADD_FAILED
=
'Tambah eselon gagal'
SESS_EDIT_FAILED
=
'Edit eselon gagal'
...
...
@@ -41,35 +35,34 @@ class EditSchema(AddSchema):
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
())
class
ListSchema
(
NamaSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
visible
=
False
)
class
Views
(
BaseView
):
@view_config
(
route_name
=
'eselon'
,
renderer
=
'templates/eselon/list.pt'
,
def
__init__
(
self
,
request
):
super
(
Views
,
self
)
.
__init__
(
request
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'eselon'
self
.
list_route
=
'eselon'
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Eselon
self
.
list_schema
=
ListSchema
@view_config
(
route_name
=
'eselon'
,
renderer
=
'templates/table.pt'
,
permission
=
'eselon'
)
def
view_list
(
self
):
return
dict
(
a
=
{}
)
return
super
(
Views
,
self
)
.
view_list
(
)
##########
# Action #
##########
@view_config
(
route_name
=
'eselon-act'
,
renderer
=
'json'
,
permission
=
'read'
)
def
view_act
(
self
):
request
=
self
.
req
ses
=
request
.
session
params
=
request
.
params
url_dict
=
request
.
matchdict
return
super
(
Views
,
self
)
.
view_act
()
if
url_dict
[
'act'
]
==
'grid'
:
columns
=
[
ColumnDT
(
Eselon
.
id
,
mData
=
'id'
),
ColumnDT
(
Eselon
.
kode
,
mData
=
'kode'
),
ColumnDT
(
Eselon
.
nama
,
mData
=
'nama'
),
]
query
=
DBSession
.
query
()
.
select_from
(
Eselon
)
rowTable
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
rowTable
.
output_result
()
elif
url_dict
[
'act'
]
==
'hok'
:
def
next_act
(
self
):
params
=
self
.
params
url_dict
=
self
.
req
.
matchdict
if
url_dict
[
'act'
]
==
'hok'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
qry
=
Eselon
.
query
()
.
\
filter
(
Eselon
.
kode
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
...
...
@@ -101,203 +94,60 @@ class Views(BaseView):
r
.
append
(
d
)
return
r
@view_config
(
route_name
=
'eselon-add'
,
renderer
=
'templates/
eselon/add
.pt'
,
@view_config
(
route_name
=
'eselon-add'
,
renderer
=
'templates/
form
.pt'
,
permission
=
'eselon'
)
def
view_add
(
self
):
request
=
self
.
req
form
=
get_form
(
request
,
AddSchema
)
if
request
.
POST
:
if
'simpan'
in
request
.
POST
:
controls
=
request
.
POST
.
items
()
try
:
controls
=
form
.
validate
(
controls
)
except
ValidationFailure
as
e
:
form
.
render
(
appstruct
=
e
.
cstruct
)
return
dict
(
form
=
form
)
save_request
(
request
,
dict
(
controls
))
return
route_list
(
request
)
elif
SESS_ADD_FAILED
in
request
.
session
:
return
self
.
session_failed
(
SESS_ADD_FAILED
)
return
dict
(
form
=
form
)
# return dict(form=form.render())
########
# Edit #
########
@view_config
(
route_name
=
'eselon-edit'
,
renderer
=
'templates/eselon/edt.pt'
,
return
super
()
.
view_add
()
@view_config
(
route_name
=
'eselon-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'eselon'
)
def
view_edt
(
self
):
request
=
self
.
req
q
=
query_id
(
request
)
row
=
q
.
first
()
if
not
row
:
return
id_not_found
(
request
)
uid
=
row
.
id
def
view_edit
(
self
):
return
super
()
.
view_edit
()
form
=
get_form
(
request
,
EditSchema
)
if
request
.
POST
:
if
'simpan'
in
request
.
POST
:
controls
=
request
.
POST
.
items
()
try
:
controls
=
form
.
validate
(
controls
)
except
ValidationFailure
as
e
:
form
.
render
(
appstruct
=
e
.
cstruct
)
return
dict
(
form
=
form
)
save_request
(
request
,
dict
(
controls
),
row
)
return
route_list
(
request
)
elif
SESS_EDIT_FAILED
in
request
.
session
:
return
self
.
session_failed
(
SESS_EDIT_FAILED
)
values
=
row
.
to_dict
()
form
.
render
(
appstruct
=
values
)
return
dict
(
form
=
form
)
@view_config
(
route_name
=
'eselon-view'
,
renderer
=
'templates/form_input.pt'
,
@view_config
(
route_name
=
'eselon-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'eselon'
)
def
view_view
(
self
):
request
=
self
.
req
q
=
query_id
(
request
)
row
=
q
.
first
()
if
not
row
:
return
id_not_found
(
request
)
uid
=
row
.
id
return
super
()
.
view_view
()
form
=
Form
(
EditSchema
(),
buttons
=
(
'tutup'
,))
if
request
.
POST
:
return
route_list
(
request
)
values
=
row
.
to_dict
()
form
=
form
.
render
(
appstruct
=
values
,
readonly
=
True
)
return
dict
(
form
=
form
,
scripts
=
""
)
##########
# Delete #
##########
@view_config
(
route_name
=
'eselon-delete'
,
renderer
=
'templates/form_input.pt'
,
permission
=
'eselon'
)
def
view_del
(
self
):
request
=
self
.
req
q
=
query_id
(
request
)
row
=
q
.
first
()
if
not
row
:
return
id_not_found
(
request
)
form
=
Form
(
EditSchema
(),
buttons
=
(
'hapus'
,
'batal'
))
if
request
.
POST
:
if
'hapus'
in
request
.
POST
:
msg
=
'eselon ID
%
d
%
s sudah dihapus.'
%
(
row
.
id
,
row
.
nama
)
q
.
delete
()
DBSession
.
flush
()
request
.
session
.
flash
(
msg
)
return
route_list
(
request
)
form
.
set_appstruct
(
row
.
to_dict
())
return
dict
(
row
=
row
,
form
=
form
.
render
(
readonly
=
True
),
scripts
=
''
)
#######
# Add #
#######
def
form_validator
(
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
,
'Nama
%
s sudah digunakan oleh kode
%
s'
%
(
value
[
'nama'
],
found
.
kode
))
# edit
def
err_ruang
():
raise
colander
.
Invalid
(
form
,
'Nama ruang
%
s tidak boleh lebih dari 1 karakter.'
%
(
value
[
'ruang'
]))
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
q
=
DBSession
.
query
(
Eselon
)
.
filter_by
(
id
=
uid
)
eselon
=
q
.
first
()
else
:
eselon
=
None
q
=
Eselon
.
query_kode
(
value
[
'kode'
])
found
=
q
.
first
()
if
eselon
:
if
found
and
found
.
id
!=
eselon
.
id
:
def
view_delete
(
self
):
return
super
()
.
view_delete
()
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
,
'Nama
%
s sudah digunakan oleh kode
%
s'
%
(
value
[
'nama'
],
found
.
kode
))
# edit
def
err_ruang
():
raise
colander
.
Invalid
(
form
,
'Nama ruang
%
s tidak boleh lebih dari 1 karakter.'
%
(
value
[
'ruang'
]))
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
q
=
DBSession
.
query
(
Eselon
)
.
filter_by
(
id
=
uid
)
eselon
=
q
.
first
()
else
:
eselon
=
None
q
=
Eselon
.
query_kode
(
value
[
'kode'
])
found
=
q
.
first
()
if
eselon
:
if
found
and
found
.
id
!=
eselon
.
id
:
err_kode
()
elif
found
:
err_kode
()
elif
found
:
err_kode
()
found
=
Eselon
.
query_nama
(
value
[
'nama'
])
.
first
()
if
eselon
:
if
found
and
found
.
id
!=
eselon
.
id
:
found
=
Eselon
.
query_nama
(
value
[
'nama'
])
.
first
()
if
eselon
:
if
found
and
found
.
id
!=
eselon
.
id
:
err_nama
()
elif
found
:
err_nama
()
elif
found
:
err_nama
()
# edit
# ruang = len(value['ruang'])
# if ruang > 1:
# err_ruang()
def
get_form
(
request
,
class_form
,
row
=
None
):
schema
=
class_form
(
validator
=
form_validator
)
schema
=
schema
.
bind
()
schema
.
request
=
request
if
row
:
schema
.
deserialize
(
row
)
return
Form
(
schema
,
buttons
=
(
'simpan'
,
'batal'
))
def
save
(
values
,
user
,
row
=
None
):
if
not
row
:
row
=
Eselon
()
values
[
'created'
]
=
datetime
.
now
()
values
[
'create_uid'
]
=
user
.
id
else
:
values
[
'updated'
]
=
datetime
.
now
()
values
[
'update_uid'
]
=
user
.
id
# values['pangkat'] # TODO: pangkat
row
.
from_dict
(
values
)
# edit
row
.
updated
=
datetime
.
now
()
row
.
update_uid
=
user
.
id
row
.
status
=
'status'
in
values
and
values
[
'status'
]
and
1
or
0
row
.
level_id
=
1
DBSession
.
add
(
row
)
DBSession
.
flush
()
return
row
def
save_request
(
request
,
values
,
row
=
None
):
if
'id'
in
request
.
matchdict
:
values
[
'id'
]
=
request
.
matchdict
[
'id'
]
row
=
save
(
values
,
request
.
user
,
row
)
request
.
session
.
flash
(
'eselon sudah disimpan.'
)
def
route_list
(
request
):
return
HTTPFound
(
location
=
request
.
route_url
(
'eselon'
))
def
session_failed
(
request
,
session_name
):
r
=
dict
(
form
=
request
.
session
[
session_name
])
del
request
.
session
[
session_name
]
return
r
########
# Edit #
########
def
query_id
(
request
):
return
DBSession
.
query
(
Eselon
)
.
filter_by
(
id
=
request
.
matchdict
[
'id'
])
def
id_not_found
(
request
):
msg
=
'eselon ID
%
s Tidak Ditemukan.'
%
request
.
matchdict
[
'id'
]
request
.
session
.
flash
(
msg
,
'error'
)
return
route_list
(
request
)
opensipkd/base/views/groups.py
View file @
dc70cf1
import
colander
from
datatables
import
(
ColumnDT
,
DataTables
,
)
from
deform
import
widget
from
pyramid.httpexceptions
import
HTTPFound
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
view_config
...
...
@@ -73,18 +68,13 @@ class Views(BaseView):
@view_config
(
route_name
=
'group-act'
,
renderer
=
'json'
,
permission
=
'user-view'
)
def
view_act
(
self
):
params
=
self
.
params
return
super
(
Views
,
self
)
.
view_act
()
def
next_act
(
self
):
request
=
self
.
req
url_dict
=
request
.
matchdict
if
url_dict
[
'act'
]
==
'grid'
:
columns
=
[
ColumnDT
(
Group
.
id
,
mData
=
"id"
),
ColumnDT
(
Group
.
group_name
,
mData
=
"group_name"
),
ColumnDT
(
Group
.
description
,
mData
=
"description"
),
ColumnDT
(
Group
.
member_count
,
mData
=
"member_count"
)]
q
=
DBSession
.
query
()
.
select_from
(
Group
)
.
order_by
(
Group
.
group_name
)
row_table
=
DataTables
(
request
.
GET
,
q
,
columns
)
return
row_table
.
output_result
()
elif
url_dict
[
'act'
]
==
'hon'
:
params
=
self
.
params
if
url_dict
[
'act'
]
==
'hon'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
q
=
DBSession
.
query
(
Group
.
id
,
Group
.
description
)
.
filter
(
Group
.
description
.
ilike
(
'
%
{}
%
'
.
format
(
term
)))
.
\
...
...
@@ -156,9 +146,6 @@ class Views(BaseView):
permission
=
'user-edit'
)
def
view_delete
(
self
):
return
super
(
Views
,
self
)
.
view_delete
()
q
.
delete
()
request
.
session
.
flash
(
ts
)
return
HTTPFound
(
location
=
request
.
route_url
(
'group'
))
def
clean_name
(
s
):
...
...
opensipkd/base/views/jabatan.py
View file @
dc70cf1
from
datetime
import
datetime
import
colander
from
deform
import
(
Form
,
widget
,
ValidationFailure
,
)
from
pyramid.httpexceptions
import
(
HTTPFound
,
)
from
pyramid.view
import
(
view_config
,
)
from
opensipkd.tools.buttons
import
btn_cancel
,
btn_save
,
btn_delete
from
deform
import
(
widget
,
)
from
pyramid.view
import
(
view_config
,
)
from
.partner_base
import
NamaSchema
from
..models
import
(
DBSession
,
Jabatan
,
Eselon
)
from
..views
import
ColumnDT
,
DataTables
,
BaseView
,
deferred_jenis
from
..views
import
BaseView
,
deferred_jenis
SESS_ADD_FAILED
=
'Tambah jabatan gagal'
SESS_EDIT_FAILED
=
'Edit jabatan gagal'
...
...
@@ -76,36 +64,37 @@ class EditSchema(AddSchema):
widget
=
widget
.
HiddenWidget
())
class
ListSchema
(
NamaSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
visible
=
False
)
class
ViewJabatan
(
BaseView
):
@view_config
(
route_name
=
'jabatan'
,
renderer
=
'templates/jabatan/list.pt'
,
def
__init__
(
self
,
request
):
super
()
.
__init__
(
request
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'jabatan'
self
.
list_route
=
'jabatan'
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Jabatan
self
.
list_schema
=
ListSchema
@view_config
(
route_name
=
'jabatan'
,
renderer
=
'templates/table.pt'
,
permission
=
'jabatan'
)
def
view_list
(
self
):
return
dic
t
()
return
super
()
.
view_lis
t
()
@view_config
(
route_name
=
'jabatan-act'
,
renderer
=
'json'
,
permission
=
'read'
)
def
view_act
(
self
):
return
super
()
.
view_act
()
def
next_act
(
self
):
request
=
self
.
req
ses
=
request
.
session
params
=
request
.
params
url_dict
=
request
.
matchdict
if
url_dict
[
'act'
]
==
'grid'
:
columns
=
[
ColumnDT
(
Jabatan
.
id
,
mData
=
'id'
),
ColumnDT
(
Jabatan
.
kode
,
mData
=
'kode'
),
ColumnDT
(
Jabatan
.
nama
,
mData
=
'nama'
),
ColumnDT
(
Jabatan
.
nama_pendek
,
mData
=
'nama_pendek'
),
ColumnDT
(
Eselon
.
nama
,
mData
=
'eselon'
),
ColumnDT
(
Jabatan
.
jenis
,
mData
=
'jenis'
),
ColumnDT
(
Jabatan
.
status
,
mData
=
'status'
),
]
query
=
DBSession
.
query
()
.
select_from
(
Jabatan
)
.
\
outerjoin
(
Eselon
)
rowTable
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
rowTable
.
output_result
()
elif
url_dict
[
'act'
]
==
'hok'
:
if
url_dict
[
'act'
]
==
'hok'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
qry
=
DBSession
.
query
(
Jabatan
)
.
\
filter
(
Jabatan
.
status
==
1
)
.
\
...
...
@@ -171,184 +160,56 @@ class ViewJabatan(BaseView):
return
r
@view_config
(
route_name
=
'jabatan-add'
,
renderer
=
'templates/form
_input
.pt'
,
renderer
=
'templates/form.pt'
,
permission
=
'jabatan'
)
def
view_add
(
self
):
request
=
self
.
req
form
=
get_form
(
request
,
AddSchema
)
if
request
.
POST
:
if
'save'
in
request
.
POST
:
controls
=
request
.
POST
.
items
()
try
:
controls
=
form
.
validate
(
controls
)
except
ValidationFailure
as
e
:
form
.
set_appstruct
(
e
.
cstruct
)
return
dict
(
form
=
form
.
render
(),
scripts
=
""
)
save_request
(
request
,
dict
(
controls
))
return
route_list
(
request
)
return
dict
(
form
=
form
.
render
(),
scripts
=
""
)
# return dict(form=form.render())
return
super
()
.
view_add
()
@view_config
(
route_name
=
'jabatan-edit'
,
renderer
=
'templates/form
_input
.pt'
,
renderer
=
'templates/form.pt'
,
permission
=
'jabatan'
)
def
view_edt
(
self
):
request
=
self
.
req
q
=
query_id
(
request
)
row
=
q
.
first
()
if
not
row
:
return
id_not_found
(
request
)
form
=
get_form
(
request
,
EditSchema
)
if
request
.
POST
:
if
'save'
in
request
.
POST
:
controls
=
request
.
POST
.
items
()
try
:
controls
=
form
.
validate
(
controls
)
except
ValidationFailure
as
e
:
form
.
render
(
appstruct
=
e
.
cstruct
)
return
dict
(
form
=
form
.
render
(),
scripts
=
""
)
save_request
(
request
,
dict
(
controls
),
row
)
return
route_list
(
request
)
vals
=
row
.
to_dict
()
values
=
{}
for
val
in
vals
:
if
vals
[
val
]:
values
[
val
]
=
vals
[
val
]
values
[
'nama_pendek'
]
=
row
.
nama_pendek
or
''
values
[
'nama_lain'
]
=
row
.
nama_lain
or
''
if
not
row
.
jenis
:
values
[
'jenis'
]
=
0
form
.
render
(
appstruct
=
values
)
return
dict
(
form
=
form
.
render
(),
scripts
=
""
)
def
view_edit
(
self
):
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'jabatan-view'
,
renderer
=
'templates/form
_input
.pt'
,
@view_config
(
route_name
=
'jabatan-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'jabatan'
)
def
view_view
(
self
):
request
=
self
.
req
q
=
query_id
(
request
)
row
=
q
.
first
()
if
not
row
:
return
id_not_found
(
request
)
form
=
get_form
(
request
,
EditSchema
,
buttons
=
(
btn_cancel
,))
if
request
.
POST
:
return
route_list
(
request
)
values
=
row
.
to_dict
()
if
not
row
.
jenis
:
values
[
'jenis'
]
=
0
form
.
render
(
appstruct
=
values
)
return
dict
(
form
=
form
.
render
(
readonly
=
True
),
scripts
=
""
)
return
super
()
.
view_view
()
@view_config
(
route_name
=
'jabatan-delete'
,
renderer
=
'templates/form
_input
.pt'
,
@view_config
(
route_name
=
'jabatan-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'jabatan'
)
def
view_del
(
self
):
request
=
self
.
req
q
=
query_id
(
request
)
row
=
q
.
first
()
if
not
row
:
return
id_not_found
(
request
)
form
=
get_form
(
request
,
EditSchema
,
buttons
=
(
btn_delete
,
btn_cancel
,))
if
request
.
POST
:
if
'delete'
in
request
.
POST
:
msg
=
'Jabatan ID
%
d
%
s sudah dihapus.'
%
(
row
.
id
,
row
.
nama
)
q
.
delete
()
DBSession
.
flush
()
request
.
session
.
flash
(
msg
)
return
route_list
(
request
)
values
=
row
.
to_dict
()
if
not
row
.
jenis
:
values
[
'jenis'
]
=
0
form
.
render
(
appstruct
=
values
)
return
dict
(
form
=
form
.
render
(
readonly
=
True
),
scripts
=
""
)
def
form_validator
(
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
(
Jabatan
)
.
filter_by
(
id
=
uid
)
jabatan
=
q
.
first
()
else
:
jabatan
=
None
q
=
Jabatan
.
query_kode
(
value
[
'kode'
])
# DBSession.query(Jabatan).filter_by(kode=value['kode'])
found
=
q
.
first
()
if
jabatan
:
if
found
and
found
.
id
!=
jabatan
.
id
:
def
view_delete
(
self
):
return
super
()
.
view_delete
()
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
(
Jabatan
)
.
filter_by
(
id
=
uid
)
jabatan
=
q
.
first
()
else
:
jabatan
=
None
q
=
Jabatan
.
query_kode
(
value
[
'kode'
])
# DBSession.query(Jabatan).filter_by(kode=value['kode'])
found
=
q
.
first
()
if
jabatan
:
if
found
and
found
.
id
!=
jabatan
.
id
:
err_kode
()
elif
found
:
err_kode
()
elif
found
:
err_kode
()
found
=
Jabatan
.
query_nama
(
value
[
'nama'
])
.
first
()
if
jabatan
:
if
found
and
found
.
id
!=
jabatan
.
id
:
found
=
Jabatan
.
query_nama
(
value
[
'nama'
])
.
first
()
if
jabatan
:
if
found
and
found
.
id
!=
jabatan
.
id
:
err_nama
()
elif
found
:
err_nama
()
elif
found
:
err_nama
()
def
get_form
(
request
,
class_form
,
row
=
None
,
buttons
=
(
btn_save
,
btn_cancel
)):
schema
=
class_form
(
validator
=
form_validator
)
schema
=
schema
.
bind
(
daftar_jenis
=
JENIS
,
daftar_eselon
=
daftar_eselon
(),
)
schema
=
schema
.
bind
()
schema
.
request
=
request
if
row
:
schema
.
deserialize
(
row
)
return
Form
(
schema
,
buttons
=
buttons
)
def
save
(
values
,
user
,
row
=
None
):
if
not
row
:
row
=
Jabatan
()
values
[
'created'
]
=
datetime
.
now
()
values
[
'create_uid'
]
=
user
.
id
else
:
values
[
'updated'
]
=
datetime
.
now
()
values
[
'update_uid'
]
=
user
.
id
values
[
'status'
]
=
'status'
in
values
and
values
[
'status'
]
and
1
or
0
row
.
from_dict
(
values
)
DBSession
.
add
(
row
)
DBSession
.
flush
()
return
row
def
save_request
(
request
,
values
,
row
=
None
):
if
'id'
in
request
.
matchdict
:
values
[
'id'
]
=
request
.
matchdict
[
'id'
]
row
=
save
(
values
,
request
.
user
,
row
)
request
.
session
.
flash
(
'Jabatan sudah disimpan.'
)
def
route_list
(
request
):
return
HTTPFound
(
location
=
request
.
route_url
(
'jabatan'
))
def
query_id
(
request
):
return
DBSession
.
query
(
Jabatan
)
.
filter_by
(
id
=
request
.
matchdict
[
'id'
])
def
id_not_found
(
request
):
msg
=
'Jabatan ID
%
s Tidak Ditemukan.'
%
request
.
matchdict
[
'id'
]
request
.
session
.
flash
(
msg
,
'error'
)
return
route_list
(
request
)
opensipkd/base/views/kecamatan.py
View file @
dc70cf1
...
...
@@ -7,7 +7,7 @@ from pyramid.view import (view_config, )
from
.
import
widget_os
from
.dati2
import
dati2_widget
from
..models
import
DBSession
,
ResKecamatan
,
ResDati2
from
..models
import
DBSession
,
ResKecamatan
,
ResDati2
,
ResProvinsi
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
...detable
import
DeTable
...
...
@@ -46,7 +46,7 @@ class ListSchema(colander.Schema):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
searchable
=
False
,
orderable
=
False
,
visible
=
False
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
'100pt'
,
title
=
"Kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
)
kabupaten
=
colander
.
SchemaNode
(
colander
.
String
())
kabupaten
=
colander
.
SchemaNode
(
colander
.
String
()
,
field
=
ResDati2
.
nama
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
width
=
"30pt"
)
...
...
@@ -95,30 +95,10 @@ class Views(BaseView):
elif
found
:
err_nama
()
def
get_form
(
self
,
class_form
,
row
=
None
,
buttons
=
(
btn_save
,
btn_cancel
)):
schema
=
class_form
(
validator
=
self
.
form_validator
)
schema
=
schema
.
bind
(
request
=
self
.
req
,
dati2_list
=
ResDati2
.
get_list
())
schema
.
request
=
self
.
req
if
row
:
schema
.
deserialize
(
row
)
return
Form
(
schema
,
buttons
=
buttons
)
@view_config
(
route_name
=
'kecamatan-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'kecamatan'
)
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
)
return
super
()
.
view_view
()
@view_config
(
route_name
=
'kecamatan'
,
renderer
=
'templates/table.pt'
,
...
...
@@ -129,19 +109,15 @@ class Views(BaseView):
@view_config
(
route_name
=
'kecamatan-act'
,
renderer
=
'json'
,
permission
=
'view'
)
def
view_act
(
self
):
return
super
()
.
view_act
()
def
list_join
(
self
,
query
):
return
query
.
join
(
ResDati2
,
ResDati2
.
id
==
ResKecamatan
.
dati2_id
)
def
next_act
(
self
):
request
=
self
.
req
url_dict
=
request
.
matchdict
if
url_dict
[
'act'
]
==
'grid'
:
columns
=
[
ColumnDT
(
ResKecamatan
.
id
,
mData
=
'id'
),
ColumnDT
(
ResKecamatan
.
kode
,
mData
=
'kode'
),
ColumnDT
(
ResKecamatan
.
nama
,
mData
=
'nama'
),
ColumnDT
(
ResKecamatan
.
status
,
mData
=
'status'
),
ColumnDT
(
ResDati2
.
nama
,
mData
=
'kabupaten'
),
]
query
=
DBSession
.
query
()
.
select_from
(
ResKecamatan
)
\
.
join
(
ResDati2
,
ResDati2
.
id
==
ResKecamatan
.
dati2_id
)
row_table
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
row_table
.
output_result
()
elif
url_dict
[
'act'
]
==
'select'
:
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
}
...
...
@@ -152,14 +128,28 @@ class Views(BaseView):
def
view_add
(
self
):
return
super
(
Views
,
self
)
.
view_add
()
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
@view_config
(
route_name
=
'kecamatan-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'kecamatan'
)
def
view_edt
(
self
):
return
super
(
Views
,
self
)
.
view_edit
()
##########
# Delete
##########
@view_config
(
route_name
=
'kecamatan-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'kecamatan'
)
def
view_delete
(
self
):
...
...
opensipkd/base/views/log_app.py
View file @
dc70cf1
...
...
@@ -3,6 +3,7 @@ import json
import
colander
from
datatables
import
ColumnDT
from
deform
import
Form
,
widget
from
opensipkd.tools.buttons
import
btn_view
,
btn_delete
from
pyramid.httpexceptions
import
HTTPFound
from
pyramid.view
import
view_config
...
...
@@ -23,7 +24,7 @@ class AddSchema(colander.Schema):
missing
=
colander
.
drop
)
msg
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
TextAreaWidget
(
rows
=
10
,),
widget
=
widget
.
TextAreaWidget
(
rows
=
10
,
),
missing
=
colander
.
drop
)
...
...
@@ -34,88 +35,46 @@ class EditSchema(AddSchema):
)
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(),
visible
=
False
)
created_at
=
colander
.
SchemaNode
(
colander
.
DateTime
())
logger
=
colander
.
SchemaNode
(
colander
.
String
())
level
=
colander
.
SchemaNode
(
colander
.
String
())
msg
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
TextAreaWidget
(
rows
=
10
,
),
missing
=
colander
.
drop
)
class
Views
(
BaseView
):
@view_config
(
route_name
=
'log'
,
renderer
=
'templates/list.pt'
,
def
__init__
(
self
,
request
):
super
()
.
__init__
(
request
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'log'
self
.
list_route
=
'log'
self
.
list_buttons
=
(
btn_view
,
btn_delete
)
# self.add_schema = AddSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Log
self
.
list_schema
=
ListSchema
@view_config
(
route_name
=
'log'
,
renderer
=
'templates/table.pt'
,
permission
=
'log'
)
def
view_list
(
self
):
url
=
"log"
cols
=
[
{
'title'
:
"ID"
,
'data'
:
"id"
},
{
'title'
:
"Date/Time"
,
'data'
:
"created_at"
,
'width'
:
"150"
},
{
'title'
:
"Logger"
,
'data'
:
"logger"
,
'width'
:
"50"
},
# {'title': "Trace", 'data': "trace", 'width': "50"},
{
'title'
:
"Level"
,
'data'
:
"level"
,
'width'
:
"50"
},
{
'title'
:
"Message"
,
'data'
:
"msg"
},
]
return
super
()
.
view_list
()
col_defs
=
[{
"searchable"
:
False
,
"visible"
:
False
,
"targets"
:
[
0
]
}]
buttons
=
"btn_view"
return
dict
(
cols
=
cols
,
url
=
url
,
col_defs
=
json
.
dumps
(
col_defs
),
buttons
=
buttons
)
##########
# Action #
##########
@view_config
(
route_name
=
'log-act'
,
renderer
=
'json_rpc'
,
permission
=
'log'
)
def
view_act
(
self
):
request
=
self
.
req
url_dict
=
request
.
matchdict
if
url_dict
[
'act'
]
==
'grid'
:
columns
=
[
ColumnDT
(
Log
.
id
,
mData
=
'id'
),
ColumnDT
(
Log
.
logger
,
mData
=
'logger'
),
ColumnDT
(
Log
.
level
,
mData
=
'level'
),
# ColumnDT(Log.trace, mData='trace'),
ColumnDT
(
Log
.
msg
,
mData
=
'msg'
),
ColumnDT
(
Log
.
created_at
,
mData
=
'created_at'
,
search_method
=
'date'
),
]
query
=
DBSession
.
query
()
.
select_from
(
Log
)
rowTable
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
rowTable
.
output_result
()
return
super
()
.
view_act
()
@view_config
(
route_name
=
'log-view'
,
renderer
=
'templates/form_input.pt'
,
permission
=
'log'
)
def
view_view
(
self
):
request
=
self
.
req
q
=
self
.
query_id
()
row
=
q
.
first
()
if
not
row
:
return
self
.
id_not_found
()
form
=
self
.
get_form
(
EditSchema
,
buttons
=
(
"Tutup"
,))
if
request
.
POST
:
return
self
.
route_list
()
values
=
row
.
to_dict
()
form
.
set_appstruct
(
values
)
return
dict
(
form
=
form
.
render
(
readonly
=
True
),
scripts
=
""
)
def
query_id
(
self
):
request
=
self
.
req
return
DBSession
.
query
(
Log
)
.
filter_by
(
id
=
request
.
matchdict
[
'id'
])
def
id_not_found
(
self
):
request
=
self
.
req
msg
=
'BillerModel ID
%
s Tidak Ditemukan.'
%
request
.
matchdict
[
'id'
]
request
.
session
.
flash
(
msg
,
'error'
)
return
self
.
route_list
()
def
route_list
(
self
):
request
=
self
.
req
return
HTTPFound
(
location
=
request
.
route_url
(
'log'
))
def
get_form
(
self
,
class_form
,
row
=
None
,
buttons
=
(
'simpan'
,
'batal'
)):
request
=
self
.
req
schema
=
class_form
(
validator
=
self
.
form_validator
)
schema
=
schema
.
bind
()
schema
.
request
=
request
if
row
:
schema
.
deserialize
(
row
)
return
Form
(
schema
,
buttons
=
buttons
)
def
form_validator
(
self
,
form
,
value
):
pass
return
super
()
.
view_view
()
opensipkd/base/views/parameter.py
View file @
dc70cf1
from
datetime
import
datetime
import
colander
from
datatables
import
ColumnDT
,
DataTables
from
deform
import
(
Form
,
widget
,
ValidationFailure
,
)
from
pyramid.httpexceptions
import
(
HTTPFound
,
)
from
pyramid.view
import
(
view_config
,
)
from
opensipkd.tools.buttons
import
btn_close
,
btn_cancel
,
btn_save
from
deform
import
(
widget
,
)
from
pyramid.view
import
(
view_config
,
)
from
.
import
BaseView
from
..models
import
(
DBSession
,
Parameter
)
# from okeuangan.views.base_view import BaseViews
SESS_ADD_FAILED
=
'Tambah parameter gagal'
SESS_EDIT_FAILED
=
'Edit parameter gagal'
class
AddSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
...
...
@@ -49,203 +31,58 @@ class AddSchema(colander.Schema):
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
))
# id = colander.SchemaNode(
# colander.Integer(),
# oid="id",)
########
# List #
########
@view_config
(
route_name
=
'parameter'
,
renderer
=
'templates/parameter/list.pt'
,
permission
=
'user-edit'
)
def
view_list
(
request
):
return
dict
(
a
=
{})
##########
# Action #
##########
@view_config
(
route_name
=
'parameter-act'
,
renderer
=
'json'
,
permission
=
'user-edit'
)
def
parameter_act
(
request
):
ses
=
request
.
session
req
=
request
params
=
req
.
params
url_dict
=
req
.
matchdict
if
url_dict
[
'act'
]
==
'grid'
:
columns
=
[
ColumnDT
(
Parameter
.
id
,
mData
=
"id"
),
ColumnDT
(
Parameter
.
kode
,
mData
=
"kode"
),
ColumnDT
(
Parameter
.
nama
,
mData
=
"nama"
),
ColumnDT
(
Parameter
.
value
,
mData
=
"value"
),
ColumnDT
(
Parameter
.
status
,
mData
=
"status"
)]
query
=
DBSession
.
query
()
.
select_from
(
Parameter
)
row_table
=
DataTables
(
req
.
GET
,
query
,
columns
)
return
row_table
.
output_result
()
elif
url_dict
[
'act'
]
==
'hon'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
rows
=
DBSession
.
query
(
Parameter
.
id
,
Parameter
.
nama
)
.
filter
(
Parameter
.
nama
.
ilike
(
'
%
{term}
%
'
.
format
(
term
=
term
)))
.
\
order_by
(
Parameter
.
nama
)
.
all
()
r
=
[]
for
k
in
rows
:
d
=
dict
(
id
=
k
[
0
],
value
=
k
[
1
])
r
.
append
(
d
)
return
r
#######
# Add #
#######
def
form_validator
(
form
,
value
):
pass
def
get_form
(
request
,
class_form
,
row
=
None
,
buttons
=
(
btn_save
,
btn_cancel
)):
schema
=
class_form
(
validator
=
form_validator
)
schema
=
schema
.
bind
()
# perm_choice=PERM_CHOICE)
schema
.
request
=
request
if
row
:
schema
.
deserialize
(
row
)
return
Form
(
schema
,
buttons
=
buttons
)
def
save
(
values
,
user
,
row
=
None
):
if
not
row
:
row
=
Parameter
()
row
.
created
=
datetime
.
now
()
row
.
create_uid
=
user
.
id
row
.
from_dict
(
values
)
row
.
updated
=
datetime
.
now
()
row
.
update_uid
=
user
.
id
row
.
status
=
'status'
in
values
and
values
[
'status'
]
and
1
or
0
DBSession
.
add
(
row
)
DBSession
.
flush
()
return
row
def
save_request
(
request
,
values
,
row
=
None
):
if
'id'
in
request
.
matchdict
:
values
[
'id'
]
=
request
.
matchdict
[
'id'
]
row
=
save
(
values
,
request
.
user
,
row
)
request
.
session
.
flash
(
'Parameter sudah disimpan.'
)
def
routes_list
(
request
):
return
HTTPFound
(
location
=
request
.
route_url
(
'parameter'
))
def
session_failed
(
request
,
session_name
):
r
=
dict
(
form
=
request
.
session
[
session_name
])
del
request
.
session
[
session_name
]
return
r
@view_config
(
route_name
=
'parameter-add'
,
renderer
=
'templates/parameter/add.pt'
,
permission
=
'user-edit'
)
def
view_add
(
request
):
req
=
request
ses
=
req
.
session
form
=
get_form
(
request
,
AddSchema
)
if
req
.
POST
:
if
'simpan'
in
req
.
POST
:
controls
=
list
(
req
.
POST
.
items
())
try
:
c
=
form
.
validate
(
controls
)
except
ValidationFailure
as
e
:
form
.
set_appstruct
(
e
.
cstruct
)
return
dict
(
form
=
form
)
save_request
(
request
,
dict
(
controls
))
return
routes_list
(
request
)
elif
SESS_ADD_FAILED
in
req
.
session
:
return
session_failed
(
request
,
SESS_ADD_FAILED
)
return
dict
(
form
=
form
)
########
# Edit #
########
def
query_id
(
request
):
return
DBSession
.
query
(
Parameter
)
.
filter_by
(
id
=
request
.
matchdict
[
'id'
])
def
id_not_found
(
request
):
msg
=
'Parameter ID
%
s Tidak Ditemukan.'
%
request
.
matchdict
[
'id'
]
request
.
session
.
flash
(
msg
,
'error'
)
return
routes_list
(
request
)
@view_config
(
route_name
=
'parameter-edit'
,
renderer
=
'templates/parameter/edit.pt'
,
permission
=
'user-edit'
)
def
view_edit
(
request
):
row
=
Parameter
.
query_id
(
request
.
matchdict
[
'id'
])
.
first
()
if
not
row
:
return
id_not_found
(
request
)
form
=
get_form
(
request
,
EditSchema
)
if
request
.
POST
:
if
'save'
in
request
.
POST
:
controls
=
list
(
request
.
POST
.
items
())
try
:
c
=
form
.
validate
(
controls
)
except
ValidationFailure
as
e
:
form
.
set_appstruct
(
e
.
cstruct
)
return
dict
(
form
=
form
.
render
())
save_request
(
request
,
dict
(
controls
),
row
)
return
routes_list
(
request
)
elif
SESS_EDIT_FAILED
in
request
.
session
:
return
session_failed
(
request
,
SESS_EDIT_FAILED
)
values
=
row
.
to_dict
()
form
.
set_appstruct
(
values
)
return
dict
(
form
=
form
.
render
())
@view_config
(
route_name
=
'parameter-view'
,
renderer
=
'templates/parameter/edit.pt'
,
permission
=
'user-view'
)
def
view_view
(
request
):
qry
=
query_id
(
request
)
row
=
qry
.
first
()
if
not
row
:
return
id_not_found
(
request
)
form
=
get_form
(
request
,
EditSchema
,
buttons
=
(
btn_close
,))
if
request
.
POST
:
return
routes_list
(
request
)
values
=
row
.
to_dict
()
form
.
set_appstruct
(
values
)
return
dict
(
form
=
form
.
render
(
readonly
=
True
))
##########
# Delete #
##########
@view_config
(
route_name
=
'parameter-delete'
,
renderer
=
'templates/parameter/delete.pt'
,
permission
=
'user-edit'
)
def
view_delete
(
request
):
q
=
Parameter
.
query_id
(
request
.
matchdict
[
'id'
])
row
=
q
.
first
()
if
not
row
:
return
id_not_found
(
request
)
form
=
Form
(
colander
.
Schema
(),
buttons
=
(
'hapus'
,
'batal'
))
if
request
.
POST
:
if
'hapus'
in
request
.
POST
:
msg
=
'Parameter ID
%
d
%
s sudah dihapus.'
%
(
row
.
id
,
row
.
nama
)
try
:
q
.
delete
()
DBSession
.
flush
()
except
:
msg
=
'Parameter ID
%
d
%
s tidak dapat dihapus.'
%
(
row
.
id
,
row
.
nama
)
request
.
session
.
flash
(
msg
)
return
routes_list
(
request
)
return
dict
(
row
=
row
,
form
=
form
.
render
())
widget
=
widget
.
HiddenWidget
(
readonly
=
True
),
visible
=
False
)
class
Views
(
BaseView
):
def
__init__
(
self
,
request
):
super
(
Views
,
self
)
.
__init__
(
request
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'parameter'
self
.
list_route
=
'parameter'
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Parameter
self
.
list_schema
=
EditSchema
@view_config
(
route_name
=
'parameter'
,
renderer
=
'templates/table.pt'
,
permission
=
'user-edit'
)
def
view_list
(
self
):
return
super
()
.
view_list
()
@view_config
(
route_name
=
'parameter-act'
,
renderer
=
'json'
,
permission
=
'user-edit'
)
def
view_act
(
self
):
return
super
()
.
view_act
()
def
next_act
(
self
):
url_dict
=
self
.
req
.
matchdict
params
=
self
.
params
if
url_dict
[
'act'
]
==
'hon'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
rows
=
DBSession
.
query
(
Parameter
.
id
,
Parameter
.
nama
)
.
\
filter
(
Parameter
.
nama
.
ilike
(
'
%
{term}
%
'
.
format
(
term
=
term
)))
.
\
order_by
(
Parameter
.
nama
)
.
all
()
r
=
[
dict
(
id
=
k
[
0
],
value
=
k
[
1
])
for
k
in
rows
]
return
r
@view_config
(
route_name
=
'parameter-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
def
view_add
(
self
):
return
super
()
.
view_add
()
@view_config
(
route_name
=
'parameter-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
def
view_edit
(
self
):
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'parameter-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-view'
)
def
view_view
(
self
):
return
super
()
.
view_view
()
@view_config
(
route_name
=
'parameter-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
def
view_delete
(
self
):
return
super
()
.
view_delete
()
opensipkd/base/views/partner_base.py
View file @
dc70cf1
...
...
@@ -6,16 +6,19 @@ from opensipkd.base.views.kecamatan import kecamatan_widget
from
opensipkd.base.views.provinsi
import
provinsi_widget
class
Partner
Schema
(
colander
.
Schema
):
class
Nama
Schema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
,
title
=
"Kode"
)
title
=
"Kode"
,
width
=
"100pt"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"nama"
)
class
PartnerSchema
(
NamaSchema
):
alamat_1
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
...
...
opensipkd/base/views/permission.py
View file @
dc70cf1
# from ..tools import row2dict, xls_reader
import
colander
from
deform
import
(
Form
,
widget
,
ValidationFailure
,
)
from
pyramid.httpexceptions
import
(
HTTPFound
,
)
from
pyramid.view
import
(
view_config
,
)
from
deform
import
(
widget
,
)
from
pyramid.view
import
(
view_config
,
)
from
..models
import
DBSession
from
..models
import
Permission
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
..views
import
BaseView
SESS_ADD_FAILED
=
'Tambah permission gagal'
SESS_EDIT_FAILED
=
'Edit permission gagal'
...
...
@@ -33,194 +22,46 @@ class AddSchema(colander.Schema):
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(),
)
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(),
visible
=
False
)
class
ViewPermission
(
BaseView
):
########
# List #
########
@view_config
(
route_name
=
'permission'
,
renderer
=
'templates/permission/list.pt'
,
def
__init__
(
self
,
request
):
super
()
.
__init__
(
request
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'permission'
self
.
list_route
=
'permission'
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Permission
self
.
list_schema
=
EditSchema
@view_config
(
route_name
=
'permission'
,
renderer
=
'templates/table.pt'
,
permission
=
'user-edit'
)
def
view_list
(
self
):
return
dict
(
a
=
{}
)
return
super
()
.
view_list
(
)
##########
# Action #
##########
@view_config
(
route_name
=
'permission-act'
,
renderer
=
'json'
,
permission
=
'user-edit'
)
def
view_act
(
self
):
request
=
self
.
req
ses
=
request
.
session
params
=
request
.
params
url_dict
=
request
.
matchdict
if
url_dict
[
'act'
]
==
'grid'
:
columns
=
[
ColumnDT
(
Permission
.
id
,
mData
=
'id'
),
ColumnDT
(
Permission
.
perm_name
,
mData
=
'perm_name'
),
ColumnDT
(
Permission
.
description
,
mData
=
'description'
),
]
query
=
DBSession
.
query
()
.
select_from
(
Permission
)
rowTable
=
DataTables
(
request
.
GET
,
query
,
columns
)
return
rowTable
.
output_result
()
return
super
()
.
view_act
()
#######
# ADD #
#######
@view_config
(
route_name
=
'permission-add'
,
renderer
=
'templates/permission/add.pt'
,
@view_config
(
route_name
=
'permission-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
def
view_add
(
self
):
request
=
self
.
req
form
=
get_form
(
request
,
AddSchema
)
if
request
.
POST
:
if
'simpan'
in
request
.
POST
:
controls
=
request
.
POST
.
items
()
try
:
c
=
form
.
validate
(
controls
)
except
ValidationFailure
as
e
:
form
.
render
(
appstruct
=
e
.
cstruct
)
return
dict
(
form
=
form
)
save_request
(
request
,
dict
(
c
))
return
route_list
(
request
)
return
dict
(
form
=
form
)
return
super
()
.
view_add
()
##########
# Edit #
##########
@view_config
(
route_name
=
'permission-edit'
,
renderer
=
'templates/permission/edt.pt'
,
@view_config
(
route_name
=
'permission-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
def
view_edt
(
self
):
request
=
self
.
req
q
=
query_id
(
request
)
row
=
q
.
first
()
if
not
row
:
return
id_not_found
(
request
)
uid
=
row
.
id
form
=
get_form
(
request
,
EditSchema
)
if
request
.
POST
:
if
'simpan'
in
request
.
POST
:
controls
=
request
.
POST
.
items
()
try
:
controls
=
form
.
validate
(
controls
)
except
ValidationFailure
as
e
:
form
.
render
(
appstruct
=
e
.
cstruct
)
return
dict
(
form
=
form
)
save_request
(
request
,
dict
(
controls
),
row
)
return
route_list
(
request
)
return
super
()
.
view_edit
()
val
=
row
.
to_dict
()
values
=
{}
for
v
in
val
:
if
val
[
v
]:
values
[
v
]
=
val
[
v
]
form
.
render
(
appstruct
=
values
)
return
dict
(
form
=
form
)
##########
# Delete #
##########
@view_config
(
route_name
=
'permission-delete'
,
renderer
=
'templates/permission/del.pt'
,
@view_config
(
route_name
=
'permission-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
def
view_del
(
self
):
request
=
self
.
req
q
=
query_id
(
request
)
row
=
q
.
first
()
if
not
row
:
return
id_not_found
(
request
)
form
=
Form
(
colander
.
Schema
(),
buttons
=
(
'hapus'
,
'batal'
))
if
request
.
POST
:
if
'hapus'
in
request
.
POST
:
msg
=
'permission ID
%
d sudah dihapus.'
%
(
row
.
id
)
q
.
delete
()
DBSession
.
flush
()
request
.
session
.
flash
(
msg
)
return
route_list
(
request
)
return
dict
(
row
=
row
,
form
=
form
.
render
())
#######
# Add #
#######
def
form_validator
(
form
,
value
):
# def err_kode():
# raise colander.Invalid(form,
# 'Kode %s sudah digunakan oleh %s' % (
# value['kode'], found.nama))
# def err_login():
# raise colander.Invalid(form,
# 'Login %s sudah digunakan oleh kode %s' % (
# value['user_nm'], found.row.nama))
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
q
=
DBSession
.
query
(
Permission
)
.
filter_by
(
id
=
uid
)
row
=
q
.
first
()
else
:
row
=
None
# q = Permission.query_kode(value['kode']) #DBSession.query(Permission).filter_by(kode=value['kode'])
# found = q.first()
# if row:
# if found and found.id != row.id:
# err_kode()
# elif found:
# err_kode()
def
get_form
(
request
,
class_form
,
row
=
None
):
schema
=
class_form
(
validator
=
form_validator
)
schema
=
schema
.
bind
()
schema
.
request
=
request
if
row
:
schema
.
deserialize
(
row
)
return
Form
(
schema
,
buttons
=
(
'simpan'
,
'batal'
))
def
save
(
values
,
user
,
row
=
None
):
if
not
row
:
row
=
Permission
()
values
[
'perm_name'
]
=
(
values
[
'perm_name'
])
values
[
'description'
]
=
(
values
[
'description'
])
row
.
from_dict
(
values
)
DBSession
.
add
(
row
)
DBSession
.
flush
()
return
row
def
save_request
(
request
,
values
,
row
=
None
):
if
'id'
in
request
.
matchdict
:
values
[
'id'
]
=
request
.
matchdict
[
'id'
]
row
=
save
(
values
,
request
.
user
,
row
)
request
.
session
.
flash
(
'Permission sudah disimpan.'
)
return
row
def
route_list
(
request
):
return
HTTPFound
(
location
=
request
.
route_url
(
'permission'
))
########
# Edit #
########
def
query_id
(
request
):
return
DBSession
.
query
(
Permission
)
.
filter_by
(
id
=
request
.
matchdict
[
'id'
])
def
id_not_found
(
request
):
msg
=
'Permission ID
%
s Tidak Ditemukan.'
%
request
.
matchdict
[
'id'
]
request
.
session
.
flash
(
msg
,
'error'
)
return
route_list
(
request
)
def
view_delete
(
self
):
return
super
()
.
view_delete
()
opensipkd/base/views/provinsi.py
View file @
dc70cf1
import
json
from
datetime
import
datetime
import
colander
from
deform
import
(
Form
,
widget
,
)
from
opensipkd.tools.buttons
import
btn_cancel
,
btn_save
,
btn_close
,
btn_add
,
btn_edit
,
btn_delete
,
btn_view
from
pyramid.httpexceptions
import
(
HTTPFound
,
)
from
deform
import
(
widget
,
)
from
pyramid.view
import
(
view_config
,
)
from
sqlalchemy.orm
import
aliased
from
.
import
widget_os
from
..models
import
DBSession
,
ResProvinsi
,
kategori_provinsi
,
flush
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
..models
import
DBSession
,
ResProvinsi
,
kategori_provinsi
from
..views
import
BaseView
SESS_ADD_FAILED
=
'Tambah provinsi gagal'
SESS_EDIT_FAILED
=
'Edit provinsi gagal'
...
...
@@ -42,7 +36,8 @@ class AddSchema(colander.Schema):
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
))
widget
=
widget
.
HiddenWidget
(
readonly
=
True
),
visible
=
False
)
class
ListSchema
(
colander
.
Schema
):
...
...
@@ -116,16 +111,16 @@ class ViewProvinsi(BaseView):
return
super
(
ViewProvinsi
,
self
)
.
view_act
()
@view_config
(
route_name
=
'provinsi-add'
,
renderer
=
'templates/form
_input
.pt'
,
permission
=
'provinsi'
)
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
_input
.pt'
,
permission
=
'provinsi'
)
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
_input
.pt'
,
permission
=
'provinsi'
)
renderer
=
'templates/form.pt'
,
permission
=
'provinsi'
)
def
view_delete
(
self
):
return
super
(
ViewProvinsi
,
self
)
.
view_delete
()
opensipkd/base/views/routes.py
View file @
dc70cf1
from
pyramid.view
import
view_config
from
pyramid.httpexceptions
import
(
HTTPFound
,
HTTPNotFound
,
)
import
colander
from
deform
import
(
Form
,
widget
,
ValidationFailure
,
Button
,
)
from
..models
import
(
DBSession
,
Route
,
)
from
datatables
import
(
ColumnDT
,
DataTables
,
)
from
datetime
import
datetime
import
json
ReadOnlyWidget
=
widget
.
TextInputWidget
(
readonly
=
True
)
from
deform
import
(
widget
,
)
from
opensipkd.tools.buttons
import
btn_view
,
btn_edit
,
btn_delete
from
pyramid.view
import
view_config
from
.
import
BaseView
from
..models
import
(
DBSession
,
Route
,
)
form_params
=
dict
(
scripts
=
""
)
list_params
=
dict
(
cols
=
[{
'title'
:
"ID"
,
'data'
:
"id"
},
{
'title'
:
"Kode"
,
'data'
:
"kode"
},
{
'title'
:
"Nama"
,
'data'
:
"nama"
},
{
'title'
:
"Path"
,
'data'
:
"path"
},
{
'title'
:
"Type"
,
'data'
:
"typ"
,
'class'
:
"text-center"
,
'width'
:
"50"
},
],
col_defs
=
json
.
dumps
([
{
"searchable"
:
False
,
"visible"
:
False
,
"targets"
:
[
0
],
},
{
"searchable"
:
True
,
"orderable"
:
True
,
"targets"
:
[
1
,
2
,
3
],
}
]),
buttons
=
'btn_view, btn_add, btn_edit_no_id, btn_delete, btn_close'
,
url
=
"/routes"
)
class
EditSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
...
...
@@ -56,149 +16,84 @@ class EditSchema(colander.Schema):
colander
.
String
(),
title
=
'Nama'
)
def
form_validator
(
form
,
values
):
def
err_nama
():
raise
colander
.
Invalid
(
form
,
'Nama
%
s sudah digunakan oleh ID
%
s'
%
(
values
[
'nama'
],
found
.
id
)
)
def
err_kode
():
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh ID
%
s'
%
(
values
[
'kode'
],
found
.
id
)
)
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
q
=
DBSession
.
query
(
Route
)
.
filter_by
(
id
=
uid
)
row
=
q
.
first
()
else
:
row
=
None
# cek nama
q
=
Route
.
query
()
.
\
filter_by
(
nama
=
values
[
'nama'
])
found
=
q
.
first
()
if
row
:
if
found
and
found
.
id
!=
row
.
id
:
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
HiddenWidget
(),
visible
=
False
)
kode
=
colander
.
SchemaNode
(
colander
.
String
())
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
'Nama'
)
path
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
'Path'
)
type
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
"50pt"
)
class
Views
(
BaseView
):
def
__init__
(
self
,
request
):
super
()
.
__init__
(
request
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'routes'
self
.
list_route
=
'routes'
self
.
list_buttons
=
(
btn_view
,
btn_edit
,
btn_delete
)
# self.add_schema = AddSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Route
self
.
list_schema
=
ListSchema
@view_config
(
route_name
=
'routes'
,
renderer
=
'templates/table.pt'
,
permission
=
'edit-title'
)
def
view_list
(
self
):
return
super
()
.
view_list
()
def
form_validator
(
self
,
form
,
values
):
def
err_nama
():
raise
colander
.
Invalid
(
form
,
'Nama
%
s sudah digunakan oleh ID
%
s'
%
(
values
[
'nama'
],
found
.
id
)
)
def
err_kode
():
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh ID
%
s'
%
(
values
[
'kode'
],
found
.
id
)
)
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
q
=
DBSession
.
query
(
Route
)
.
filter_by
(
id
=
uid
)
row
=
q
.
first
()
else
:
row
=
None
# cek nama
q
=
Route
.
query
()
.
\
filter_by
(
nama
=
values
[
'nama'
])
found
=
q
.
first
()
if
row
:
if
found
and
found
.
id
!=
row
.
id
:
err_nama
()
elif
found
:
err_nama
()
elif
found
:
err_nama
()
# cek kode
q
=
Route
.
query
()
.
\
filter_by
(
kode
=
values
[
'kode'
])
found
=
q
.
first
()
if
row
:
if
found
and
found
.
id
!=
row
.
id
:
# cek kode
q
=
Route
.
query
()
.
\
filter_by
(
kode
=
values
[
'kode'
])
found
=
q
.
first
()
if
row
:
if
found
and
found
.
id
!=
row
.
id
:
err_kode
()
elif
found
:
err_kode
()
elif
found
:
err_kode
()
########
# List #
########
@view_config
(
route_name
=
'routes'
,
renderer
=
'templates/list.pt'
,
permission
=
'edit-title'
)
def
view_list
(
request
):
return
list_params
##########
# Action #
##########
@view_config
(
route_name
=
'routes-act'
,
renderer
=
'json'
,
permission
=
'edit-title'
)
def
routes_act
(
request
):
ses
=
request
.
session
req
=
request
params
=
req
.
params
url_dict
=
req
.
matchdict
if
url_dict
[
'act'
]
==
'grid'
:
columns
=
[]
columns
.
append
(
ColumnDT
(
Route
.
id
,
mData
=
"id"
))
columns
.
append
(
ColumnDT
(
Route
.
kode
,
mData
=
"kode"
))
columns
.
append
(
ColumnDT
(
Route
.
nama
,
mData
=
"nama"
))
columns
.
append
(
ColumnDT
(
Route
.
path
,
mData
=
"path"
))
columns
.
append
(
ColumnDT
(
Route
.
type
,
mData
=
"typ"
))
query
=
DBSession
.
query
()
.
select_from
(
Route
)
rowTable
=
DataTables
(
req
.
GET
,
query
,
columns
)
return
rowTable
.
output_result
()
elif
url_dict
[
'act'
]
==
'hon'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
rows
=
DBSession
.
query
(
Route
.
id
,
Route
.
nama
)
.
filter
(
Route
.
nama
.
ilike
(
'
%
{term}
%
'
.
format
(
term
=
term
)))
.
\
order_by
(
Route
.
nama
)
.
all
()
r
=
[]
for
k
in
rows
:
d
=
dict
(
id
=
k
[
0
],
value
=
k
[
1
])
r
.
append
(
d
)
return
r
def
get_form
(
request
,
class_form
,
row
=
None
):
schema
=
class_form
()
# validator=form_validator
schema
.
request
=
request
return
Form
(
schema
,
buttons
=
(
'simpan'
,
'tutup'
))
def
save
(
values
,
user
,
row
=
None
):
if
not
row
:
row
=
Route
()
row
.
created
=
datetime
.
now
()
row
.
create_uid
=
user
.
id
row
.
from_dict
(
values
)
row
.
updated
=
datetime
.
now
()
row
.
update_uid
=
user
.
id
row
.
status
=
'status'
in
values
and
values
[
'status'
]
and
1
or
0
DBSession
.
add
(
row
)
DBSession
.
flush
()
return
row
def
save_request
(
request
,
values
,
row
=
None
):
if
'id'
in
request
.
matchdict
:
values
[
'id'
]
=
request
.
matchdict
[
'id'
]
row
=
save
(
values
,
request
.
user
,
row
)
request
.
session
.
flash
(
'Routes sudah disimpan.'
)
def
routes_list
(
request
):
return
HTTPFound
(
location
=
request
.
route_url
(
'routes'
))
########
# Edit #
########
def
query_id
(
request
):
return
DBSession
.
query
(
Route
)
.
filter_by
(
id
=
request
.
matchdict
[
'id'
])
@view_config
(
route_name
=
'routes-edit'
,
renderer
=
'templates/form-simple.pt'
,
permission
=
'edit-title'
)
def
view_routes_edit
(
request
):
row
=
Route
.
query_id
(
request
.
matchdict
[
'id'
])
.
first
()
if
not
row
:
return
HTTPNotFound
()
form
=
get_form
(
request
,
EditSchema
)
if
request
.
POST
:
if
'simpan'
in
request
.
POST
:
controls
=
list
(
request
.
POST
.
items
())
try
:
c
=
form
.
validate
(
controls
)
except
ValidationFailure
as
e
:
form
.
render
(
e
.
cstruct
)
return
dict
(
form
=
form
)
save_request
(
request
,
dict
(
c
),
row
)
return
routes_list
(
request
)
@view_config
(
route_name
=
'routes-act'
,
renderer
=
'json'
,
permission
=
'edit-title'
)
def
routes_act
(
self
):
return
super
()
.
view_act
()
values
=
row
.
to_dict
()
return
dict
(
form
=
form
.
render
(
appstruct
=
values
))
form
.
set_appstruct
(
values
)
return
dict
(
form
=
form
)
@view_config
(
route_name
=
'routes-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'edit-title'
)
def
view_edit
(
self
):
return
super
()
.
view_edit
()
opensipkd/base/views/user.py
View file @
dc70cf1
...
...
@@ -180,40 +180,6 @@ class Views(BaseView):
permission
=
'user-edit'
)
def
view_edit
(
self
):
return
super
(
Views
,
self
)
.
view_edit
()
# q = DBSession.query(User).filter_by(id=request.matchdict['id'])
# if request.user.company_id:
# q = q.filter_by(company_id=request.user.company_id)
# user = q.first()
# if not user:
# return HTTPNotFound()
# if user.id == request.user.id:
# form = get_form(request, AddSchema, user)
# else:
# if 'opensipkd.webr.models' in get_modules():
# form = get_form(request, EditSchema2, user)
# else:
# form = get_form(request, EditSchema, user)
# resp = dict(title=_('Edit user'))
# if not request.POST:
# d = user.to_dict()
# d['groups'] = user_group_set(user)
# resp['form'] = form.render(appstruct=d)
# return resp
# if 'save' not in request.POST:
# return HTTPFound(location=request.route_url('user'))
# items = request.POST.items()
# try:
# c = form.validate(items)
# except ValidationFailure:
# resp['form'] = form.render()
# return resp
# update(request, user, dict(c.items()))
# data = dict(username=user.user_name)
# ts = _('user-updated', default='${username} profile updated', mapping=data)
# request.session.flash(ts)
# return HTTPFound(location=request.route_url('user'))
@view_config
(
route_name
=
'user-view'
,
renderer
=
'templates/form.pt'
,
...
...
opensipkd/base/views/widget_os.py
View file @
dc70cf1
...
...
@@ -181,8 +181,8 @@ class Select2MsWidget(Select2Widget):
See `select2 docs on tagging <https://select2.org/tagging>`_ for
more details.
"""
template
=
"select2_ms.pt"
template
=
"select2_ms.pt"
class
QtyWidget
(
Widget
):
template
=
"opensipkd.base:/views/templates/qty.pt"
...
...
opensipkd/base/views/widgets/readonly/select.pt
View file @
dc70cf1
...
...
@@ -22,5 +22,4 @@
>${description}</p>
</tal:block>
</tal:if>
</tal:loop>
opensipkd/detable/detable.py
View file @
dc70cf1
...
...
@@ -11,6 +11,8 @@ from deform import field
from
.
import
widget
log
=
logging
.
getLogger
(
__name__
)
class
DeTable
(
field
.
Field
):
"""
Field representing an entire form.
...
...
@@ -92,6 +94,7 @@ class DeTable(field.Field):
"""
css_class
=
"deform"
# bw compat only; pass a widget to override
def
__init__
(
self
,
schema
,
...
...
@@ -117,7 +120,7 @@ class DeTable(field.Field):
btn_delete_js
=
"{window.location = o
%
sUri+'/'+m
%
sID+'/delete
%
s';}"
%
(
tableid
,
tableid
,
params
)
btn_csv_js
=
"{window.location = o
%
sUri+'/csv/act
%
s';}"
%
(
tableid
,
params
)
btn_pdf_js
=
"{window.open(o
%
sUri+'/pdf/act
%
s');}"
%
(
tableid
,
params
)
action_suffix
=
f
"{action_suffix}{params}"
action_suffix
=
f
"{action_suffix}{params}"
field
.
Field
.
__init__
(
self
,
schema
,
**
kw
)
_buttons
=
[]
for
button
in
buttons
:
...
...
@@ -146,10 +149,9 @@ class DeTable(field.Field):
table_widget
=
getattr
(
schema
,
"widget"
,
None
)
if
table_widget
is
None
:
table_widget
=
widget
.
TableWidget
()
self
.
widget
=
table_widget
columns
=
[]
cols2
=
[]
cols2
=
[]
for
f
in
schema
:
d
=
{
'data'
:
f
.
name
}
data
=
[]
...
...
@@ -160,7 +162,7 @@ class DeTable(field.Field):
if
hasattr
(
f
,
'aligned'
):
d
[
"className"
]
=
f
.
aligned
data
.
append
(
f
"className:
{f.aligned}
"
)
data
.
append
(
f
"className:
'{f.aligned}'
"
)
if
hasattr
(
f
,
'searchable'
):
d
[
"searchable"
]
=
f
.
searchable
data
.
append
(
f
"searchable: {f.searchable}"
)
...
...
@@ -173,30 +175,40 @@ class DeTable(field.Field):
d
[
"orderable"
]
=
f
.
orderable
data
.
append
(
f
"orderable: {f.orderable}"
)
thousand
=
hasattr
(
f
,
'thousand'
)
and
f
.
thousand
or
None
separator
=
thousand
and
"separator"
in
thousand
and
thousand
[
"separator"
]
or
','
decimal
=
thousand
and
"decimal"
in
thousand
and
thousand
[
"decimal"
]
or
'.'
point
=
thousand
and
"point"
in
thousand
and
thousand
[
"point"
]
or
2
currency
=
thousand
and
"currency"
in
thousand
and
thousand
[
"currency"
]
or
""
if
thousand
or
type
(
f
.
typ
)
==
colander
.
Float
()
or
type
(
f
.
typ
)
==
colander
.
Integer
():
d
[
"render"
]
=
f
"<script>$.fn.dataTable.render.number( '{separator}', '{decimal}', {point}, '{currency}' )</script>"
if
thousand
or
type
(
f
.
typ
)
==
colander
.
Float
()
or
type
(
f
.
typ
)
==
colander
.
Integer
():
d
[
"render"
]
=
f
"<script>$.fn.dataTable.render.number( '{separator}', '{decimal}', {point}, '{currency}' )</script>"
if
'className'
not
in
d
:
d
[
"className"
]
=
"text-right"
# data.append(f'renderer: $.fn.dataTable.render.number( "{separator}", "{decimal}", {point}, "{currency}" )')
# if hasattr(f, "edit_link"):
# s = """function ( data, type, row, meta ) {
# return '<a href="'+data+'">Download</a>';
# }"""
# d["render"] = s
columns
.
append
(
d
)
cols2
.
append
(
data
)
# columns.append(dict(title="Action",
# data='id',
# width="40pt",
# orderable=False,
# align="text-center",
# searchable=False))
self
.
columns
=
json
.
dumps
(
columns
)
self
.
columns
=
self
.
columns
.
replace
(
'"<script>'
,
""
)
.
replace
(
'</script>"'
,
""
)
self
.
columns
=
self
.
columns
.
replace
(
'"<script>'
,
""
)
.
replace
(
'</script>"'
,
""
)
.
replace
(
"
\n
"
,
""
)
# self.columns = columns
# self.columns = json.dumps(cols2)
self
.
url
=
action
self
.
url_suffix
=
action_suffix
self
.
sorts
=
sorts
self
.
paginates
=
paginates
self
.
filters
=
filters
self
.
paginates
=
paginates
self
.
filters
=
filters
class
Button
(
object
):
"""
...
...
opensipkd/detable/templates/detable.pt
View file @
dc70cf1
...
...
@@ -29,8 +29,8 @@
class="table table-bordered table-hover table-condensed dataTable no-footer">
<thead>
<tr>
<th tal:repeat="child field">${child.title}
</th
>
<th tal:repeat="child field">${child.title}
</th>
<!--? <th>Action</th>--
>
</tr>
</thead>
<tbody>
...
...
@@ -85,8 +85,7 @@
[10, 25, 50, 100],
[10, 25, 50, 100]
],
// columnDefs: [{ "visible": false, "searchable": false, "orderable": false, "targets": [0] }],
columns: ${columns},
columns: ${structure:columns},
"language": language,
});
...
...
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