pantry-track/manage.py

134 lines
4.7 KiB
Python

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_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)
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)