Commit 91dd97fd by aa.gusti

tools report

1 parent a78377b3
......@@ -243,7 +243,8 @@ def csv_response(request, value, filename=None):
else:
fout = io.StringIO()
fcsv = csv.writer(fout, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
fcsv = csv.writer(fout, delimiter=',', quotechar='"',
quoting=csv.QUOTE_MINIMAL)
fcsv.writerow(value.get('header', []))
fcsv.writerows(value.get('rows', []))
response.write(fout.getvalue())
......@@ -251,7 +252,8 @@ def csv_response(request, value, filename=None):
def terbilang(bil):
angka = ["", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas"]
angka = ["", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam",
"Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas"]
hasil = " "
n = int(bil)
if 0 <= n <= 11:
......@@ -271,7 +273,8 @@ def terbilang(bil):
elif n < 1000000000:
hasil = terbilang(n / 1000000) + " Juta" + terbilang(n % 1000000)
else:
hasil = terbilang(n / 1000000000) + " Miliar" + terbilang(n % 1000000000)
hasil = terbilang(n / 1000000000) + " Miliar" + \
terbilang(n % 1000000000)
return hasil
......@@ -298,7 +301,8 @@ def pdf_compress(original_filename, compressed_filename=None):
filenames = ori_filename.split('.')
ext = filenames[-1]
filename = "".join(filenames[:-1])
compressed_filename = os.path.join(ori_dir, f"{filename}_compressed.{ext}")
compressed_filename = os.path.join(
ori_dir, f"{filename}_compressed.{ext}")
reader = PdfReader(original_filename)
writer = PdfWriter()
......@@ -319,7 +323,9 @@ def pdf_compress(original_filename, compressed_filename=None):
# tmp_reports(settings=get_settings(), module_dirname="pbb/pendataan")
# tmp_reports(settings=get_settings(), tmp_path="/home/user/tmp", module_dirname="pbb/pendataan")
# return "string of path"
def tmp_reports(settings = None, tmp_path = None, module_dirname = None):
def tmp_reports(settings=None, tmp_path=None, module_dirname=None):
default_tmp = '/tmp'
if settings is None:
......@@ -345,25 +351,24 @@ class Item(object):
pass
#Jasper Processor
class BaseView(object):
def __init__(self, request):
# super().__init__(request)
# self.user_id = self.req.user.id
# self.user_admin = self.req.has_permission('pjdl-admin') \
# or self.req.has_permission('admin') or False
# self.report_folder = "master"
# self._file = None
# self.report_path = MODULE_CLASS.report_path
# Jasper Processor
# class BaseView(object):
# def __init__(self, request):
# super().__init__(request)
# self.user_id = self.req.user.id
# self.user_admin = self.req.has_permission('pjdl-admin') \
# or self.req.has_permission('admin') or False
# self.report_folder = "master"
# self._file = None
# self.report_path = MODULE_CLASS.report_path
@property
def report_file(self):
return os.path.join(self.report_path, self.report_folder, self._file)
# @property
# def report_file(self):
# return os.path.join(self.report_path, self.report_folder, self._file)
@report_file.setter
def report_file(self, value):
self._file = value
# @report_file.setter
# def report_file(self, value):
# self._file = value
# def get_report_filter(self, values, pars, opts=True):
# # pars = p.split(":")
......@@ -403,78 +408,78 @@ class BaseView(object):
# raise Exception(f"Belum ada fungsi {pars[2]}")
# # if pars[1]!="tgl_cetak":
def jasper_response(self, **kwargs):
from opensipkd.base.tools.report import jasper_export
output_formats = kwargs.get("output_formats", ["pdf"])
force = kwargs.get("force", False)
# Menghindari temporary file dalam module aplikasi
out_path = get_params("pjdl_report_files", '/tmp/pjdl/reports')
out_path = os.path.join(out_path, "out")
if not os.path.exists(out_path):
os.makedirs(out_path)
# Ambil-nama-report dari tabel report
rpt_kode = os.path.basename(self.report_file)
row = PjdlReports.query_kode(rpt_kode).first()
if not row:
return HTTPNotFound(f"File report {rpt_kode} belum terdaftar")
# Check data pada report yang sudah dibuat
self.qry = PjdlReportItems.query().filter(PjdlReportItems.report_id == row.id)
self.params = {}
self.kondisi = ""
if row and row.params:
par = row.params.replace('\r', '').replace('\n', '')
par = par.split(",")
if par:
values = kwargs.get("values", {})
for p in par:
if p.startswith('['):
# optional parameter
p = p.strip('[').strip(']')
pars = p.split(":")
_logging.debug(f"pars: {pars}")
self.get_report_filter(values, pars, False)
else:
pars = p.split(":")
_logging.debug(f"pars: {pars}")
if pars[1] not in values:
par = len(pars) > 3 and pars[3] or pars[1]
return HTTPNotFound(f"Parameter {par} Belum Diisi")
self.get_report_filter(values, pars)
_logging.debug(f"kondisinya: {self.kondisi}")
self.params["kondisi"] = self.kondisi
self.qry = self.qry.filter(
func.CAST(
PjdlReportItems.params["output_formats"], String) == f'"{output_formats}"')
items = self.qry.first()
if items and not force:
file_name = os.path.join(out_path, items.file_name)
if not os.path.exists(os.path.join(out_path, file_name)):
force = True
else:
force = True
if force:
self.params.update(MODULE_CLASS.report_params)
_logging.debug(f"parameter: {self.params}")
file_name = jasper_export(
self.report_file, out_path, parameters=self.params,
output_formats=output_formats)[0]
if not items:
items = PjdlReportItems()
items.report_id = row.id
self.params["output_formats"] = output_formats
items.params = self.params
_logging.debug(f"parameter: {self.params}")
items.file_name = os.path.basename(file_name)
flush(items)
return file_response(self.req, filename=file_name)
\ No newline at end of file
# def jasper_response(self, **kwargs):
# from opensipkd.base.tools.report import jasper_export
# output_formats = kwargs.get("output_formats", ["pdf"])
# force = kwargs.get("force", False)
# # Menghindari temporary file dalam module aplikasi
# out_path = get_params("pjdl_report_files", '/tmp/pjdl/reports')
# out_path = os.path.join(out_path, "out")
# if not os.path.exists(out_path):
# os.makedirs(out_path)
# # Ambil-nama-report dari tabel report
# rpt_kode = os.path.basename(self.report_file)
# row = PjdlReports.query_kode(rpt_kode).first()
# if not row:
# return HTTPNotFound(f"File report {rpt_kode} belum terdaftar")
# # Check data pada report yang sudah dibuat
# self.qry = PjdlReportItems.query().filter(PjdlReportItems.report_id == row.id)
# self.params = {}
# self.kondisi = ""
# if row and row.params:
# par = row.params.replace('\r', '').replace('\n', '')
# par = par.split(",")
# if par:
# values = kwargs.get("values", {})
# for p in par:
# if p.startswith('['):
# # optional parameter
# p = p.strip('[').strip(']')
# pars = p.split(":")
# _logging.debug(f"pars: {pars}")
# self.get_report_filter(values, pars, False)
# else:
# pars = p.split(":")
# _logging.debug(f"pars: {pars}")
# if pars[1] not in values:
# par = len(pars) > 3 and pars[3] or pars[1]
# return HTTPNotFound(f"Parameter {par} Belum Diisi")
# self.get_report_filter(values, pars)
# _logging.debug(f"kondisinya: {self.kondisi}")
# self.params["kondisi"] = self.kondisi
# self.qry = self.qry.filter(
# func.CAST(
# PjdlReportItems.params["output_formats"], String) == f'"{output_formats}"')
# items = self.qry.first()
# if items and not force:
# file_name = os.path.join(out_path, items.file_name)
# if not os.path.exists(os.path.join(out_path, file_name)):
# force = True
# else:
# force = True
# if force:
# self.params.update(MODULE_CLASS.report_params)
# _logging.debug(f"parameter: {self.params}")
# file_name = jasper_export(
# self.report_file, out_path, parameters=self.params,
# output_formats=output_formats)[0]
# if not items:
# items = PjdlReportItems()
# items.report_id = row.id
# self.params["output_formats"] = output_formats
# items.params = self.params
# _logging.debug(f"parameter: {self.params}")
# items.file_name = os.path.basename(file_name)
# flush(items)
# return file_response(self.req, filename=file_name)
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!