import sys from datetime import ( date, datetime, ) from argparse import ArgumentParser from configparser import ConfigParser from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from zope.sqlalchemy import register import transaction from pbb_parser import Parser default_tgl = date.today().strftime('%d-%m-%Y') help_tgl = f'default {default_tgl}' pars = ArgumentParser() pars.add_argument('conf') pars.add_argument('--tgl-awal', default=default_tgl, help=help_tgl) pars.add_argument('--tgl-akhir', default=default_tgl, help=help_tgl) pars.add_argument('--reversal', action='store_true') option = pars.parse_args(sys.argv[1:]) conf = ConfigParser() conf.read(option.conf) settings = conf['app:main'] engine = create_engine(settings['sqlalchemy.url']) pbb_engine = create_engine(settings['simpbb.url']) factory = sessionmaker(bind=engine) pbb_factory = sessionmaker(bind=pbb_engine) db_session = factory() pbb_session = pbb_factory() register(db_session) tgl_awal = datetime.strptime(option.tgl_awal, '%d-%m-%Y') tgl_awal = tgl_awal.date() tgl_akhir = datetime.strptime(option.tgl_akhir, '%d-%m-%Y') tgl_akhir = tgl_akhir.date() p = Parser(db_session, pbb_session, tgl_awal, tgl_akhir) with transaction.manager: if option.reversal: p.reversal() else: p.payment()