From 8f610a8def97f4eeb8299508e168afcf313197f7 Mon Sep 17 00:00:00 2001 From: Alessandro De Maria Date: Thu, 25 Feb 2021 16:21:25 +0000 Subject: [PATCH 1/2] 6270: add --replace flag --- web/setup.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/web/setup.py b/web/setup.py index 20ce6563b3..86e61fc77b 100644 --- a/web/setup.py +++ b/web/setup.py @@ -397,6 +397,51 @@ def setup_db(): if os.name != 'nt': os.chmod(config.SQLITE_PATH, 0o600) +def clear_servers(): + """Clear groups and servers configurations. + + Args: + args (ArgParser): The parsed command line options + """ + + # What user? + load_user = args.user if args.user is not None else config.DESKTOP_USER + + # And the sqlite path + if args.sqlite_path is not None: + config.SQLITE_PATH = args.sqlite_path + + app = create_app(config.APP_NAME + '-cli') + with app.app_context(): + user = User.query.filter_by(email=load_user).first() + + if user is None: + print("The specified user ID (%s) could not be found." % + load_user) + sys.exit(1) + + user_id = user.id + + # Remove all servers + servers = Server.query.filter_by(user_id=user_id) + for server in servers: + db.session.delete(server) + + # Remove all groups + groups = ServerGroup.query.filter_by(user_id=user_id) + for group in groups: + db.session.delete(group) + servers = Server.query.filter_by(user_id=user_id) + + for server in servers: + db.session.delete(server) + + try: + db.session.commit() + except Exception as e: + print("Error clearing server configuration") + + if __name__ == '__main__': # Configuration settings @@ -415,7 +460,10 @@ if __name__ == '__main__': imp_group = parser.add_argument_group('Load server config') imp_group.add_argument('--load-servers', metavar="INPUT_FILE", help='Load servers into the DB', required=False) + imp_group.add_argument('--replace', dest='replace', action='store_true', + help='replace server configurations', required=False) + imp_group.set_defaults(replace=False) # Common args parser.add_argument('--sqlite-path', metavar="PATH", help='Dump/load with the specified pgAdmin config DB' @@ -442,6 +490,8 @@ if __name__ == '__main__': print(str(e)) elif args.load_servers is not None: try: + if args.replace: + clear_servers() load_servers(args) except Exception as e: print(str(e)) -- 2.24.3 (Apple Git-128)