jabatan_report.py
2.74 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
75
76
77
78
79
80
81
82
83
84
85
86
87
import os
import uuid
# from ..tools import row2dict, xls_reader
from email.utils import parseaddr
from datetime import datetime
from sqlalchemy import not_, func, or_, desc
from sqlalchemy.orm import aliased
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (HTTPFound, )
import json
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..views import (ColumnDT, DataTables, BaseView, )
from opensipkd.tools.report import (
open_rml_row,
open_rml_pdf,
pdf_response,
csv_response,
get_logo, )
from opensipkd.tools import (dmy, date_from_str, thousand, STATUS)
from ..models import DBSession
from ..models import (
Jabatan,
Departemen,
)
class view_rpt(BaseView):
@view_config(route_name='jabatan-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 = 'jabatan.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 + '/jabatan.row.rml')
rows = []
for r in query.all():
s = rml_row.format(kode=r.kode, nama=r.nama, status=r.status and "Aktif" or "Pasif")
rows.append(s)
pdf, filename = open_rml_pdf(path + '/jabatan.rml', rows=rows,
company=request.company,
departement=request.session['departemen_nm'],
address=request.address,
alamat=Departemen.query_id(request.session['departemen_id']).first(),
periode='01-01-2017 s.d 31-12-2017')
return pdf_response(request, pdf, filename)
# ##########
# # query #
# ##########
def query_reg(request):
return DBSession.query(Jabatan.kode,
Jabatan.nama,
Jabatan.status, ). \
filter(Jabatan.status == 1). \
order_by(Jabatan.id)