__init__.py 1.98 KB
from datetime import datetime
from sqlalchemy import (
    Column,
    Integer,
    Text,
    DateTime,
    ForeignKey,
    UniqueConstraint,
    String,
    SmallInteger
    )
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm import (
    scoped_session,
    sessionmaker,
    relationship,
    backref
    )

from zope.sqlalchemy import ZopeTransactionExtension

from ...models import (CommonModel, DefaultModel as BaseDefaultModel,
                       Base as EisBase, DBSession as EisDBSession)
 
TABLE_ARGS = {'extend_existing':True,
              'schema':'eis'
              }
    
class DefaultModel(BaseDefaultModel):
    def save(self):
        if self.id:
            #Who knows another user edited, so use merge ()
            EisDBSession.merge(self)
        else:
            EisDBSession.add(self)    
        
    @classmethod
    def query(cls):
        return EisDBSession.query(cls)

    @classmethod
    def query_id(cls, id):
        return cls.query().filter_by(id=id)
        
    @classmethod
    def delete(cls, id):
        cls.query_id(id).delete()
    @classmethod
    def count(cls):
        return EisDBSession.query(func.count('id')).scalar()
    
class KodeModel(DefaultModel):
    kode = Column(String(32))
    status = Column(SmallInteger, nullable=False, default=0)
    created  = Column(DateTime, nullable=True, default=datetime.utcnow)
    updated  = Column(DateTime, nullable=True)
    create_uid  = Column(Integer, nullable=True, default=1)
    update_uid  = Column(Integer, nullable=True)
    
    @classmethod
    def query_kode(cls,kode):
        return cls.query().filter_by(kode=kode)
        
    @classmethod
    def get_active(cls):
        return cls.query().filter_by(status=1).all()
    
class NamaModel(KodeModel):
    nama = Column(String(128))

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

from .eis import Eis, Slide, Chart, ChartItem, LastUpdate