Commit eaf1dff5 by aa.gusti

init

1 parent d3903b35
#
\ No newline at end of file \ No newline at end of file
try:
from urllib import quote_plus
except:
from urllib.parse import quote_plus
url = 'DRIVER={FreeTDS};Server=192.168.56.1;Database=V@LID49V6_2015;UID=sa;PWD=a;TDS_Version=8.0;Port=1433;'
quoted = quote_plus(url)
sipkd_url = 'mssql+pyodbc:///?odbc_connect={}'.format(quoted)
#pyodbc:///?odbc_connect=DRIVER%%3D%%7BFreeTDS%%7D%%3BServer%%3D192.168.56.1%%3BDatabase%%3DV%%40LID49V6_2015%%3BUID%%3Dsa%%3BPWD%%3Da%%3BPort%%3D1433%%3BTDS_Version%%3D8.0"
eis_url = "postgresql://aagusti:a@192.168.56.1/os"
from datetime import datetime
from sqlalchemy import (
Column,
Integer,
BigInteger,
SmallInteger,
Text,
DateTime,
String,
UniqueConstraint,
ForeignKey,
Index,
create_engine,
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm import (
scoped_session,
sessionmaker,
relationship, backref
)
from conf import eis_url
EisBase = declarative_base()
EisDBSession = scoped_session(sessionmaker())
engine = create_engine(eis_url)
EisDBSession.configure(bind=engine)
EisBase.metadata.bind = engine
TABLE_ARGS = {'extend_existing':True,
'schema':'eis'
}
class CommonModel(object):
def to_dict(self): # Elixir like
values = {}
for column in self.__table__.columns:
values[column.name] = getattr(self, column.name)
return values
def from_dict(self, values):
for column in self.__table__.columns:
if column.name in values:
setattr(self, column.name, values[column.name])
def as_timezone(self, fieldname):
date_ = getattr(self, fieldname)
return date_ and as_timezone(date_) or None
class DefaultModel(CommonModel):
id = Column(Integer, primary_key=True)
@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)
class Anggaran(NamaModel, EisBase):
__tablename__ = 'sipkd_anggaran'
tahun = Column(String(4))
departemen_kd = Column(String(16))
departemen_nm = Column(String(255))
jumlah = Column(BigInteger)
murni = Column(BigInteger)
perubahan = Column(BigInteger)
level_id = Column(Integer)
__table_args__ = (UniqueConstraint('tahun', 'kode', 'departemen_kd'),
TABLE_ARGS)
class ArPayment(NamaModel, EisBase):
__tablename__ = 'sipkd_ar_payment'
tanggal = Column(DateTime(timezone=False))
departemen_kd = Column(String(16))
departemen_nm = Column(String(255))
rekening_kd = Column(String(16))
rekening_nm = Column(String(255))
jumlah = Column(BigInteger)
level_id = Column(Integer)
__table_args__ = (UniqueConstraint('kode'),
TABLE_ARGS)
class ApPayment(NamaModel, EisBase):
__tablename__ = 'sipkd_ap_payment'
tanggal = Column(DateTime(timezone=False))
tanggal = Column(DateTime(timezone=False))
departemen_kd = Column(String(16))
departemen_nm = Column(String(255))
rekening_kd = Column(String(16))
rekening_nm = Column(String(255))
jumlah = Column(BigInteger)
level_id = Column(Integer)
__table_args__ = (UniqueConstraint('kode'),
TABLE_ARGS)
class ByPayment(NamaModel, EisBase):
__tablename__ = 'sipkd_pb_payment'
tanggal = Column(DateTime(timezone=False))
tanggal = Column(DateTime(timezone=False))
departemen_kd = Column(String(16))
departemen_nm = Column(String(255))
rekening_kd = Column(String(16))
rekening_nm = Column(String(255))
jumlah = Column(BigInteger)
level_id = Column(Integer)
__table_args__ = (UniqueConstraint('kode'),
TABLE_ARGS)
EisBase.metadata.create_all(engine)
\ No newline at end of file \ No newline at end of file
from sipkd_models import Anggaran, Realisasi, Base, DBSession
from eis_models import (Anggaran as EisAnggaran, ApPayment as EisApPayment,
ArPayment as EisArPayment, ByPayment as EisByPayment,
EisBase, EisDBSession)
from conf import sipkd_url
from sqlalchemy import create_engine
from datetime import datetime
from datetime import date
engine = create_engine(sipkd_url)
DBSession.configure(bind=engine)
Base.metadata.bind = engine
Base.metadata.create_all(engine)
now = datetime.now()
tanggal = now.date()
tahun = now.strftime('%Y')
def import_anggaran():
query = DBSession.query(Anggaran).filter_by(tahun=tahun)
for row in query.all():
anggaran = EisDBSession.query(EisAnggaran).\
filter_by(tahun=row.tahun,
kode=row.kd_rekening,
departemen_kd = row.kd_opd,
).first()
if not anggaran:
anggaran = EisAnggaran()
anggaran.tahun = row.tahun
anggaran.kode = row.kd_rekening
anggaran.departemen_kd = row.kd_opd
anggaran.level_id = row.kd_rekening.count('.')
anggaran.nama = row.nm_rekening
anggaran.departemen_nm = row.nm_opd
anggaran.murni = row.ang_murni
anggaran.perubahan = row.ang_perubahan
EisDBSession.add(anggaran)
EisDBSession.flush()
EisDBSession.commit()
def import_ar(all=False):
query = DBSession.query(Realisasi)
if not all:
query = query.filter_by(tanggal=tanggal)
for row in query.filter(Realisasi.kd_rekening.like('4%')).all():
eis = EisDBSession.query(ArPayment).\
filter_by(tahun = row.tahun,
rekening_kd = row.kd_rekening,
departemen_kd = row.kd_opd,
tanggal = tanggal,
).first()
if not eis:
eis = EisArPayment()
eis.tahun = row.tahun
eis.kode = row.kd_rekening
eis.departemen_kd = row.kd_opd
eis.tanggal = tanggal
eis.level_id = row.kd_rekening.count('.')
eis.nama = row.nm_rekening
eis.departemen_nm = row.nm_opd
eis.jumlah = row.realisai
EisDBSession.add(anggaran)
EisDBSession.flush()
EisDBSession.commit()
def import_ap(all=False):
query = DBSession.query(Realisasi)
if not all:
query = query.filter_by(tanggal=tanggal)
for row in query.filter(Realisasi.kd_rekening.like('5%')).all():
eis = EisDBSession.query(ArPayment).\
filter_by(tahun = row.tahun,
rekening_kd = row.kd_rekening,
departemen_kd = row.kd_opd,
tanggal = tanggal,
).first()
if not eis:
eis = EisApPayment()
eis.tahun = row.tahun
eis.kode = row.kd_rekening
eis.departemen_kd = row.kd_opd
eis.tanggal = tanggal
eis.level_id = row.kd_rekening.count('.')
eis.nama = row.nm_rekening
eis.departemen_nm = row.nm_opd
eis.jumlah = row.realisai
EisDBSession.add(eis)
EisDBSession.flush()
EisDBSession.commit()
def import_by(all=False):
query = DBSession.query(Realisasi)
if not all:
query = query.filter_by(tanggal=tanggal)
for row in query.filter(Realisasi.kd_rekening.like('6%')).all():
eis = EisDBSession.query(ArPayment).\
filter_by(tahun = row.tahun,
rekening_kd = row.kd_rekening,
departemen_kd = row.kd_opd,
tanggal = tanggal,
).first()
if not eis:
eis = EisByPayment()
eis.tahun = row.tahun
eis.kode = row.kd_rekening
eis.departemen_kd = row.kd_opd
eis.tanggal = tanggal
eis.level_id = row.kd_rekening.count('.')
eis.nama = row.nm_rekening
eis.departemen_nm = row.nm_opd
eis.jumlah = row.realisai
EisDBSession.add(eis)
EisDBSession.flush()
EisDBSession.commit()
import_anggaran()
import_ap()
import_ar()
\ No newline at end of file \ No newline at end of file
from datetime import datetime
from sqlalchemy import (
Column,
Integer,
Text,
DateTime,
ForeignKey,
UniqueConstraint,
String,
SmallInteger,
BigInteger
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm import (
scoped_session,
sessionmaker,
relationship,
backref
)
Base = declarative_base()
DBSession = scoped_session(sessionmaker())
class Anggaran(Base):
__tablename__ = "Tabel_Anggaran"
tahun = Column(String(4), primary_key=True)
kd_opd = Column(String(32), primary_key=True)
nm_opd = Column(String(254))
kd_rekening = Column(String(32), primary_key=True)
nm_rekening = Column(String(254))
ang_murni = Column(BigInteger)
ang_perubahan = Column(BigInteger)
class Realisasi(Base):
__tablename__ = "Tabel_Realisasi"
tahun = Column(String(4), primary_key=True)
kd_opd = Column(String(32), primary_key=True)
nm_opd = Column(String(254))
kd_rekening = Column(String(32), primary_key=True)
nm_rekening = Column(String(254))
tanggal = Column(DateTime(timezone=False), primary_key=True)
realisasi = Column(BigInteger)
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!