update-sppt.py 1.47 KB
import sys
from datetime import datetime
from configparser import ConfigParser
from argparse import ArgumentParser
import transaction
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from zope.sqlalchemy import register
import sismiop.services.base


def get_option(argv):
    pars = ArgumentParser()
    pars.add_argument('conf')
    pars.add_argument('--invoice-id')
    pars.add_argument('--values', required=True)
    return pars.parse_args(argv)


def main(argv=sys.argv):
    option = get_option(argv[1:])
    invoice_id = option.invoice_id
    conf_file = option.conf
    conf = ConfigParser()
    conf.read(conf_file)
    module_name = conf.get('main', 'module')
    module = __import__('sismiop.services.' + module_name)
    sub_module = getattr(module.services, module_name)
    Inquiry = sub_module.Inquiry
    db_url = conf.get('main', 'db_url')
    engine = create_engine(db_url)
    engine.echo = True
    session_factory = sessionmaker(bind=engine)
    DBSession = sismiop.services.base.DBSession = session_factory()
    register(sismiop.services.base.DBSession)
    inq = Inquiry(invoice_id)
    if not inq.invoice:
        print('Invoice ID {} tidak ada.'.format(invoice_id))
        return
    with transaction.manager:
        for field_value in option.values.split(','):
            field, value = field_value.split(':')
            print('{} = {}'.format(field, value))
            setattr(inq.invoice, field, value)
        DBSession.add(inq.invoice)


main()