import sys, os, shutil import main """ Manage.py is where the databases and configuration is set up. Its a CLI for quick serving the databases necessary for MyPantry App. """ def rename_unique_sql(site_name): files = os.walk(f"sites/{site_name}/sql/unique") sql_files = [] for file in files: sql_files = file[2] for file_name in sql_files: words = None with open(f"sites/{site_name}/sql/unique/{file_name}", "r") as file: words = file.read() words = words.replace("%sitename%", site_name) with open(f"sites/{site_name}/sql/unique/{file_name}", "w") as file: file.write(words) def rename_drop_sql(site_name): files = os.walk(f"sites/{site_name}/sql/drop") sql_files = [] for file in files: sql_files = file[2] for file_name in sql_files: words = None with open(f"sites/{site_name}/sql/drop/{file_name}", "r") as file: words = file.read() words = words.replace("%sitename%", site_name) with open(f"sites/{site_name}/sql/drop/{file_name}", "w") as file: file.write(words) def rename_create_sql(site_name): files = os.walk(f"sites/{site_name}/sql/create") sql_files = [] for file in files: sql_files = file[2] for file_name in sql_files: words = None with open(f"sites/{site_name}/sql/create/{file_name}", "r") as file: words = file.read() words = words.replace("%sitename%", site_name) with open(f"sites/{site_name}/sql/create/{file_name}", "w") as file: file.write(words) def create(): site_name = input("Site Name: ") site_owner = input("Site Owner: ") email = input("Contact Email: ") default_zone_name = input("Set Default Zone Name (default): ").strip() if default_zone_name == "": default_zone_name = "default" print(f"Now you will set the default location that you wish for things to be received into (primary location) and used from (auto-issue).") default_location_name = input("Set Default Location (all): ").strip() if default_location_name == "": default_location_name = "all" if not os.path.exists(f"sites/{site_name}"): print(f"Creating {site_name} site...") os.mkdir(f"sites/{site_name}") print(f"Creating sql tables files...") shutil.copytree(f"sites/default/sql", f"sites/{site_name}/sql") rename_create_sql(site_name) rename_drop_sql(site_name) rename_unique_sql(site_name) with open(f"sites/{site_name}/site.ini", "w+") as config: config.write(f"[site]\n") config.write(f"site_name={site_name}\n") config.write(f"site_owner={site_owner}\n") config.write(f"email={email}\n") config.write(f"\n") config.write(f"[defaults]\n") config.write(f"default_zone={default_zone_name}\n") config.write(f"default_primary_location={default_location_name}\n") config.write(f"default_auto_issue_location={default_location_name}\n") print(f"Site {site_name} config created!") print(f"Site {site_name} created!") if __name__ == "__main__": if len(sys.argv) > 1: func_name = sys.argv[1] argument = sys.argv[2] if func_name == "create" and argument == "site": create() if func_name == "propagate" and argument == "site": main.create_site(sys.argv[3]) if func_name == "delete" and argument == "site": main.delete_site(sys.argv[3]) shutil.rmtree(f"sites/{sys.argv[3]}") if func_name == "item": if argument == "add": barcode = input("barcode: ") name = input("name: ") qty = float(input("qty: ")) main.add_food_item(sys.argv[3], barcode, name, qty, payload=main.payload_food_item) if argument == "update_primary": barcode = input("barcode: ") location = input(f"New Zone/Location (default@all): ") main.update_item_primary(sys.argv[3], barcode, location) if argument == "transact": barcode = input("barcode: ") qty = float(input("qty: ")) location = str(input("TO: ")).strip() if location == "": location = None main.add_transaction(sys.argv[3], barcode, qty, 1, description="manual", location=location) if argument == "transfer": barcode = input("barcode: ") qty = float(input("qty: ")) from_location = str(input("From: ")).strip() to_location = str(input("To: ")).strip() if func_name == "location": if argument == "add": location_name = str(input(f"New Location Name: ")).replace(" ", "_") zone_id = int(input(f"Zone ID: ")) main.add_location(sys.argv[3], location_name, zone_id) if func_name == "zone": if argument == "add": zone_name = str(input(f"New Zone Name: ")).replace(" ", "_") main.add_zone(sys.argv[3], zone_name)