Commit 09473156 by iqbal

penambahan fungsi csv

1 parent ef68c235
...@@ -10,6 +10,7 @@ from opensipkd.models import DBSession, ResDati2, kategori_dati2, ResProvinsi ...@@ -10,6 +10,7 @@ from opensipkd.models import DBSession, ResDati2, kategori_dati2, ResProvinsi
from ..views import BaseView from ..views import BaseView
from . import BaseView, btn_upload from . import BaseView, btn_upload
from pyramid.path import AssetResolver from pyramid.path import AssetResolver
from opensipkd.tools import get_random_string
from . import BaseView, button_import, get_params from . import BaseView, button_import, get_params
from opensipkd.tools.report import csv_response, file_response from opensipkd.tools.report import csv_response, file_response
...@@ -98,6 +99,21 @@ class ViewDati2(BaseView): ...@@ -98,6 +99,21 @@ class ViewDati2(BaseView):
filename = jasper_export(self.report_file, parameters=parameters) filename = jasper_export(self.report_file, parameters=parameters)
return file_response(self.req, filename=filename[0]) 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 form_validator(self, form, value):
def err_kode(): def err_kode():
......
...@@ -11,6 +11,7 @@ from pyramid.path import AssetResolver ...@@ -11,6 +11,7 @@ from pyramid.path import AssetResolver
from . import BaseView, button_import, get_params from . import BaseView, button_import, get_params
from opensipkd.tools.report import csv_response, file_response from opensipkd.tools.report import csv_response, file_response
from .dati2 import dati2_widget from .dati2 import dati2_widget
from opensipkd.tools import get_random_string
from .kecamatan import kecamatan_widget from .kecamatan import kecamatan_widget
from .provinsi import provinsi_widget from .provinsi import provinsi_widget
from ..views import BaseView from ..views import BaseView
...@@ -116,6 +117,23 @@ class ViewDesa(BaseView): ...@@ -116,6 +117,23 @@ class ViewDesa(BaseView):
print(parameters) print(parameters)
filename = jasper_export(self.report_file, parameters=parameters) filename = jasper_export(self.report_file, parameters=parameters)
return file_response(self.req, filename=filename[0]) 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 form_validator(self, form, value):
def err_kode(): def err_kode():
......
...@@ -16,6 +16,7 @@ from . import BaseView, btn_upload ...@@ -16,6 +16,7 @@ from . import BaseView, btn_upload
from pyramid.path import AssetResolver from pyramid.path import AssetResolver
from . import BaseView, button_import, get_params from . import BaseView, button_import, get_params
from opensipkd.tools.report import csv_response, file_response from opensipkd.tools.report import csv_response, file_response
from opensipkd.tools import get_random_string
SESS_ADD_FAILED = 'Tambah eselon gagal' SESS_ADD_FAILED = 'Tambah eselon gagal'
SESS_EDIT_FAILED = 'Edit eselon gagal' SESS_EDIT_FAILED = 'Edit eselon gagal'
...@@ -94,6 +95,22 @@ class Views(BaseView): ...@@ -94,6 +95,22 @@ class Views(BaseView):
print(parameters) print(parameters)
filename = jasper_export(self.report_file, parameters=parameters) filename = jasper_export(self.report_file, parameters=parameters)
return file_response(self.req, filename=filename[0]) 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', @view_config(route_name='eselon', renderer='templates/table.pt',
permission='eselon') permission='eselon')
......
...@@ -92,21 +92,21 @@ class Views(BaseView): ...@@ -92,21 +92,21 @@ class Views(BaseView):
def get_bindings(self, row=None): def get_bindings(self, row=None):
return dict(group=row, return dict(group=row,
permissions_list=get_permissions_list()) permissions_list=get_permissions_list())
@staticmethod
def query_register(): def query_register():
return DBSession.query(Group.group_name, Group.description,).order_by(Group.group_name) return DBSession.query(Group.group_name, Group.description,Group.permissions).order_by(Group.group_name)
#def csv_response(self, **kwargs): def csv_response(self, **kwargs):
#query = self.table.query_register() query = self.query_register()
#row = query.first() row = query.first()
#header = row._mapping.keys() header = row._mapping.keys()
#rows = [list(item) for item in query.all()] rows = [list(item) for item in query.all()]
#filename = f"{get_random_string(16)}.csv" filename = f"{get_random_string(16)}.csv"
#value = { value = {
#'header': header, 'header': header,
#'rows': rows, 'rows': rows,
#} }
#return csv_response(self.req, value, filename) return csv_response(self.req, value, filename)
@view_config( @view_config(
route_name='group', renderer='templates/table.pt', route_name='group', renderer='templates/table.pt',
......
...@@ -15,6 +15,7 @@ from . import BaseView, button_import, get_params ...@@ -15,6 +15,7 @@ from . import BaseView, button_import, get_params
from opensipkd.tools.report import csv_response, file_response from opensipkd.tools.report import csv_response, file_response
from opensipkd.tools import Upload, img_exts from opensipkd.tools import Upload, img_exts
from pyramid.i18n import TranslationStringFactory from pyramid.i18n import TranslationStringFactory
from opensipkd.tools import get_random_string
from pyramid.view import ( from pyramid.view import (
view_config, view_config,
) )
...@@ -134,6 +135,22 @@ class ViewPartner(BaseView): ...@@ -134,6 +135,22 @@ class ViewPartner(BaseView):
print(parameters) print(parameters)
filename = jasper_export(self.report_file, parameters=parameters) filename = jasper_export(self.report_file, parameters=parameters)
return file_response(self.req, filename=filename[0]) 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 # # List #
......
...@@ -8,8 +8,10 @@ from pyramid.path import AssetResolver ...@@ -8,8 +8,10 @@ from pyramid.path import AssetResolver
from . import BaseView, button_import, get_params from . import BaseView, button_import, get_params
from ...models import DBSession, ResDesa, User, UserArea from ...models import DBSession, ResDesa, User, UserArea
from .desa import desa_widget, get_desa_list from .desa import desa_widget, get_desa_list
from sqlalchemy import func
from pyramid.i18n import TranslationStringFactory from pyramid.i18n import TranslationStringFactory
from opensipkd.tools.report import csv_response, file_response from opensipkd.tools.report import csv_response, file_response
from opensipkd.tools import get_random_string
_ = TranslationStringFactory('myapp') _ = TranslationStringFactory('myapp')
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -63,7 +65,7 @@ class EditSchema(AddSchema): ...@@ -63,7 +65,7 @@ class EditSchema(AddSchema):
class Views(BaseView): class Views(BaseView):
def __init__(self, request): def __init__(self, request):
super().__init__(request) super(Views, self).__init__(request)
self.list_schema = ListSchema self.list_schema = ListSchema
self.add_schema = AddSchema self.add_schema = AddSchema
self.edit_schema = EditSchema self.edit_schema = EditSchema
...@@ -90,7 +92,23 @@ class Views(BaseView): ...@@ -90,7 +92,23 @@ class Views(BaseView):
} }
filename = jasper_export(self.report_file, parameters=parameters) filename = jasper_export(self.report_file, parameters=parameters)
return file_response(self.req, filename=filename[0]) 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): def list_join(self, query, **kwargs):
return query.outerjoin(ResDesa, ResDesa.id == self.table.desa_id) \ return query.outerjoin(ResDesa, ResDesa.id == self.table.desa_id) \
.outerjoin(User, User.id == self.table.user_id) .outerjoin(User, User.id == self.table.user_id)
...@@ -98,12 +116,12 @@ class Views(BaseView): ...@@ -98,12 +116,12 @@ class Views(BaseView):
@view_config(route_name='user-area', renderer='templates/table.pt', @view_config(route_name='user-area', renderer='templates/table.pt',
permission='user-view') permission='user-view')
def view_list(self, **kwargs): 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', @view_config(route_name='user-area-act', renderer='json',
permission='user-view') permission='user-view')
def view_act(self): def view_act(self):
return super().view_act() return super(Views, self).view_act()
def get_bindings(self, row=None): def get_bindings(self, row=None):
return { return {
...@@ -113,17 +131,17 @@ class Views(BaseView): ...@@ -113,17 +131,17 @@ class Views(BaseView):
@view_config(route_name='user-area-add', renderer='templates/form.pt', @view_config(route_name='user-area-add', renderer='templates/form.pt',
permission='user-edit') permission='user-edit')
def view_add(self): 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', @view_config(route_name='user-area-view', renderer='templates/form.pt',
permission='user-view') permission='user-view')
def view_view(self): 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', @view_config(route_name='user-area-delete', renderer='templates/form.pt',
permission='user-edit') permission='user-edit')
def view_delete(self): def view_delete(self):
return super().view_delete() return super(Views, self).view_delete()
@view_config(route_name='user-area-upload', @view_config(route_name='user-area-upload',
renderer='templates/upload.pt', permission='user-upload') renderer='templates/upload.pt', permission='user-upload')
...@@ -134,33 +152,25 @@ class Views(BaseView): ...@@ -134,33 +152,25 @@ class Views(BaseView):
@view_config(route_name='user-area-edit', renderer='templates/form.pt', @view_config(route_name='user-area-edit', renderer='templates/form.pt',
permission='user-edit') permission='user-edit')
def view_edit(self): def view_edit(self):
return super().view_edit() return super(Views, self).view_edit()
def save_request(self, values, row=None): def save_request(self, values, row=None):
user_id = values.get("user_id") user_id = values.get("user_id")
if not user_id: if not user_id:
return None return None
desa_ids = values.get("desa_id") desa_ids = values.get("desa_id")
if desa_ids: if desa_ids:
desa_id = next(iter(desa_ids)) if desa_ids else None desa_id = next(iter(desa_ids)) if desa_ids else None
if desa_id is not None: if desa_id is not None:
existing_desa = self.get_existing_desa(user_id) existing_desa = self.get_existing_desa(user_id)
desa_id_str = str(desa_id) desa_id_str = str(desa_id)
if desa_id_str not in existing_desa: if desa_id_str not in existing_desa:
DBSession.query(UserArea).filter_by(user_id=user_id).delete(synchronize_session=False) DBSession.query(UserArea).filter_by(user_id=user_id).delete(synchronize_session=False)
new_row = UserArea( new_row = UserArea(
user_id=user_id, user_id=user_id,
desa_id=int(desa_id) desa_id=int(desa_id)
) )
DBSession.add(new_row) DBSession.add(new_row)
DBSession.flush() DBSession.flush()
return row return row
...@@ -173,7 +183,6 @@ class Views(BaseView): ...@@ -173,7 +183,6 @@ class Views(BaseView):
def get_values(self, row, istime=False): def get_values(self, row, istime=False):
d = super(Views, self).get_values(row, istime) d = super(Views, self).get_values(row, istime)
existing_desa = self.get_existing_desa(row.user_id) existing_desa = self.get_existing_desa(row.user_id)
d["desa_id"] = {next(iter(existing_desa))} if existing_desa else set() d["desa_id"] = {next(iter(existing_desa))} if existing_desa else set()
return d return d
\ No newline at end of file \ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!