import os, sys, traceback SITE_NAME = os.environ.get("SITE_NAME", "hisham-cmd-ofoqerp.hf.space") ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "admin") bench_path = "/home/frappe/frappe-bench" site_path = f"{bench_path}/sites/{SITE_NAME}" # Check prerequisites if not os.path.exists(f"{site_path}/site_config.json"): print(f"SKIP: site_config.json not found at {site_path}") sys.exit(0) bench_env = f"{bench_path}/env" python_versions = ["3.12", "3.11", "3.10", "3.9"] for ver in python_versions: p = f"{bench_env}/lib/python{ver}/site-packages" if os.path.exists(p) and p not in sys.path: sys.path.insert(0, p) sys.path.insert(0, f"{bench_path}/apps/frappe") sys.path.insert(0, f"{bench_path}/apps/erpnext") try: import frappe print(f"Frappe {frappe.__version__ if hasattr(frappe,'__version__') else ''} imported OK") except ImportError as e: print(f"FAIL: cannot import frappe: {e}") sys.exit(1) try: frappe.init(site=SITE_NAME, sites_path=f"{bench_path}/sites") print(f"frappe.init('{SITE_NAME}') OK") frappe.connect() print("frappe.connect() OK") except Exception as e: print(f"FAIL: frappe init/connect error: {e}") traceback.print_exc() sys.exit(1) try: frappe.utils.password.update_password("Administrator", ADMIN_PASSWORD) frappe.db.commit() print(f"Password updated for Administrator -> {ADMIN_PASSWORD}") except Exception as e: print(f"FAIL: password update error: {e}") traceback.print_exc() sys.exit(1) try: from frappe.core.doctype.user.user import generate_keys keys = generate_keys("Administrator") frappe.db.commit() print(f"API_KEY={keys['api_key']}") print(f"API_SECRET={keys['api_secret']}") except Exception as e: print(f"FAIL: API key generation error: {e}") frappe.destroy() print("Done.")