anggaran.py
2.92 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
from sqlalchemy import func
from ..tools import date_from_str #, row2dict
from pyramid.view import (
view_config,
)
from ..models import EisDBSession, EisSipkdAnggaran
from ..views import BaseView
from datetime import datetime
########
# APP Home #
########
class Anggaran(BaseView):
def cek_value(self,value,devider,simbol):
if value<devider:
return "{0:,.0f}".format(value)
else:
return "{0:,.0f} {1}".format(value/devider,simbol)
@view_config(route_name='eis-sipkd-anggaran', renderer='templates/anggaran.pt',
permission='eis-sipkd-anggaran')
def view_app(self):
tahun = self.ses['tahun']
params = self.params
kode = 'kode' in params and params['kode'] or ''
ar_qry = ap_qry = pb_qry = None
ar_rows = ap_rows = pb_rows = {}
jml_ar = jml_ap = 0
ar_qry = EisDBSession.query(EisSipkdAnggaran.kode,
EisSipkdAnggaran.nama,
EisSipkdAnggaran.level_id,
func.sum(EisSipkdAnggaran.jumlah).label('jumlah')).\
group_by(EisSipkdAnggaran.kode,
EisSipkdAnggaran.nama,
EisSipkdAnggaran.level_id,
).\
filter(EisSipkdAnggaran.tahun == tahun ).\
order_by(EisSipkdAnggaran.kode)
level_id = 2
if not kode:
ar_qry = ar_qry.filter(EisSipkdAnggaran.level_id <= level_id,
EisSipkdAnggaran.level_id > level_id-2,)
ap_qry = ar_qry.filter(EisSipkdAnggaran.kode.like('5%'))
pb_qry = ar_qry.filter(EisSipkdAnggaran.kode.like('6%'))
ar_qry = ar_qry.filter(EisSipkdAnggaran.kode.like('4%'))
title = "RINGKASAN APBD"
ar_rows = row2dict(ar_qry.all())
pb_rows = row2dict(pb_qry.all())
for row in ap_rows:
if row['level_id'] == level_id:
jml_ap += row['jumlah']
else:
level_id = kode.count('.')+2
ar_qry = ar_qry.filter(EisSipkdAnggaran.kode.like(kode+'%'),
EisSipkdAnggaran.level_id <= level_id,
EisSipkdAnggaran.level_id > level_id-1,
)
title = 'nama' in params and params['nama'] or ''
ar_rows = row2dict(ar_qry.all())
for row in ar_rows:
if row['level_id'] == level_id:
jml_ar += row['jumlah']
return dict(project='EIS', ar_rows=ar_rows, ap_rows = ap_rows,
sd_row=jml_ar-jml_ap, level_id=level_id, pb_rows=pb_rows,
title=title, kode=kode)
def row2dict(rows):
return [dict(zip(row.keys(), list(row))) for row in rows]