set_conf.py 1.41 KB
import sys
from argparse import ArgumentParser
import transaction
from pyramid.paster import get_appsettings
from ..models import (
    get_engine,
    get_session_factory,
    get_tm_session,
    )
from ..models.conf import Conf


def parse_args(argv):
    parser = ArgumentParser()
    parser.add_argument('conf', help='File konfigurasi')
    parser.add_argument('--nama')
    parser.add_argument('--nilai')
    return parser.parse_args(argv)


def out(s):
    print(s)
    sys.exit()


def main(argv=sys.argv[1:]):
    args = parse_args(argv)
    settings = get_appsettings(args.conf)
    engine = get_engine(settings)
    session_factory = get_session_factory(engine)
    with transaction.manager:
        db_session = get_tm_session(session_factory, transaction.manager)
        if not args.nama:
            q = db_session.query(Conf).order_by(Conf.nama)
            for row in q:
                print(f'"{row.nama}" = "{row.nilai}"')
            sys.exit()
        q = db_session.query(Conf).filter_by(nama=args.nama)
        row = q.first()
        if not row:
            out(f'Tidak ditemukan')
        if not args.nilai:
            out(f'"{args.nama}" = "{row.nilai}"')
        if row.nilai == args.nilai:
            out(f'Masih sama')
        old = row.nilai
        row.nilai = args.nilai
        db_session.add(row)
    print(f'Konfigurasi telah diubah')
    print(f'dari    "{old}"')
    print(f'menjadi "{args.nilai}"')