partner_report.py
2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import os
from datetime import datetime
from pyramid.view import (
view_config,
)
from opensipkd.models import DBSession
from opensipkd.models import (Partner)
from opensipkd.tools.report import (
open_rml_row,
open_rml_pdf,
pdf_response,
csv_response,
)
from ..views import (BaseView, )
class ViewRpt(BaseView):
@view_config(route_name='partner-rpt', renderer='csv')
def view_csv(self):
request = self.req
ses = request.session
params = request.params
url_dict = request.matchdict
uid = request.user.id
tgl = datetime.now().strftime('%d-%m-%Y')
if url_dict['rpt'] == 'csv':
query = query_reg(request)
row = query.first()
header = row.keys()
rows = []
for item in query.all():
rows.append(list(item))
filename = 'partner.csv'
value = {
'header': header,
'rows': rows,
}
return csv_response(request, value, filename)
elif url_dict['rpt'] == 'pdf':
query = query_reg(request)
_here = os.path.dirname(__file__) # get current folder -> views
path = os.path.dirname(_here) # mundur 1 level
path = os.path.join(path, 'reports')
rml_row = open_rml_row(path + '/partner.row.rml')
rows = []
for r in query.all():
s = rml_row.format(kode=r.kode, nama=r.nama, vendor=r.is_vendor and "Ya" or "-",
is_customer=r.is_customer and "Ya" or "-",
status=r.status and "Aktif" or "Pasif")
rows.append(s)
pdf, filename = open_rml_pdf(path + '/partner.rml', rows=rows,
company=request.company,
departement=request.departement,
)
return pdf_response(request, pdf, filename)
# ##########
# # query #
# ##########
def query_reg(request):
return DBSession.query(Partner.kode,
Partner.nama,
Partner.is_vendor,
Partner.is_customer,
Partner.status, ). \
filter(Partner.status == 1). \
order_by(Partner.id)