import sys from configparser import ConfigParser from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from opensipkd.aset.pemda.models.aset import AsetKib BRG_JASA_POLA = [ 'barang dan jasa', 'barang & jasa', 'brg jasa', 'brg & jasa'] PEMBELIAN_LABEL = 'Pembelian' BRG_JASA_LABEL = 'Barang & Jasa' HIBAH_LABEL = 'Hibah' conf_file = sys.argv[1] conf = ConfigParser() conf.read(conf_file) db_url = conf.get('main', 'db_url') engine = create_engine(db_url) factory = sessionmaker(bind=engine) db_session = factory() base_q = db_session.query(AsetKib).filter(AsetKib.cara_perolehan.__eq__(None)) base_q = base_q.order_by(AsetKib.id) offset = -1 while True: offset += 1 q = base_q.offset(offset) row = q.first() if not row: break print(f'ID {row.id} {row.asal_usul}') asal_usul = row.asal_usul.lower() found = False if asal_usul.find('hibah') > -1: row.cara_perolehan = HIBAH_LABEL found = True elif asal_usul.find('beli') > -1: row.cara_perolehan = PEMBELIAN_LABEL found = True else: for pola in BRG_JASA_POLA: if asal_usul.find(pola) < 0: continue row.cara_perolehan = BRG_JASA_LABEL found = True break if not found: raise Exception('Tidak ditemukan polanya, silakan konsultasi.') db_session.add(row) db_session.flush() db_session.commit()