Commit 09473156 by iqbal

penambahan fungsi csv

1 parent ef68c235
......@@ -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():
......
......@@ -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
......@@ -116,6 +117,23 @@ class ViewDesa(BaseView):
print(parameters)
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():
......
......@@ -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'
......@@ -94,6 +95,22 @@ class Views(BaseView):
print(parameters)
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')
......
......@@ -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',
......
......@@ -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,
)
......@@ -134,6 +135,22 @@ class ViewPartner(BaseView):
print(parameters)
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 #
......
......@@ -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
......@@ -90,7 +92,23 @@ 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
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!