Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Taufik Yulianto
/
esipkd
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 5c1bf188
authored
May 27, 2015
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
coa-del
1 parent
ae322ed9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
229 deletions
esipkd/views/coa.py
esipkd/views/coa.py
deleted
100755 → 0
View file @
ae322ed
from
email.utils
import
parseaddr
from
sqlalchemy
import
not_
from
pyramid.view
import
(
view_config
,
)
from
pyramid.httpexceptions
import
(
HTTPFound
,
)
import
colander
from
deform
import
(
Form
,
widget
,
ValidationFailure
,
)
from
..models
import
DBSession
from
..models.isipkd
import
(
Rekening
,
)
from
datatables
import
(
ColumnDT
,
DataTables
)
SESS_ADD_FAILED
=
'Gagal tambah rekening'
SESS_EDIT_FAILED
=
'Gagal edit rekening'
########
# List #
########
@view_config
(
route_name
=
'coa'
,
renderer
=
'templates/coa/list.pt'
,
permission
=
'edit'
)
def
view_list
(
request
):
return
dict
(
rows
=
{})
#######
# Add #
#######
def
email_validator
(
node
,
value
):
name
,
email
=
parseaddr
(
value
)
if
not
email
or
email
.
find
(
'@'
)
<
0
:
raise
colander
.
Invalid
(
node
,
'Invalid email format'
)
def
form_validator
(
form
,
value
):
def
err_kode
():
raise
colander
.
Invalid
(
form
,
'Kode Rekening
%
s sudah digunakan oleh ID
%
d'
%
(
value
[
'kode'
],
found
.
id
))
def
err_name
():
raise
colander
.
Invalid
(
form
,
'Uraian
%
s sudah digunakan oleh ID
%
d'
%
(
value
[
'nama'
],
found
.
id
))
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
q
=
DBSession
.
query
(
Rekening
)
.
filter_by
(
id
=
uid
)
r
=
q
.
first
()
else
:
r
=
None
q
=
DBSession
.
query
(
Rekening
)
.
filter_by
(
kode
=
value
[
'kode'
])
found
=
q
.
first
()
if
r
:
if
found
and
found
.
id
!=
r
.
id
:
err_kode
()
elif
found
:
err_email
()
if
'nama'
in
value
:
# optional
found
=
Rekening
.
get_by_nama
(
value
[
'nama'
])
if
r
:
if
found
and
found
.
id
!=
r
.
id
:
err_name
()
elif
found
:
err_name
()
@colander.deferred
def
deferred_summary
(
node
,
kw
):
values
=
kw
.
get
(
'daftar_summary'
,
[])
return
widget
.
SelectWidget
(
values
=
values
)
SUMMARIES
=
(
(
1
,
'Header'
),
(
0
,
'Detail'
),
)
class
AddSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
)
level_id
=
colander
.
SchemaNode
(
colander
.
Integer
())
is_summary
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
SelectWidget
(
values
=
SUMMARIES
),
title
=
"Header"
)
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
))
def
get_form
(
request
,
class_form
):
schema
=
class_form
(
validator
=
form_validator
)
schema
=
schema
.
bind
(
daftar_summary
=
SUMMARIES
)
schema
.
request
=
request
return
Form
(
schema
,
buttons
=
(
'simpan'
,
'batal'
))
def
save
(
values
,
row
=
None
):
if
not
row
:
row
=
Rekening
()
row
.
from_dict
(
values
)
#if values['password']:
# row.password = values['password']
DBSession
.
add
(
row
)
DBSession
.
flush
()
return
row
def
save_request
(
values
,
request
,
row
=
None
):
if
'id'
in
request
.
matchdict
:
values
[
'id'
]
=
request
.
matchdict
[
'id'
]
print
"****"
,
values
,
"****"
,
request
row
=
save
(
values
,
row
)
request
.
session
.
flash
(
'Rekening
%
s sudah disimpan.'
%
row
.
kode
)
def
route_list
(
request
):
return
HTTPFound
(
location
=
request
.
route_url
(
'coa'
))
def
session_failed
(
request
,
session_name
):
r
=
dict
(
form
=
request
.
session
[
session_name
])
del
request
.
session
[
session_name
]
return
r
@view_config
(
route_name
=
'coa-add'
,
renderer
=
'templates/coa/add.pt'
,
permission
=
'edit'
)
def
view_add
(
request
):
form
=
get_form
(
request
,
AddSchema
)
if
request
.
POST
:
if
'simpan'
in
request
.
POST
:
controls
=
request
.
POST
.
items
()
try
:
c
=
form
.
validate
(
controls
)
except
ValidationFailure
,
e
:
request
.
session
[
SESS_ADD_FAILED
]
=
e
.
render
()
return
HTTPFound
(
location
=
request
.
route_url
(
'coa-add'
))
save_request
(
dict
(
controls
),
request
)
return
route_list
(
request
)
elif
SESS_ADD_FAILED
in
request
.
session
:
return
session_failed
(
request
,
SESS_ADD_FAILED
)
return
dict
(
form
=
form
.
render
())
########
# Edit #
########
def
query_id
(
request
):
return
DBSession
.
query
(
Rekening
)
.
filter_by
(
id
=
request
.
matchdict
[
'id'
])
def
id_not_found
(
request
):
msg
=
'Rekening ID
%
s not found.'
%
request
.
matchdict
[
'id'
]
request
.
session
.
flash
(
msg
,
'error'
)
return
route_list
(
request
)
@view_config
(
route_name
=
'coa-edit'
,
renderer
=
'templates/coa/edit.pt'
,
permission
=
'edit'
)
def
view_edit
(
request
):
row
=
query_id
(
request
)
.
first
()
if
not
row
:
return
id_not_found
(
request
)
form
=
get_form
(
request
,
EditSchema
)
if
request
.
POST
:
if
'simpan'
in
request
.
POST
:
controls
=
request
.
POST
.
items
()
try
:
c
=
form
.
validate
(
controls
)
except
ValidationFailure
,
e
:
request
.
session
[
SESS_EDIT_FAILED
]
=
e
.
render
()
return
HTTPFound
(
location
=
request
.
route_url
(
'coa-edit'
,
id
=
row
.
id
))
save_request
(
dict
(
controls
),
request
,
row
)
return
route_list
(
request
)
elif
SESS_EDIT_FAILED
in
request
.
session
:
return
session_failed
(
request
,
SESS_EDIT_FAILED
)
values
=
row
.
to_dict
()
return
dict
(
form
=
form
.
render
(
appstruct
=
values
))
##########
# Delete #
##########
@view_config
(
route_name
=
'coa-delete'
,
renderer
=
'templates/coa/delete.pt'
,
permission
=
'edit'
)
def
view_delete
(
request
):
q
=
query_id
(
request
)
row
=
q
.
first
()
if
not
row
:
return
id_not_found
(
request
)
form
=
Form
(
colander
.
Schema
(),
buttons
=
(
'delete'
,
'cancel'
))
if
request
.
POST
:
if
'delete'
in
request
.
POST
:
msg
=
'Rekening ID
%
d
%
s has been deleted.'
%
(
row
.
id
,
row
.
kode
)
q
.
delete
()
DBSession
.
flush
()
request
.
session
.
flash
(
msg
)
return
route_list
(
request
)
return
dict
(
row
=
row
,
form
=
form
.
render
())
##########
# Action #
##########
@view_config
(
route_name
=
'coa-act'
,
renderer
=
'json'
,
permission
=
'edit'
)
def
view_act
(
request
):
req
=
request
params
=
req
.
params
url_dict
=
req
.
matchdict
if
url_dict
[
'act'
]
==
'grid'
:
columns
=
[]
columns
.
append
(
ColumnDT
(
'id'
))
columns
.
append
(
ColumnDT
(
'kode'
))
columns
.
append
(
ColumnDT
(
'nama'
))
columns
.
append
(
ColumnDT
(
'level_id'
))
columns
.
append
(
ColumnDT
(
'is_summary'
))
query
=
DBSession
.
query
(
Rekening
)
rowTable
=
DataTables
(
req
,
Rekening
,
query
,
columns
)
return
rowTable
.
output_result
()
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