ref.py 3.14 KB
from tangsel.pbb.models import BaseJenisPelayanan, BaseSeksi, BasePbb
from . import PbbmBase, PbbmDBSession, PBBM_ARGS
from sqlalchemy import Column, String, ForeignKeyConstraint
from sqlalchemy.ext.hybrid import hybrid_property
class JenisPelayanan(PbbmBase, BaseJenisPelayanan):
    __tablename__ = 'ref_jns_pelayanan'
    __table_args__ = (PBBM_ARGS,)


class Seksi(PbbmBase, BaseSeksi):
    __tablename__ = 'ref_seksi'
    __table_args__ = (PBBM_ARGS,)

    @classmethod
    def get_list(cls):
        query = PbbmDBSession.query(cls.kd_seksi,
                                   cls.nm_seksi)
        return [(row.kd_seksi, row.nm_seksi) for row in query.all()]


class LookupGroup(PbbmBase, BasePbb):
    __tablename__ = 'lookup_group'
    kd_lookup_group = Column(String(2), primary_key=True)
    nm_lookup_group = Column(String(50))
    __table_args__ = (PBBM_ARGS,)

    @hybrid_property
    def kode(self):
        return self.kd_lookup_group

    @classmethod
    def query_kode(cls, kode):
        return cls.query().filter_by(kd_lookup_group=kode)

    @classmethod
    def query_id(cls, id):
        return cls.query_kode(id)

    @classmethod
    def query_nama(cls, nama):
        return cls.query().filter_by(nm_lookup_group=nama)

    @classmethod
    def query_nama_like(cls, nama):
        return cls.query().filter(cls.nm_lookup_group.like("%{}%".format(nama)))


class LookupItem(PbbmBase, BasePbb):
    __tablename__ = 'lookup_item'
    kd_lookup_group = Column(String(2), primary_key=True)
    kd_lookup_item = Column(String(1), primary_key=True)
    nm_lookup_item = Column(String(225))
    __table_args__ = (
        ForeignKeyConstraint(['kd_lookup_group'],
                             [LookupGroup.kd_lookup_group]),
        PBBM_ARGS)

    @hybrid_property
    def id(self):
        return self.kd_lookup_group + self.kd_lookup_item

    @hybrid_property
    def nama(self):
        return self.nm_lookup_item

    @hybrid_property
    def kode(self):
        return "{}.{}".format(self.kd_lookup_group, self.kd_lookup_item)

    @classmethod
    def query_group(cls, group_id):
        return cls.query().filter(cls.kd_lookup_group == group_id)

    @classmethod
    def query_kode(cls, kode):
        kd_lookup_group = kode[:2]
        kd_lookup_item = kode[2:4]
        return cls.query_group(kd_lookup_group). \
            filter_by(kd_lookup_item=kd_lookup_item)

    @classmethod
    def query_id(cls, id):
        return cls.query_kode(id)

    @classmethod
    def query_nama(cls, nama):
        return cls.query().filter_by(nm_lookup_item=nama)

    @classmethod
    def query_nama_like(cls, nama):
        return cls.query().filter(cls.nm_lookup_item.like("%{}%".format(nama)))

    @classmethod
    def query_group_list_item(cls, group_id):
        return PbbmDBSession.query(cls.kd_lookup_item, cls.nm_lookup_item). \
            filter(cls.kd_lookup_group == group_id)

    # @classmethod
    # def query_group(cls, gid):
    #     return cls.query().filter(kd_lookup_group=gid)

    @classmethod
    def get_list(cls, gid):
        return cls.query_group_list_item(gid)