Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
opensipkd-tools
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 91dd97fd
authored
Jan 31, 2025
by
aa.gusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
tools report
1 parent
a78377b3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
102 additions
and
97 deletions
opensipkd/tools/report.py
opensipkd/tools/report.py
View file @
91dd97f
...
...
@@ -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)
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