kecamatan_rpt.py 2.33 KB
import os
import uuid
#from ..tools import row2dict, xls_reader
from datetime import datetime
from sqlalchemy import not_, func
from pyramid.view import (
    view_config,
    )
from pyramid.httpexceptions import (
    HTTPFound,
    )
import colander
from deform import (
    Form,
    widget,
    ValidationFailure,
    )
from datatables import ColumnDT, DataTables
from ..models import (
    PbbmDBSession as DBSession,
    Kecamatan
    )
from ..tools import (
    open_rml_row, open_rml_pdf, pdf_response, csv_response,
    get_settings)
 
##########
# RPT    #
##########   
@view_config(route_name='pbbm-kecamatan-rpt', renderer="json", 
        permission='pbbm-kecamatan-rpt')
def view_rpt(request):
    request = request
    ses = request.session
    req = request
    params   = req.params
    url_dict = req.matchdict
    if url_dict['rpt']=='pdf' :
        query = query_register()
        _here = os.path.dirname(__file__)
        path = os.path.join(os.path.dirname(_here), 'reports')
        rml_row = open_rml_row(path+'/kecamatan.row.rml')
        
        rows=[]
        for r in query.all():
            s = rml_row.format(
                    kode=r.kode,
                    nama=r.nama
                )
            rows.append(s)
        pdf, filename = open_rml_pdf(path+'/kecamatan.rml', rows=rows,
                company=request.company,
                departement = request.departement,
                address = request.address)
        return pdf_response(request, pdf, filename)
        
    elif url_dict['rpt']=='csv' :
        query = query_register()
        row = query.first()
        header = row.keys()
        rows = []
        for item in query.all():
            rows.append(list(item))
            
        filename = 'kecamatan.csv'
        value = {
                'header': header,
                'rows'  : rows,
                }
        return csv_response(request, value, filename)
def query_register():
    return DBSession.query(func.concat(Kecamatan.kd_propinsi, func.concat('.',
                      func.concat(Kecamatan.kd_dati2, func.concat('-',
                               Kecamatan.kd_kecamatan)))).label('kode'),
                  Kecamatan.nm_kecamatan.label('nama')).\
              order_by(Kecamatan.kd_kecamatan,Kecamatan.kd_kecamatan)