order-processing/create_new_database.py

58 lines
2.2 KiB
Python

### create new initial database
from schema import User, State, Production_Line, Order,Action, db, orm
import datetime
def get_state () :
state = State.get ()
if not state :
state = State \
( imos_export_dir = "?"
, pgiq_import_dir = "?"
, last_directory_scan = datetime.datetime.fromtimestamp (0)
)
return state
# end def get_state
if __name__ == "__main__" :
import argparse
parser = argparse.ArgumentParser ()
parser.add_argument ("database", type = str)
parser.add_argument ("-u", "--user", type = str)
parser.add_argument ("-p", "--password", type = str)
parser.add_argument ("--check", action = "store_true")
parser.add_argument ("-i", "--imos_dir", type = str)
parser.add_argument ("-P", "--pgiq_dir", type = str)
parser.add_argument ("-l", "--line", type = str)
cmd = parser.parse_args ()
db.bind (provider = "sqlite", filename = cmd.database, create_db = True)
db.generate_mapping (create_tables = True)
with orm.db_session :
breakpoint ()
if cmd.user :
u = User.get (username = cmd.user)
if not u :
u = User (username = cmd.user, password = cmd.password)
print (f"Add new user {cmd.user} to the database")
else :
if cmd.check :
print (f"Check password for user {cmd.user}: "
f"{u.check_password (cmd.password)}"
)
else:
print (f"Set new password for user {cmd.user}")
u.change_password (cmd.password)
state = get_state ()
if cmd.imos_dir :
state.imos_export_dir = cmd.imos_dir
if cmd.pgiq_dir :
state.pgiq_import_dir = cmd.pgiq_dir
print (state)
if cmd.line :
short, name = cmd.line.split (":")
line = Production_Line.get (short = short)
if not line :
line = Production_Line (short = short, name = name)
else :
line.name = name
print (line)