reports.py 1.78 KB
from collections import OrderedDict
from sqlalchemy import (
    Column,
    DateTime,
    ForeignKey,
    Integer,
    String,
    SmallInteger,
    JSON
)

from . import PAD_TABLE_ARGS, Base, NamaModel, DefaultModel

REPORT_DICT = OrderedDict ({"1": "Master",
                 "2": "Pendataan",
                 "3": "Self",
                 "4": "Official",
                 "5": "Penerimaan",
                 "6" : "Penagihan",
                 "99": "Lain-Lain"}) # untuk cetakan yang bukan laporan - per ID
REPORT_CATEGORY = ((int(k), REPORT_DICT[k])for k in REPORT_DICT)


class PjdlReports(Base, NamaModel):
    __tablename__ = 'pad_reports'
    __table_args__ = PAD_TABLE_ARGS

    id = Column(Integer, primary_key=True)
    category_id = Column(Integer())
    report_id = Column(Integer())  # Susunan Dalam Tampilan
    kode = Column(String(50), nullable=False)
    nama = Column(String(50), nullable=False)
    params = Column(JSON())
    status = Column(SmallInteger())

    @classmethod
    def get_list(cls, category_id=None):
        r = []
        q = cls.query().order_by(cls.report_id)
        if category_id:
            q = q.filter_by(category_id=category_id)
        for row in q:
            g = (str(row.kode), f"{row.nama}")
            r.append(g)
        return r


class PjdlReportItems(Base, DefaultModel):
    __tablename__ = 'pad_report_items'
    __table_args__ = PAD_TABLE_ARGS

    id = Column(Integer, primary_key=True)
    report_id = Column(Integer(), ForeignKey(PjdlReports.id))  # Susunan Dalam Tampilan
    # kecamatan_id = Column(Integer())
    # kelurahan_id = Column(Integer())
    # op_id = Column(Integer())
    # wp_id = Column(Integer())
    # start_date = Column(DateTime())
    # end_date = Column(DateTime())
    params = Column(JSON())
    file_name = Column(String())