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 09473156
authored
Mar 24, 2025
by
iqbal
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
penambahan fungsi csv
1 parent
ef68c235
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
107 additions
and
30 deletions
opensipkd/base/views/dati2.py
opensipkd/base/views/desa.py
opensipkd/base/views/eselon.py
opensipkd/base/views/groups.py
opensipkd/base/views/partner.py
opensipkd/base/views/user_area.py
opensipkd/base/views/dati2.py
View file @
0947315
...
...
@@ -10,6 +10,7 @@ from opensipkd.models import DBSession, ResDati2, kategori_dati2, ResProvinsi
from
..views
import
BaseView
from
.
import
BaseView
,
btn_upload
from
pyramid.path
import
AssetResolver
from
opensipkd.tools
import
get_random_string
from
.
import
BaseView
,
button_import
,
get_params
from
opensipkd.tools.report
import
csv_response
,
file_response
...
...
@@ -98,6 +99,21 @@ class ViewDati2(BaseView):
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
def
query_register
():
return
DBSession
.
query
(
ResDati2
.
provinsi_id
,
ResDati2
.
kode
,
ResDati2
.
kategori
,
ResDati2
.
nama
)
.
order_by
(
ResDati2
.
provinsi_id
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
row
=
query
.
first
()
header
=
row
.
_mapping
.
keys
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
filename
=
f
"{get_random_string(16)}.csv"
value
=
{
'header'
:
header
,
'rows'
:
rows
,
}
return
csv_response
(
self
.
req
,
value
,
filename
)
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
...
...
opensipkd/base/views/desa.py
View file @
0947315
...
...
@@ -11,6 +11,7 @@ from pyramid.path import AssetResolver
from
.
import
BaseView
,
button_import
,
get_params
from
opensipkd.tools.report
import
csv_response
,
file_response
from
.dati2
import
dati2_widget
from
opensipkd.tools
import
get_random_string
from
.kecamatan
import
kecamatan_widget
from
.provinsi
import
provinsi_widget
from
..views
import
BaseView
...
...
@@ -117,6 +118,23 @@ class ViewDesa(BaseView):
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
def
query_register
():
return
DBSession
.
query
(
ResDesa
.
kecamatan_id
,
ResDesa
.
kode
,
ResDesa
.
kategori
,
ResDesa
.
nama
)
.
order_by
(
ResDesa
.
kecamatan_id
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
row
=
query
.
first
()
header
=
row
.
_mapping
.
keys
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
filename
=
f
"{get_random_string(16)}.csv"
value
=
{
'header'
:
header
,
'rows'
:
rows
,
}
return
csv_response
(
self
.
req
,
value
,
filename
)
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh
%
s'
%
(
...
...
opensipkd/base/views/eselon.py
View file @
0947315
...
...
@@ -16,6 +16,7 @@ from . import BaseView, btn_upload
from
pyramid.path
import
AssetResolver
from
.
import
BaseView
,
button_import
,
get_params
from
opensipkd.tools.report
import
csv_response
,
file_response
from
opensipkd.tools
import
get_random_string
SESS_ADD_FAILED
=
'Tambah eselon gagal'
SESS_EDIT_FAILED
=
'Edit eselon gagal'
...
...
@@ -95,6 +96,22 @@ class Views(BaseView):
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
def
query_register
():
return
DBSession
.
query
(
Eselon
.
kode
,
Eselon
.
nama
,
Eselon
.
status
)
.
order_by
(
Eselon
.
kode
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
row
=
query
.
first
()
header
=
row
.
_mapping
.
keys
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
filename
=
f
"{get_random_string(16)}.csv"
value
=
{
'header'
:
header
,
'rows'
:
rows
,
}
return
csv_response
(
self
.
req
,
value
,
filename
)
@view_config
(
route_name
=
'eselon'
,
renderer
=
'templates/table.pt'
,
permission
=
'eselon'
)
def
view_list
(
self
):
...
...
opensipkd/base/views/groups.py
View file @
0947315
...
...
@@ -92,21 +92,21 @@ class Views(BaseView):
def
get_bindings
(
self
,
row
=
None
):
return
dict
(
group
=
row
,
permissions_list
=
get_permissions_list
())
@staticmethod
def
query_register
():
return
DBSession
.
query
(
Group
.
group_name
,
Group
.
description
,)
.
order_by
(
Group
.
group_name
)
#
def csv_response(self, **kwargs):
#query = self.table
.query_register()
#
row = query.first()
#
header = row._mapping.keys()
#
rows = [list(item) for item in query.all()]
#
filename = f"{get_random_string(16)}.csv"
#
value = {
#
'header': header,
#
'rows': rows,
#
}
#
return csv_response(self.req, value, filename)
return
DBSession
.
query
(
Group
.
group_name
,
Group
.
description
,
Group
.
permissions
)
.
order_by
(
Group
.
group_name
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
row
=
query
.
first
()
header
=
row
.
_mapping
.
keys
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
filename
=
f
"{get_random_string(16)}.csv"
value
=
{
'header'
:
header
,
'rows'
:
rows
,
}
return
csv_response
(
self
.
req
,
value
,
filename
)
@view_config
(
route_name
=
'group'
,
renderer
=
'templates/table.pt'
,
...
...
opensipkd/base/views/partner.py
View file @
0947315
...
...
@@ -15,6 +15,7 @@ from . import BaseView, button_import, get_params
from
opensipkd.tools.report
import
csv_response
,
file_response
from
opensipkd.tools
import
Upload
,
img_exts
from
pyramid.i18n
import
TranslationStringFactory
from
opensipkd.tools
import
get_random_string
from
pyramid.view
import
(
view_config
,
)
...
...
@@ -135,6 +136,22 @@ class ViewPartner(BaseView):
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
def
query_register
():
return
DBSession
.
query
(
Partner
.
is_vendor
,
Partner
.
is_customer
,
Partner
.
company_id
)
.
order_by
(
Partner
.
is_vendor
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
row
=
query
.
first
()
header
=
row
.
_mapping
.
keys
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
filename
=
f
"{get_random_string(16)}.csv"
value
=
{
'header'
:
header
,
'rows'
:
rows
,
}
return
csv_response
(
self
.
req
,
value
,
filename
)
########
# List #
########
...
...
opensipkd/base/views/user_area.py
View file @
0947315
...
...
@@ -8,8 +8,10 @@ from pyramid.path import AssetResolver
from
.
import
BaseView
,
button_import
,
get_params
from
...models
import
DBSession
,
ResDesa
,
User
,
UserArea
from
.desa
import
desa_widget
,
get_desa_list
from
sqlalchemy
import
func
from
pyramid.i18n
import
TranslationStringFactory
from
opensipkd.tools.report
import
csv_response
,
file_response
from
opensipkd.tools
import
get_random_string
_
=
TranslationStringFactory
(
'myapp'
)
log
=
logging
.
getLogger
(
__name__
)
...
...
@@ -63,7 +65,7 @@ class EditSchema(AddSchema):
class
Views
(
BaseView
):
def
__init__
(
self
,
request
):
super
()
.
__init__
(
request
)
super
(
Views
,
self
)
.
__init__
(
request
)
self
.
list_schema
=
ListSchema
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
...
...
@@ -91,6 +93,22 @@ class Views(BaseView):
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
def
query_register
():
return
DBSession
.
query
(
UserArea
.
user_id
,
UserArea
.
desa_id
)
.
order_by
(
UserArea
.
user_id
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
# Panggil sebagai metode instance
row
=
query
.
first
()
header
=
row
.
_mapping
.
keys
()
if
row
else
[
'user_id'
,
'desa_id'
]
# Tambahkan fallback jika query kosong
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
filename
=
f
"{get_random_string(16)}.csv"
value
=
{
'header'
:
header
,
'rows'
:
rows
,
}
return
csv_response
(
self
.
req
,
value
,
filename
)
def
list_join
(
self
,
query
,
**
kwargs
):
return
query
.
outerjoin
(
ResDesa
,
ResDesa
.
id
==
self
.
table
.
desa_id
)
\
.
outerjoin
(
User
,
User
.
id
==
self
.
table
.
user_id
)
...
...
@@ -98,12 +116,12 @@ class Views(BaseView):
@view_config
(
route_name
=
'user-area'
,
renderer
=
'templates/table.pt'
,
permission
=
'user-view'
)
def
view_list
(
self
,
**
kwargs
):
return
super
()
.
view_list
(
**
kwargs
)
return
super
(
Views
,
self
)
.
view_list
(
**
kwargs
)
@view_config
(
route_name
=
'user-area-act'
,
renderer
=
'json'
,
permission
=
'user-view'
)
def
view_act
(
self
):
return
super
()
.
view_act
()
return
super
(
Views
,
self
)
.
view_act
()
def
get_bindings
(
self
,
row
=
None
):
return
{
...
...
@@ -113,17 +131,17 @@ class Views(BaseView):
@view_config
(
route_name
=
'user-area-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
def
view_add
(
self
):
return
super
()
.
view_add
()
return
super
(
Views
,
self
)
.
view_add
()
@view_config
(
route_name
=
'user-area-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-view'
)
def
view_view
(
self
):
return
super
()
.
view_view
()
return
super
(
Views
,
self
)
.
view_view
()
@view_config
(
route_name
=
'user-area-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
def
view_delete
(
self
):
return
super
()
.
view_delete
()
return
super
(
Views
,
self
)
.
view_delete
()
@view_config
(
route_name
=
'user-area-upload'
,
renderer
=
'templates/upload.pt'
,
permission
=
'user-upload'
)
...
...
@@ -134,33 +152,25 @@ class Views(BaseView):
@view_config
(
route_name
=
'user-area-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
def
view_edit
(
self
):
return
super
()
.
view_edit
()
return
super
(
Views
,
self
)
.
view_edit
()
def
save_request
(
self
,
values
,
row
=
None
):
user_id
=
values
.
get
(
"user_id"
)
if
not
user_id
:
return
None
desa_ids
=
values
.
get
(
"desa_id"
)
if
desa_ids
:
desa_id
=
next
(
iter
(
desa_ids
))
if
desa_ids
else
None
if
desa_id
is
not
None
:
existing_desa
=
self
.
get_existing_desa
(
user_id
)
desa_id_str
=
str
(
desa_id
)
if
desa_id_str
not
in
existing_desa
:
DBSession
.
query
(
UserArea
)
.
filter_by
(
user_id
=
user_id
)
.
delete
(
synchronize_session
=
False
)
new_row
=
UserArea
(
user_id
=
user_id
,
desa_id
=
int
(
desa_id
)
)
DBSession
.
add
(
new_row
)
DBSession
.
flush
()
return
row
...
...
@@ -173,7 +183,6 @@ class Views(BaseView):
def
get_values
(
self
,
row
,
istime
=
False
):
d
=
super
(
Views
,
self
)
.
get_values
(
row
,
istime
)
existing_desa
=
self
.
get_existing_desa
(
row
.
user_id
)
d
[
"desa_id"
]
=
{
next
(
iter
(
existing_desa
))}
if
existing_desa
else
set
()
return
d
\ No newline at end of file
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