Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
irul
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 46c58fc4
authored
Aug 01, 2022
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
perbaikan form
1 parent
5e03bef7
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
378 additions
and
347 deletions
opensipkd/base/__init__.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/menus.py
opensipkd/base/views/parameter.py
opensipkd/base/views/partner.py
opensipkd/base/views/posisi.py
opensipkd/base/views/provinsi.py
opensipkd/base/views/user.py
opensipkd/base/views/user_ext.py
opensipkd/detable/detable.py
opensipkd/detable/templates/detable.pt
opensipkd/jsonrpc_auth/__init__.py
opensipkd/base/__init__.py
View file @
46c58fc
...
...
@@ -6,7 +6,7 @@ try:
from
urllib
import
(
urlencode
,
quote
,
quote_plus
,
)
except
ImportError
:
from
urllib.parse
import
(
urlencode
,
quote
,
quote_plus
,
)
from
pyramid.events
import
NewRequest
from
pyramid.config
import
Configurator
from
pyramid_beaker
import
session_factory_from_settings
from
pyramid.events
import
subscriber
...
...
@@ -82,6 +82,16 @@ titles = {}
# return HTTPFound(location=noslash_path)
# return self.notfound_view(context, request)
def
add_cors_headers_response_callback
(
event
):
def
cors_headers
(
request
,
response
):
response
.
headers
.
update
({
'Access-Control-Allow-Origin'
:
'*'
,
'Access-Control-Allow-Methods'
:
'POST,GET,DELETE,PUT,OPTIONS'
,
'Access-Control-Allow-Headers'
:
'Origin, Content-Type, Accept, Authorization'
,
'Access-Control-Allow-Credentials'
:
'true'
,
'Access-Control-Max-Age'
:
'1728000'
,
})
event
.
request
.
add_response_callback
(
cors_headers
)
# https://groups.google.com/forum/#!topic/pylons-discuss/QIj4G82j04c
def
has_permission_
(
request
,
perm_names
,
context
=
None
):
...
...
@@ -396,6 +406,8 @@ def main(global_config, **settings):
config
=
cfg
config
.
set_security_policy
(
MySecurityPolicy
(
settings
[
"session.secret"
]))
config
.
add_subscriber
(
add_cors_headers_response_callback
,
NewRequest
)
config
.
add_request_method
(
get_user
,
'user'
,
reify
=
True
)
config
.
add_request_method
(
get_title
,
'title'
,
reify
=
True
)
config
.
add_request_method
(
get_company
,
'company'
,
reify
=
True
)
...
...
opensipkd/base/views/base_views.py
View file @
46c58fc
...
...
@@ -179,19 +179,23 @@ class BaseView(object):
del
self
.
req
.
session
[
session_name
]
return
r
def
view_list
(
self
,
arg
=
None
):
def
view_list
(
self
,
**
kwargs
):
if
self
.
list_schema
:
allow_edit
=
kwargs
.
get
(
"allow_edit"
,
True
)
allow_delete
=
kwargs
.
get
(
"allow_delete"
,
True
)
table
=
DeTable
(
self
.
list_schema
(),
action
=
self
.
req
.
route_url
(
self
.
list_route
),
action_suffix
=
"/grid/act"
,
buttons
=
self
.
list_buttons
,
request
=
self
.
req
)
request
=
self
.
req
,
allow_edit
=
allow_edit
,
allow_delete
=
allow_delete
)
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
{}
arg
=
kwargs
and
kwargs
or
{}
arg
.
update
(
url
=
self
.
list_url
,
col_defs
=
self
.
list_col_defs
,
cols
=
self
.
list_cols
,
buttons
=
self
.
list_buttons
)
return
arg
...
...
@@ -285,7 +289,7 @@ class BaseView(object):
if
'save'
in
self
.
req
.
POST
:
controls
=
self
.
req
.
POST
.
items
()
try
:
c
ontrols
=
form
.
validate
(
controls
)
c
=
form
.
validate
(
controls
)
except
ValidationFailure
as
e
:
# value = self.validation_failure(e.cstruct)
# value.update(self.before_add())
...
...
@@ -294,7 +298,7 @@ class BaseView(object):
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
,
css
=
resources
[
"css"
],
js
=
resources
[
"js"
])
values
=
dict
(
c
ontrols
)
values
=
dict
(
c
)
row
=
self
.
save_request
(
values
)
self
.
after_add
(
row
,
values
)
elif
"cancel"
in
self
.
req
.
POST
or
'batal'
in
self
.
req
.
POST
:
...
...
opensipkd/base/views/company.py
View file @
46c58fc
...
...
@@ -34,8 +34,22 @@ class EditSchema(AddSchema):
oid
=
"partner_id"
)
class
ListSchema
(
NamaSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
visible
=
False
)
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Action"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
,
title
=
"Kode"
,
width
=
"100pt"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"nama"
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
CheckboxWidget
(),
oid
=
"status"
)
class
ViewCompany
(
BaseView
):
...
...
opensipkd/base/views/dati2.py
View file @
46c58fc
import
colander
from
deform
import
(
widget
,
)
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
view_config
,
)
from
.
import
widget_os
from
.provinsi
import
provinsi_widget
from
opensipkd.models
import
DBSession
,
ResDati2
,
kategori_dati2
,
ResProvinsi
from
..views
import
BaseView
_
=
TranslationStringFactory
(
"opensipkd"
)
SESS_ADD_FAILED
=
'Tambah dati2 gagal'
SESS_EDIT_FAILED
=
'Edit dati2 gagal'
...
...
@@ -43,11 +45,11 @@ class EditSchema(AddSchema):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
searchable
=
False
,
orderable
=
False
,
visible
=
False
)
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
'100pt'
,
title
=
"Kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
)
provinsi
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
ResProvinsi
.
nama
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
width
=
"30pt"
)
class
ViewDati2
(
BaseView
):
...
...
opensipkd/base/views/departemen.py
View file @
46c58fc
...
...
@@ -99,11 +99,12 @@ class EditSchema(AddSchema):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"
ID
"
,
visible
=
False
)
id
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"
Action
"
,
visible
=
False
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Kode"
,
width
=
'100pt'
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
)
status
=
colander
.
SchemaNode
(
colander
.
Boolean
(),
title
=
"Status"
,
width
=
'50pt'
)
level_id
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Level"
,
width
=
'50pt'
)
status
=
colander
.
SchemaNode
(
colander
.
Boolean
(),
title
=
"Status"
,
width
=
'50pt'
,
widget
=
widget
.
CheckboxWidget
())
level_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
"Level"
,
width
=
'50pt'
)
parent
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Induk"
,
width
=
'200pt'
)
...
...
opensipkd/base/views/desa.py
View file @
46c58fc
import
colander
from
deform
import
(
widget
,
)
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
view_config
,
)
from
.dati2
import
dati2_widget
...
...
@@ -7,6 +8,7 @@ from .kecamatan import kecamatan_widget
from
.provinsi
import
provinsi_widget
from
opensipkd.models
import
DBSession
,
ResDesa
,
kategori_desa
,
ResKecamatan
,
ResProvinsi
,
ResDati2
from
..views
import
BaseView
_
=
TranslationStringFactory
(
"opensipkd"
)
SESS_ADD_FAILED
=
'Tambah desa gagal'
SESS_EDIT_FAILED
=
'Edit desa gagal'
...
...
@@ -56,11 +58,11 @@ class EditSchema(AddSchema):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
searchable
=
False
,
orderable
=
False
,
visible
=
False
)
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
'100pt'
,
title
=
"Kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
)
kecamatan
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
ResKecamatan
.
nama
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
width
=
"30pt"
)
class
ViewDesa
(
BaseView
):
...
...
opensipkd/base/views/eselon.py
View file @
46c58fc
...
...
@@ -35,8 +35,22 @@ class EditSchema(AddSchema):
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
())
class
ListSchema
(
NamaSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
visible
=
False
)
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Action"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
,
title
=
"Kode"
,
width
=
"100pt"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"nama"
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
CheckboxWidget
(),
oid
=
"status"
)
class
Views
(
BaseView
):
def
__init__
(
self
,
request
):
...
...
opensipkd/base/views/groups.py
View file @
46c58fc
...
...
@@ -40,7 +40,7 @@ class EditSchema(AddSchema):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
visible
=
False
)
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
visible
=
False
,
title
=
"Action"
)
group_name
=
colander
.
SchemaNode
(
colander
.
String
(),
)
description
=
colander
.
SchemaNode
(
colander
.
String
())
...
...
opensipkd/base/views/jabatan.py
View file @
46c58fc
import
colander
import
os
import
colander
from
deform
import
(
widget
,
)
from
opensipkd.tools.buttons
import
btn_view
,
btn_add
,
btn_edit
,
btn_delete
,
btn_close
from
opensipkd.tools.report
import
csv_response
,
open_rml_pdf
,
open_rml_row
,
pdf_response
from
opensipkd.tools.report
import
csv_response
,
open_rml_pdf
,
open_rml_row
,
\
pdf_response
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
view_config
,
)
from
.partner_base
import
NamaSchema
from
opensipkd.models
import
(
DBSession
,
Jabatan
,
Eselon
,
Departemen
)
from
.partner_base
import
NamaSchema
from
..views
import
BaseView
,
deferred_jenis
_
=
TranslationStringFactory
(
"opensipkd"
)
SESS_ADD_FAILED
=
'Tambah jabatan gagal'
SESS_EDIT_FAILED
=
'Edit jabatan gagal'
JENIS
=
((
1
,
'Struktural'
),
(
2
,
'Fungsional'
),
(
3
,
'Keuangan'
),
JENIS
=
((
1
,
_
(
'structural'
,
default
=
'Structural'
)
),
(
2
,
_
(
'functional'
,
default
=
'Functional'
)
),
(
3
,
_
(
'finance'
,
default
=
'Finance'
)
),
)
...
...
@@ -50,12 +54,12 @@ class AddSchema(colander.Schema):
colander
.
Integer
(),
oid
=
"jenis"
,
widget
=
deferred_jenis
,
title
=
"Jenis"
)
title
=
_
(
"type"
,
default
=
"Jenis"
)
)
eselon_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
oid
=
"eselon_id"
,
widget
=
deferred_eselon
,
title
=
"Eselon"
)
title
=
_
(
"eselon"
,
default
=
"Eselon"
)
)
status
=
colander
.
SchemaNode
(
colander
.
Boolean
(),
oid
=
"status"
)
...
...
@@ -67,9 +71,22 @@ class EditSchema(AddSchema):
widget
=
widget
.
HiddenWidget
())
class
ListSchema
(
NamaSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
visible
=
False
)
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Action"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
,
title
=
"Kode"
,
width
=
"100pt"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"nama"
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
CheckboxWidget
(),
oid
=
"status"
)
class
ViewJabatan
(
BaseView
):
...
...
@@ -84,7 +101,6 @@ class ViewJabatan(BaseView):
self
.
list_schema
=
ListSchema
# self.list_buttons = (btn_view, btn_add, btn_edit, btn_delete, btn_close)
def
get_bindings
(
self
,
row
=
None
):
return
dict
(
daftar_jenis
=
JENIS
,
daftar_eselon
=
daftar_eselon
())
...
...
@@ -124,7 +140,8 @@ class ViewJabatan(BaseView):
elif
url_dict
[
'act'
]
==
'hon'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
q
=
DBSession
.
query
(
Jabatan
.
id
,
Jabatan
.
kode
,
Jabatan
.
nama
,
Jabatan
.
jenis
)
.
\
q
=
DBSession
.
query
(
Jabatan
.
id
,
Jabatan
.
kode
,
Jabatan
.
nama
,
Jabatan
.
jenis
)
.
\
filter
(
Jabatan
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
order_by
(
Jabatan
.
nama
)
rows
=
q
.
all
()
...
...
@@ -147,7 +164,8 @@ class ViewJabatan(BaseView):
elif
url_dict
[
'act'
]
==
'headofnama'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
q
=
DBSession
.
query
(
Jabatan
.
id
,
Jabatan
.
kode
,
Jabatan
.
nama
,
Jabatan
.
jenis
)
.
\
q
=
DBSession
.
query
(
Jabatan
.
id
,
Jabatan
.
kode
,
Jabatan
.
nama
,
Jabatan
.
jenis
)
.
\
filter
(
Jabatan
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
order_by
(
Jabatan
.
nama
)
rows
=
q
.
all
()
...
...
@@ -160,7 +178,8 @@ class ViewJabatan(BaseView):
else
:
nama_jenis
=
'Fungsional'
d
=
{
'id'
:
k
[
0
],
'value'
:
k
[
2
]
+
' ('
+
nama_jenis
+
')'
,
'kode'
:
k
[
1
],
'nama'
:
k
[
2
]}
d
=
{
'id'
:
k
[
0
],
'value'
:
k
[
2
]
+
' ('
+
nama_jenis
+
')'
,
'kode'
:
k
[
1
],
'nama'
:
k
[
2
]}
r
.
append
(
d
)
return
r
elif
url_dict
[
'act'
]
==
'csv'
:
...
...
@@ -186,14 +205,18 @@ class ViewJabatan(BaseView):
rows
=
[]
for
r
in
query
.
all
():
s
=
rml_row
.
format
(
kode
=
r
.
kode
,
nama
=
r
.
nama
,
status
=
r
.
status
and
"Aktif"
or
"Pasif"
)
s
=
rml_row
.
format
(
kode
=
r
.
kode
,
nama
=
r
.
nama
,
status
=
r
.
status
and
"Aktif"
or
"Pasif"
)
rows
.
append
(
s
)
pdf
,
filename
=
open_rml_pdf
(
path
+
'/jabatan.rml'
,
rows
=
rows
,
company
=
request
.
company
,
departement
=
request
.
session
[
'departemen_nm'
],
departement
=
request
.
session
[
'departemen_nm'
],
address
=
request
.
address
,
alamat
=
Departemen
.
query_id
(
request
.
session
[
'departemen_id'
])
.
first
(),
alamat
=
Departemen
.
query_id
(
request
.
session
[
'departemen_id'
])
.
first
(),
periode
=
'01-01-2017 s.d 31-12-2017'
)
return
pdf_response
(
request
,
pdf
,
filename
)
...
...
@@ -237,7 +260,8 @@ class ViewJabatan(BaseView):
else
:
jabatan
=
None
q
=
Jabatan
.
query_kode
(
value
[
'kode'
])
# DBSession.query(Jabatan).filter_by(kode=value['kode'])
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
:
...
...
opensipkd/base/views/kecamatan.py
View file @
46c58fc
import
colander
from
deform
import
(
widget
,
)
from
pyramid.i18n
import
TranslationStringFactory
from
opensipkd.base.views.provinsi
import
provinsi_widget
from
opensipkd.models
import
DBSession
,
ResKecamatan
,
ResDati2
,
ResProvinsi
from
pyramid.view
import
(
view_config
,
)
...
...
@@ -10,6 +12,7 @@ from ..views import BaseView
SESS_ADD_FAILED
=
'Tambah kecamatan gagal'
SESS_EDIT_FAILED
=
'Edit kecamatan gagal'
_
=
TranslationStringFactory
(
"opensipkd"
)
@colander.deferred
...
...
@@ -52,12 +55,11 @@ class EditSchema(AddSchema):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
searchable
=
False
,
orderable
=
False
,
visible
=
False
)
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
)
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
'100pt'
,
title
=
"Kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
)
kabupaten
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
ResDati2
.
nama
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
width
=
"30pt"
)
class
Views
(
BaseView
):
...
...
@@ -114,7 +116,7 @@ class Views(BaseView):
renderer
=
'templates/table.pt'
,
permission
=
'kecamatan'
)
def
view_list
(
self
):
return
super
(
Views
,
self
)
.
view_list
(
self
)
return
super
(
Views
,
self
)
.
view_list
()
@view_config
(
route_name
=
'kecamatan-act'
,
renderer
=
'json'
,
permission
=
'view'
)
...
...
opensipkd/base/views/log_app.py
View file @
46c58fc
...
...
@@ -5,6 +5,7 @@ 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.i18n
import
TranslationStringFactory
from
pyramid.view
import
view_config
from
opensipkd.base
import
DBSession
...
...
@@ -34,12 +35,12 @@ class EditSchema(AddSchema):
widget
=
widget
.
HiddenWidget
(),
)
_
=
TranslationStringFactory
(
"opensipkd"
)
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(),
visible
=
False
)
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
created_at
=
colander
.
SchemaNode
(
colander
.
DateTime
())
logger
=
colander
.
SchemaNode
(
...
...
opensipkd/base/views/menus.py
View file @
46c58fc
import
colander
from
deform
import
(
widget
,
)
from
pyramid.i18n
import
TranslationStringFactory
from
opensipkd.models
import
Menus
,
flush
from
pyramid.view
import
(
view_config
,
)
from
sqlalchemy.orm
import
aliased
from
..views
import
ColumnDT
,
DataTables
,
BaseView
_
=
TranslationStringFactory
(
"opensipkd"
)
SESS_ADD_FAILED
=
'Tambah menu gagal'
SESS_EDIT_FAILED
=
'Edit menu gagal'
...
...
@@ -70,7 +73,8 @@ class EditSchema(AddSchema):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"ID"
,
visible
=
False
)
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Kode"
,
width
=
'100pt'
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
)
status
=
colander
.
SchemaNode
(
colander
.
Boolean
(),
title
=
"Status"
,
...
...
opensipkd/base/views/parameter.py
View file @
46c58fc
...
...
@@ -7,6 +7,7 @@ from opensipkd.models import (
DBSession
,
Parameter
)
class
AddSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
...
...
@@ -32,7 +33,31 @@ class EditSchema(AddSchema):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
),
visible
=
False
)
title
=
"Action"
)
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
"Action"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"kode"
,
title
=
"Kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
,
title
=
"Nama"
)
value
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
TextAreaWidget
(
rows
=
5
),
oid
=
"value"
,
title
=
"Nilai"
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
CheckboxWidget
())
class
Views
(
BaseView
):
...
...
@@ -44,7 +69,7 @@ class Views(BaseView):
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Parameter
self
.
list_schema
=
Edi
tSchema
self
.
list_schema
=
Lis
tSchema
@view_config
(
route_name
=
'parameter'
,
renderer
=
'templates/table.pt'
,
permission
=
'user-edit'
)
...
...
opensipkd/base/views/partner.py
View file @
46c58fc
...
...
@@ -4,6 +4,7 @@ import colander
from
deform
import
(
widget
,
)
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
view_config
,
)
...
...
@@ -19,6 +20,7 @@ from opensipkd.models import DBSession, Partner
from
..
import
partner_idcard_folder
from
..views
import
BaseView
_
=
TranslationStringFactory
(
"opensipkd"
)
SESS_ADD_FAILED
=
'Tambah partner gagal'
SESS_EDIT_FAILED
=
'Edit partner gagal'
...
...
@@ -54,16 +56,26 @@ class EditSchema(AddSchema):
)
class
ListSchema
(
NamaSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(),
)
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
,
title
=
"Kode"
,
width
=
"100pt"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"nama"
)
email
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"email"
)
status
=
colander
.
SchemaNode
(
colander
.
Boolean
(),
widget
=
widget
.
CheckboxWidget
(),
oid
=
"status"
)
...
...
opensipkd/base/views/posisi.py
View file @
46c58fc
...
...
@@ -6,7 +6,8 @@ from pyramid.view import (view_config, )
from
sqlalchemy
import
or_
from
sqlalchemy.orm
import
aliased
from
opensipkd.models
import
DBSession
as
PartnerDBSession
,
DBSession
,
ResCompany
from
opensipkd.models
import
DBSession
as
PartnerDBSession
,
DBSession
,
\
ResCompany
from
opensipkd.models
import
Departemen
,
Jabatan
from
opensipkd.models
import
Partner
,
PartnerDepartemen
from
opensipkd.tools
import
dmy
,
date_from_str
...
...
@@ -65,11 +66,11 @@ class AddSchema(colander.Schema):
mulai
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"mulai"
,
widget
=
widget
.
TextInputWidget
(
css_class
=
"date
"
))
widget
=
widget
.
DateInputWidget
(
format
=
"dd-mm-yyyy
"
))
selesai
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"selesai"
,
widget
=
widget
.
TextInputWidget
(
css_class
=
"date
"
))
widget
=
widget
.
DateInputWidget
(
format
=
"dd-mm-yyyy
"
))
class
EditSchema
(
AddSchema
):
...
...
@@ -78,108 +79,121 @@ class EditSchema(AddSchema):
widget
=
widget
.
HiddenWidget
())
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
"Action"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
Partner
.
nama
)
mulai
=
colander
.
SchemaNode
(
colander
.
String
())
selesai
=
colander
.
SchemaNode
(
colander
.
String
())
class
ViewPartner
(
BaseView
):
def
__init__
(
self
,
request
):
super
(
ViewPartner
,
self
)
.
__init__
(
request
)
self
.
form_scripts
=
"""
$(document).ready(function () {
$('#pegawai_nm').typeahead({
"hint" : true,
"highlight": true,
"minLength": 1,
"remote" : {
url: "/partner/hon/act?term=
%
QUERY",
beforeSend: function () {
$('#partner_nm').addClass("loading");
},
filter: function(parsedResponse){
$('#partner_nm').removeClass('loading');
return parsedResponse;
}
},
},{
"name" : 'partner_nm',
"displayKey": 'value',
});
$('#partner_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#partner_id').val(datum.id);
$('#partner_nm').val(datum.nama);
});
$('#departemen_nm').typeahead({
"hint" : true,
"highlight": true,
"minLength": 1,
"remote" : {
url: "/departemen/hon/act?term=
%
QUERY",
beforeSend: function () {
$('#departemen_nm').addClass("loading");
},
filter: function(parsedResponse){
$('#departemen_nm').removeClass('loading');
return parsedResponse;
}
},
},{
"name" : 'departemen_nm',
"displayKey": 'value',
});
$('#departemen_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#departemen_id').val(datum.id);
});
$('#jabatan_nm').typeahead({
"hint" : true,
"highlight": true,
"minLength": 1,
"remote" : {
url: "/partner/departemen/hon_jabatannm/act?term=
%
QUERY",
beforeSend: function () {
$('#jabatan_nm').addClass("loading");
},
filter: function(parsedResponse){
$('#jabatan_nm').removeClass('loading');
return parsedResponse;
}
},
},{
"name" : 'jabatan_nm',
"displayKey": 'value',
});
$('#jabatan_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#jabatan_id').val(datum.id);
$('#jabatan_nm').val(datum.value);
});
});
"""
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'
:
"NIP"
,
'data'
:
"nik"
,
'width'
:
'100pt'
},
{
'title'
:
"Nama"
,
'data'
:
"nama"
},
{
'title'
:
"Unit Kerja"
,
'data'
:
"departemen"
},
{
'title'
:
"Jabatan"
,
'data'
:
"jabatan"
},
{
'title'
:
"Pemda"
,
'data'
:
"jenis"
},
{
'title'
:
"Mulai"
,
'data'
:
"mulai"
},
{
'title'
:
"Selesai"
,
'data'
:
"selesai"
},
]
self
.
list_buttons
=
'btn_view, btn_add, btn_edit, btn_delete, '
\
'btn_close'
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'partner/departemen'
self
.
list_schema
=
ListSchema
self
.
table
=
PartnerDepartemen
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
# self.form_scripts = """
# $(document).ready(function () {
#
# $('#pegawai_nm').typeahead({
# "hint" : true,
# "highlight": true,
# "minLength": 1,
# "remote" : {
# url: "/partner/hon/act?term=%QUERY",
# beforeSend: function () {
# $('#partner_nm').addClass("loading");
# },
# filter: function(parsedResponse){
# $('#partner_nm').removeClass('loading');
# return parsedResponse;
# }
# },
# },{
# "name" : 'partner_nm',
# "displayKey": 'value',
# });
#
# $('#partner_nm').bind('typeahead:selected', function(obj, datum, name) {
# $('#partner_id').val(datum.id);
# $('#partner_nm').val(datum.nama);
# });
#
# $('#departemen_nm').typeahead({
# "hint" : true,
# "highlight": true,
# "minLength": 1,
# "remote" : {
# url: "/departemen/hon/act?term=%QUERY",
# beforeSend: function () {
# $('#departemen_nm').addClass("loading");
# },
# filter: function(parsedResponse){
# $('#departemen_nm').removeClass('loading');
# return parsedResponse;
# }
# },
# },{
# "name" : 'departemen_nm',
# "displayKey": 'value',
# });
#
# $('#departemen_nm').bind('typeahead:selected', function(obj, datum, name) {
# $('#departemen_id').val(datum.id);
# });
#
#
#
# $('#jabatan_nm').typeahead({
# "hint" : true,
# "highlight": true,
# "minLength": 1,
# "remote" : {
# url: "/partner/departemen/hon_jabatannm/act?term=%QUERY",
# beforeSend: function () {
# $('#jabatan_nm').addClass("loading");
# },
# filter: function(parsedResponse){
# $('#jabatan_nm').removeClass('loading');
# return parsedResponse;
# }
# },
# },{
# "name" : 'jabatan_nm',
# "displayKey": 'value',
# });
#
# $('#jabatan_nm').bind('typeahead:selected', function(obj, datum, name) {
# $('#jabatan_id').val(datum.id);
# $('#jabatan_nm').val(datum.value);
#
# });
# });
# """
#
# 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': "NIP", 'data': "nik", 'width': '100pt'},
# {'title': "Nama", 'data': "nama"},
# {'title': "Unit Kerja", 'data': "departemen"},
# {'title': "Jabatan", 'data': "jabatan"},
# {'title': "Pemda", 'data': "jenis"},
# {'title': "Mulai", 'data': "mulai"},
# {'title': "Selesai", 'data': "selesai"}, ]
# self.list_buttons = 'btn_view, btn_add, btn_edit, btn_delete, ' \
# 'btn_close'
# self.form_params = dict(scripts="")
# self.list_url = 'partner/departemen'
self
.
list_route
=
'partner-departemen'
@staticmethod
def
form_validator
(
form
,
value
):
def
form_validator
(
self
,
form
,
value
):
def
err_partner
():
raise
colander
.
Invalid
(
form
,
'Partner Belum Dipilih'
)
...
...
@@ -199,22 +213,6 @@ class ViewPartner(BaseView):
elif
not
value
[
'partner_id'
]:
err_partner
()
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
)
schema
.
request
=
self
.
req
if
row
:
schema
.
deserialize
(
row
)
return
Form
(
schema
,
buttons
=
buttons
)
def
save
(
self
,
values
,
user
,
row
=
None
):
if
not
row
:
row
=
PartnerDepartemen
()
row
.
from_dict
(
values
)
PartnerDBSession
.
add
(
row
)
PartnerDBSession
.
flush
()
return
row
def
save_request
(
self
,
values
,
row
=
None
):
request
=
self
.
req
if
'id'
in
request
.
matchdict
:
...
...
@@ -234,34 +232,13 @@ class ViewPartner(BaseView):
values
[
'jabatan_id'
]
=
query_struktural
row
=
self
.
save
(
values
,
request
.
user
,
row
)
request
.
session
.
flash
(
'Posisi Partner sudah disimpan.'
)
return
row
def
route_list
(
self
,
):
return
HTTPFound
(
location
=
self
.
req
.
route_url
(
self
.
list_route
))
def
session_failed
(
self
,
session_name
):
r
=
dict
(
form
=
self
.
request
.
session
[
session_name
])
del
self
.
request
.
session
[
session_name
]
return
r
def
query_id
(
self
):
return
PartnerDBSession
.
query
(
PartnerDepartemen
)
.
filter_by
(
id
=
self
.
req
.
matchdict
[
'id'
])
def
id_not_found
(
self
):
msg
=
'Posisi Partner ID
%
s Tidak Ditemukan.'
%
self
.
req
.
matchdict
[
'id'
]
self
.
req
.
session
.
flash
(
msg
,
'error'
)
return
self
.
route_list
()
########
# List #
########
@view_config
(
route_name
=
'partner-departemen'
,
renderer
=
'templates/list.pt'
,
@view_config
(
route_name
=
'partner-departemen'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_list
(
self
):
return
super
()
.
view_list
()
##########
# Action #
##########
@view_config
(
route_name
=
'partner-departemen-act'
,
renderer
=
'json'
,
permission
=
'view'
)
def
view_act
(
self
):
...
...
@@ -283,11 +260,14 @@ class ViewPartner(BaseView):
ColumnDT
(
PartnerDepartemen
.
selesai
,
mData
=
'selesai'
),
]
q
=
PartnerDBSession
.
query
()
.
select_from
(
PartnerDepartemen
)
\
.
join
(
Departemen
,
PartnerDepartemen
.
departemen_id
==
Departemen
.
id
)
\
.
join
(
Departemen
,
PartnerDepartemen
.
departemen_id
==
Departemen
.
id
)
\
.
outerjoin
(
ResCompany
,
Departemen
.
company_id
==
ResCompany
.
id
)
\
.
outerjoin
(
Partner
,
Partner
.
id
==
PartnerDepartemen
.
partner_id
)
\
.
outerjoin
(
Jabatan
,
(
PartnerDepartemen
.
jabatan_id
==
Jabatan
.
id
))
\
.
outerjoin
(
struktural
,
(
PartnerDepartemen
.
jabatan_id
==
struktural
.
id
))
\
.
outerjoin
(
Jabatan
,
(
PartnerDepartemen
.
jabatan_id
==
Jabatan
.
id
))
\
.
outerjoin
(
struktural
,
(
PartnerDepartemen
.
jabatan_id
==
struktural
.
id
))
\
.
order_by
(
Partner
.
nama
)
if
self
.
req
.
user
.
company_id
:
q
=
q
.
filter
(
Departemen
.
company_id
==
self
.
req
.
user
.
company_id
)
...
...
@@ -354,7 +334,8 @@ class ViewPartner(BaseView):
join
(
Jabatan
,
(
PartnerDepartemen
.
jabatan_id
==
Jabatan
.
id
))
.
\
filter
(
Partner
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
filter
(
PartnerDepartemen
.
departemen_id
==
ses
[
'departemen_id'
])
.
\
filter
(
or_
(
Jabatan
.
kode
==
'101'
,
Jabatan
.
kode
==
'102'
,
Jabatan
.
kode
==
'103'
,
Jabatan
.
kode
==
filter
(
or_
(
Jabatan
.
kode
==
'101'
,
Jabatan
.
kode
==
'102'
,
Jabatan
.
kode
==
'103'
,
Jabatan
.
kode
==
'104'
))
.
\
order_by
(
Partner
.
nama
)
if
self
.
req
.
user
.
company_id
:
...
...
@@ -369,7 +350,8 @@ class ViewPartner(BaseView):
elif
url_dict
[
'act'
]
==
'hon_jabatannm'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
q
=
DBSession
.
query
(
Jabatan
.
id
,
Jabatan
.
kode
,
Jabatan
.
nama
,
Jabatan
.
jenis
)
.
\
q
=
DBSession
.
query
(
Jabatan
.
id
,
Jabatan
.
kode
,
Jabatan
.
nama
,
Jabatan
.
jenis
)
.
\
filter
(
Jabatan
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
order_by
(
Jabatan
.
nama
)
if
self
.
req
.
user
.
company_id
:
...
...
@@ -392,19 +374,8 @@ class ViewPartner(BaseView):
r
.
append
(
d
)
return
r
@view_config
(
route_name
=
'partner-departemen-view'
,
renderer
=
'templates/form_input.pt'
,
permission
=
'partner-departemen'
)
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
()
values
=
row
.
to_dict
()
def
get_values
(
self
,
row
,
istime
=
False
):
values
=
super
()
.
get_values
(
row
,
istime
)
values
[
'nama'
]
=
row
.
partner
.
nama
values
[
'jabatan'
]
=
row
.
jabatan
.
nama
values
[
'departemen'
]
=
row
.
departemen
.
nama
...
...
@@ -417,120 +388,33 @@ class ViewPartner(BaseView):
if
jb
:
values
[
'struktural_nm'
]
=
jb
.
nama
form
.
set_appstruct
(
self
.
get_values
(
row
,
values
))
return
dict
(
form
=
form
.
render
(
readonly
=
True
),
scripts
=
self
.
form_scripts
)
return
values
#########
# Add #
#########
@view_config
(
route_name
=
'partner-departemen-add'
,
renderer
=
'templates/form_input.pt'
,
@view_config
(
route_name
=
'partner-departemen-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_view
(
self
):
# row = query_id(request).first()
return
super
()
.
view_view
()
def
before_add
(
self
):
values
=
{
'departemen_id'
:
self
.
ses
[
'departemen_id'
],
'departemen_nm'
:
self
.
ses
[
'departemen_nm'
],
'departemen_kd'
:
self
.
ses
[
'departemen_kd'
]}
return
values
@view_config
(
route_name
=
'partner-departemen-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_add
(
self
):
request
=
self
.
req
form
=
self
.
get_form
(
AddSchema
)
values
=
{}
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
=
self
.
form_scripts
)
self
.
save_request
(
dict
(
controls
))
return
self
.
route_list
()
values
[
'departemen_id'
]
=
self
.
ses
[
'departemen_id'
]
values
[
'departemen_nm'
]
=
self
.
ses
[
'departemen_nm'
]
values
[
'departemen_kd'
]
=
self
.
ses
[
'departemen_kd'
]
form
.
set_appstruct
(
values
)
return
dict
(
form
=
form
.
render
(),
scripts
=
self
.
form_scripts
)
##########
# Edit #
##########
@view_config
(
route_name
=
'partner-departemen-edit'
,
renderer
=
'templates/form_input.pt'
,
return
super
()
.
view_add
()
@view_config
(
route_name
=
'partner-departemen-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_edt
(
self
):
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
.
render
(
appstruct
=
e
.
cstruct
)
return
dict
(
form
=
form
.
render
(),
scripts
=
self
.
form_scripts
)
self
.
save_request
(
dict
(
controls
),
row
)
return
self
.
route_list
()
values
=
row
.
to_dict
()
values
[
'nama'
]
=
row
.
partner
.
nama
values
[
'jabatan'
]
=
row
.
jabatan
.
nama
values
[
'departemen'
]
=
row
.
departemen
.
nama
values
[
'mulai'
]
=
dmy
(
row
.
mulai
)
values
[
'selesai'
]
=
dmy
(
row
.
selesai
)
if
not
row
.
jabatan_id
:
values
[
'jabatan_id'
]
=
0
else
:
jb
=
Jabatan
.
query_id
(
row
.
jabatan_id
)
.
first
()
if
jb
:
values
[
'struktural_nm'
]
=
jb
.
nama
return
super
()
.
view_edit
()
form
.
set_appstruct
(
self
.
get_values
(
row
,
values
))
return
dict
(
form
=
form
.
render
(),
scripts
=
self
.
form_scripts
)
##########
# Delete #
##########
@view_config
(
route_name
=
'partner-departemen-delete'
,
renderer
=
'templates/form_input.pt'
,
@view_config
(
route_name
=
'partner-departemen-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_del
(
self
):
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
=
'Posisi Partner ID
%
d
%
s sudah dihapus.'
%
(
row
.
id
,
row
.
partner
.
nama
)
# qry_login = PartnerLogin.query_partner(request.params['id'])
# if qry_login.first():
# try:
# qry_login.delete()
# except:
# self.session.flash('Gagal Hapus')
# return dict(row=row, form=form.render())
q
.
delete
()
PartnerDBSession
.
flush
()
request
.
session
.
flash
(
msg
)
return
self
.
route_list
()
form
=
self
.
get_form
(
EditSchema
,
buttons
=
(
btn_delete
,
btn_cancel
))
values
=
row
.
to_dict
()
values
[
'nama'
]
=
row
.
partner
.
nama
values
[
'jabatan'
]
=
row
.
jabatan
.
nama
values
[
'departemen'
]
=
row
.
departemen
.
nama
values
[
'mulai'
]
=
dmy
(
row
.
mulai
)
values
[
'selesai'
]
=
dmy
(
row
.
selesai
)
if
not
row
.
jabatan_id
:
values
[
'jabatan_id'
]
=
0
else
:
jb
=
Jabatan
.
query_id
(
row
.
jabatan_id
)
.
first
()
if
jb
:
values
[
'struktural_nm'
]
=
jb
.
nama
form
.
set_appstruct
(
self
.
get_values
(
row
,
values
))
return
dict
(
row
=
row
,
form
=
form
.
render
(
readonly
=
True
),
scripts
=
self
.
form_scripts
)
def
get_values
(
self
,
row
,
values
=
None
):
if
not
values
:
values
=
row
.
to_dict
()
return
values
return
super
()
.
view_delete
()
opensipkd/base/views/provinsi.py
View file @
46c58fc
import
colander
from
deform
import
(
widget
,
)
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
view_config
,
)
from
.
import
widget_os
from
opensipkd.models
import
DBSession
,
ResProvinsi
,
kategori_provinsi
from
..views
import
BaseView
_
=
TranslationStringFactory
(
"opensipkd"
)
SESS_ADD_FAILED
=
'Tambah provinsi gagal'
SESS_EDIT_FAILED
=
'Edit provinsi gagal'
...
...
@@ -41,7 +43,8 @@ class EditSchema(AddSchema):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
searchable
=
False
,
orderable
=
False
,
visible
=
False
)
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
100
)
nama
=
colander
.
SchemaNode
(
colander
.
String
())
ibu_kota
=
colander
.
SchemaNode
(
colander
.
String
())
...
...
opensipkd/base/views/user.py
View file @
46c58fc
...
...
@@ -21,12 +21,14 @@ _ = TranslationStringFactory('user')
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"
ID"
,
visible
=
False
,
title
=
"
Action"
,
searchable
=
False
)
email
=
colander
.
SchemaNode
(
colander
.
String
())
user_name
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
_
(
"user-name"
,
default
=
"User Name"
))
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
width
=
50
,
searchable
=
False
)
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
CheckboxWidget
(),
width
=
50
,
searchable
=
False
)
last_login
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
100
,
field
=
"last_login_date"
,
searchable
=
False
)
...
...
opensipkd/base/views/user_ext.py
View file @
46c58fc
...
...
@@ -25,7 +25,7 @@ class EditSchema(AddSchema):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
"external_id"
)
id
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
"external_id"
,
title
=
"Action"
)
external_user_name
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
_
(
'User Name'
))
provider_name
=
(
colander
.
SchemaNode
(
colander
.
String
(),
title
=
_
(
'Provider'
)))
...
...
@@ -38,24 +38,24 @@ class UserExt(BaseView):
self
.
edit_schema
=
EditSchema
self
.
list_schema
=
ListSchema
self
.
list_route
=
"user-ext"
self
.
list_buttons
=
(
btn_
view
,
btn_delete
,
btn_close
)
self
.
list_buttons
=
(
btn_
close
,
)
self
.
table
=
ExternalIdentity
@view_config
(
route_name
=
'user-ext'
,
renderer
=
'templates/table.pt'
,
permission
=
'user-view'
)
def
view_list
(
self
):
form
=
super
(
UserExt
,
self
)
.
view_list
()
form
=
super
(
UserExt
,
self
)
.
view_list
(
allow_edit
=
False
,
allow_delete
=
False
)
return
form
@view_config
(
route_name
=
'user-ext-view'
,
renderer
=
'templates/form
_input
.pt'
,
route_name
=
'user-ext-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-view'
)
def
view_view
(
self
):
return
super
(
UserExt
,
self
)
.
view_view
()
@view_config
(
route_name
=
'user-ext-delete'
,
renderer
=
'templates/form
_input
.pt'
,
route_name
=
'user-ext-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
def
view_delete
(
self
):
return
super
(
UserExt
,
self
)
.
view_delete
()
...
...
opensipkd/detable/detable.py
View file @
46c58fc
...
...
@@ -10,7 +10,7 @@ from chameleon.utils import Markup
from
deform
import
compat
from
deform
import
field
from
.
import
widget
# from deform import widget
log
=
logging
.
getLogger
(
__name__
)
...
...
@@ -166,24 +166,24 @@ class DeTable(field.Field):
for
f
in
schema
:
d
=
{
'data'
:
f
.
name
}
data
=
[]
if
hasattr
(
f
,
'width'
):
d
[
"width"
]
=
f
.
width
data
.
append
(
f
"width: '{f.width}'"
)
if
hasattr
(
f
,
'aligned'
):
d
[
"className"
]
=
f
.
aligned
data
.
append
(
f
"className: '{f.aligned}'"
)
if
hasattr
(
f
,
'searchable'
):
d
[
"searchable"
]
=
f
.
searchable
data
.
append
(
f
"searchable: {f.searchable}"
)
if
hasattr
(
f
,
'visible'
):
d
[
"visible"
]
=
f
.
visible
data
.
append
(
f
"visible: {f.visible}"
)
if
isinstance
(
f
.
widget
,
deform
.
widget
.
HiddenWidget
):
d
[
"visible"
]
=
False
if
isinstance
(
f
.
widget
,
deform
.
widget
.
CheckboxWidget
):
d
[
"checkbox"
]
=
True
else
:
d
[
"checkbox"
]
=
False
if
hasattr
(
f
,
'orderable'
):
d
[
"orderable"
]
=
f
.
orderable
...
...
@@ -199,8 +199,7 @@ class DeTable(field.Field):
"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}', "
\
d
[
"render"
]
=
f
"<script>$.fn.dataTable.render.number( '{separator}', "
\
f
"'{decimal}', {point}, '{currency}' )</script>"
if
'className'
not
in
d
:
d
[
"className"
]
=
"text-right"
...
...
opensipkd/detable/templates/detable.pt
View file @
46c58fc
...
...
@@ -17,7 +17,6 @@
data data|field.data;
allow_edit allow_edit|field.allow_edit;
allow_delete allow_delete|field.allow_delete;
edit_url 'edit.com';
"
tal:attributes="style style; class css_class; attributes|field.widget.attributes|{};"
i18n:domain="detable">
...
...
@@ -32,7 +31,6 @@
<thead>
<tr>
<th tal:repeat="child field">${child.title}</th>
<th tal:condition="allow_edit or allow_delete">Action</th>
</tr>
</thead>
<tbody>
...
...
@@ -43,7 +41,7 @@
</div>
</header>
<script
type="text/javascript"
>
<script>
deform.addCallback
('${tableid}', function (oid) {
let m${tableid}ID;
...
...
@@ -57,11 +55,16 @@
'</div>',
]
let columns = ${structure: columns};
let action_column = {
"data": "id",
"className": "text-center",
"width": 50,
"render": function (id) {
function render_checkbox(value) {
if (value == true) {
return '<i class="fas fa-check-square" aria-hidden="true">';
}
return '<i class="fas fa-rectangle-xmark" aria-hidden="true">';
}
if (columns[0].data == "id") {
columns[0].render = function (id) {
let result = '<a href="${url}/' + id + '/view"><i class="fas fa-eye" aria-hidden="true"></i></a> ';
if (${allow_edit}) {
result += '<a href="${url}/' + id + '/edit"><i class="fas fa-edit" aria-hidden="true"></i></a> '
...
...
@@ -72,8 +75,25 @@
return result;
}
columns[0].width = "40pt";
columns[0].orderable = false;
columns[0].className = "text-center";
columns[0].visible = true;
columns[1].order = "order_asc";
}
for (co in columns) {
if (columns[co].checkbox === true) {
columns[co].className = "text-center";
columns[co].width = "30pt";
columns[co].render = function (val) {
if (["", false, 0].indexOf(val) === -1) {
return render_checkbox(true);
} else return render_checkbox(false);
}
columns.push(action_column);
}
}
console.log(columns);
let language = {
"search": "Cari: ",
"paginate": {
...
...
@@ -96,6 +116,7 @@
autoWidth: false,
paginate: ${paginates},
paginationType: "full_numbers",
order: [],
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100]
...
...
@@ -104,8 +125,11 @@
"language": language,
}
if (${server_side}==false)
{params.data = ${data};}
if (${server_side}==false
)
{
params.data = ${data};
}
else
{
params.ajax = o${tableid}Url;
...
...
@@ -118,7 +142,7 @@
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
var
aData = o${tableid}.row(this).data();
let
aData = o${tableid}.row(this).data();
o${tableid}.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
m${tableid}ID = aData.id;
...
...
opensipkd/jsonrpc_auth/__init__.py
View file @
46c58fc
...
...
@@ -191,6 +191,8 @@ def add_jsonrpc_endpoint(config, name, *args, **kw):
def
setup_request
(
endpoint
,
request
):
""" Parse a JSON-RPC request body."""
print
(
request
.
__dict__
)
print
(
request
.
environ
.
get
(
"ACCESS_CONTROL_ALLOW_ORIGIN"
))
if
request
.
method
==
'GET'
:
parse_request_GET
(
request
)
elif
request
.
method
==
'POST'
:
...
...
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