set_conf.py
1.41 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
49
50
51
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}"')