from database import Database from state_manager import StateManager from states import * import shared import sys if __name__ == "__main__": # allow database input if len(sys.argv) == 1: db_file = "db/database.db" else: db_file = sys.argv[1] shared.db = Database(db_file) # initialize state manager and insert all used states sm = StateManager() sm.add_state(LoginState(), "login") sm.add_state(PostState(), "post") sm.add_state(MenuState(), "menu") sm.add_state(QuestionState(), "question") sm.add_state(SearchState(), "search") sm.add_state(AnswerState(), "answer") sm.add_state(EditState(), "edit") sm.start("login")
# noinspection PyBroadException try: if args.action == action_get: if args.state_id: state = state_manager.get_state(args.state_id) else: state = state_manager.get_latest_state(args.file_path) context = json.loads(args.context) if args.context else None task_manager = TaskManager() tasks = task_manager.get_suggested_tasks(state, context) print(json.dumps(tasks)) task_manager.close_db() elif args.action == action_execute: task_manager = TaskManager() new_state = task_manager.execute_task(args.task_id) state_manager.add_state(new_state) print( json.dumps(state_manager.jsonify(new_state), indent=(3 if args.dev else None))) task_manager.close_db() except Exception: if args.dev: raise else: print(json.dumps({"exception": traceback.format_exc()})) finally: state_manager.close_db()
action_load = "load" load_parser = subparsers.add_parser(action_load) load_parser.add_argument( "state_id", help="The id of the state to be loaded", type=int ) args = parser.parse_args() manager = StateManager() # noinspection PyBroadException try: if args.action == action_initialize: state = manager.get_latest_state(args.file_path, args.sheet_name) if state is None: state = manager.create_empty_state(args.file_path, args.sheet_name) manager.add_state(state) assert state is not None manager.print_state(state) elif args.action == action_load: state = manager.get_state(args.state_id) manager.set_latest(state) manager.print_state(state) except Exception as e: print(json.dumps({"exception": traceback.format_exc()})) finally: manager.close_db()