144 lines
4.9 KiB
Python
144 lines
4.9 KiB
Python
import sys, os, shutil
|
|
import main
|
|
import config as cfg
|
|
|
|
"""
|
|
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, owner_name, default_zone_name, default_location_name, email=""):
|
|
|
|
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={owner_name}\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")
|
|
|
|
cfg.write_new_site(site_name)
|
|
|
|
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":
|
|
print(func_name, argument)
|
|
main.delete_site(sys.argv[3])
|
|
shutil.rmtree(f"sites/{sys.argv[3]}")
|
|
cfg.delete_site(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) |