update-sppt.py
1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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()