tp.py 1.16 KB
from sqlalchemy import (
    Column,
    Integer,
    String
)
from sqlalchemy.ext.hybrid import hybrid_property

from . import PUBLIC_TABLE_ARGS, DefaultModel, Base


class PjdlTp(Base, DefaultModel):
    __tablename__ = 'pad_tp'
    __table_args__ = PUBLIC_TABLE_ARGS

    id = Column(Integer, primary_key=True)
    singkatan = Column(String, nullable=False, unique=True)
    nama = Column(String, nullable=False, unique=True)

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

    @kode.setter
    def kode(self, kode):
        self.singkatan = kode

    @classmethod
    def query_kode(cls, kode):
        return cls.query().filter(cls.singkatan == kode)

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

    @classmethod
    def query_register(cls, order_field="nama"):
        return cls.query_from(columns =[cls.singkatan, cls.nama]).\
            order_by(getattr(cls, order_field))

    @classmethod
    def get_list(cls):
        r = []
        q = cls.query().order_by(cls.kecamatannm)
        for row in q:
            g = (str(row.id), f"{row.kode}/ {row.nama}")
            r.append(g)
        return r