Commit 647e23e4 by Tatang S
2 parents 170da2d0 91dd97fd
...@@ -9,11 +9,13 @@ import logging ...@@ -9,11 +9,13 @@ import logging
import mimetypes import mimetypes
import os import os
import re import re
from deform import widget
from json import JSONEncoder from json import JSONEncoder
from random import choice from random import choice
from string import (ascii_uppercase, ascii_lowercase, digits, ) from string import (ascii_uppercase, ascii_lowercase, digits, )
import colander import colander
from pyramid.csrf import new_csrf_token
import pytz import pytz
from pyramid.httpexceptions import HTTPNotFound from pyramid.httpexceptions import HTTPNotFound
from pyramid.threadlocal import get_current_registry from pyramid.threadlocal import get_current_registry
...@@ -1005,7 +1007,6 @@ def terbilang_(n): ...@@ -1005,7 +1007,6 @@ def terbilang_(n):
hasil = terbilang_(n % 10) + ['belas'] hasil = terbilang_(n % 10) + ['belas']
else: else:
hasil = [satuan[n]] hasil = [satuan[n]]
print('hasil')
return hasil return hasil
......
...@@ -246,7 +246,8 @@ def csv_response(request, value, filename=None): ...@@ -246,7 +246,8 @@ def csv_response(request, value, filename=None):
else: else:
fout = io.StringIO() 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.writerow(value.get('header', []))
fcsv.writerows(value.get('rows', [])) fcsv.writerows(value.get('rows', []))
response.write(fout.getvalue()) response.write(fout.getvalue())
...@@ -254,7 +255,8 @@ def csv_response(request, value, filename=None): ...@@ -254,7 +255,8 @@ def csv_response(request, value, filename=None):
def terbilang(bil): 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 = " " hasil = " "
n = int(bil) n = int(bil)
if 0 <= n <= 11: if 0 <= n <= 11:
...@@ -274,7 +276,8 @@ def terbilang(bil): ...@@ -274,7 +276,8 @@ def terbilang(bil):
elif n < 1000000000: elif n < 1000000000:
hasil = terbilang(n / 1000000) + " Juta" + terbilang(n % 1000000) hasil = terbilang(n / 1000000) + " Juta" + terbilang(n % 1000000)
else: else:
hasil = terbilang(n / 1000000000) + " Miliar" + terbilang(n % 1000000000) hasil = terbilang(n / 1000000000) + " Miliar" + \
terbilang(n % 1000000000)
return hasil return hasil
...@@ -301,7 +304,8 @@ def pdf_compress(original_filename, compressed_filename=None): ...@@ -301,7 +304,8 @@ def pdf_compress(original_filename, compressed_filename=None):
filenames = ori_filename.split('.') filenames = ori_filename.split('.')
ext = filenames[-1] ext = filenames[-1]
filename = "".join(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) reader = PdfReader(original_filename)
writer = PdfWriter() writer = PdfWriter()
...@@ -322,7 +326,9 @@ def pdf_compress(original_filename, compressed_filename=None): ...@@ -322,7 +326,9 @@ def pdf_compress(original_filename, compressed_filename=None):
# tmp_reports(settings=get_settings(), module_dirname="pbb/pendataan") # tmp_reports(settings=get_settings(), module_dirname="pbb/pendataan")
# tmp_reports(settings=get_settings(), tmp_path="/home/user/tmp", module_dirname="pbb/pendataan") # tmp_reports(settings=get_settings(), tmp_path="/home/user/tmp", module_dirname="pbb/pendataan")
# return "string of path" # 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' default_tmp = '/tmp'
if settings is None: if settings is None:
...@@ -346,3 +352,137 @@ def tmp_reports(settings = None, tmp_path = None, module_dirname = None): ...@@ -346,3 +352,137 @@ def tmp_reports(settings = None, tmp_path = None, module_dirname = None):
class Item(object): class Item(object):
pass 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
# @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
# def get_report_filter(self, values, pars, opts=True):
# # pars = p.split(":")
# if opts:
# if pars[1] not in values:
# par = len(pars) > 3 and pars[3] or pars[1]
# raise HTTPNotFound(f"Parameter {par} belum diisi")
# # if pars[1].find("customer")>-1:
# # raise Exception("X")
# if pars[1] in values:
# vals = values[pars[1]]
# if pars[2] == "str":
# self.params[pars[1]] = str(vals)
# if not opts:
# self.kondisi = f"{self.kondisi} AND {pars[0]}='{vals}'"
# vals = f"'{vals}'"
# self.qry = self.qry.filter(
# func.CAST(PjdlReportItems.params[pars[1]], String) == f'"{vals}"')
# elif pars[2] == "int":
# self.params[pars[1]] = int(vals)
# if not opts:
# self.kondisi = f"{self.kondisi} AND {pars[0]}={vals}"
# vals = f"{vals}"
# self.qry = self.qry.filter(
# func.CAST(PjdlReportItems.params[pars[1]], String) == f'{vals}')
# elif pars[2] in ["dMy", "ymd", "dmy"]:
# vals = date_from_str(vals)
# fc = getattr(opensipkd.tools, pars[2])
# vals = f"{fc(vals)}"
# self.params[pars[1]] = vals
# self.qry = self.qry.filter(
# func.CAST(PjdlReportItems.params[pars[1]], String) == f'"{vals}"')
# if not opts:
# self.kondisi = f"{self.kondisi} AND {pars[0]}='{vals}'"
# else:
# 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)
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!