55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
from pathlib import Path
|
|
import json, os, socket,fdb
|
|
|
|
def get_dropbox_path() -> Path:
|
|
r"""
|
|
Return the absolute Dropbox folder path.
|
|
Works across your computers (U:, Z:, etc.).
|
|
Always reads from LOCALAPPDATA\Dropbox\info.json.
|
|
Falls back to searching for a folder literally named 'Dropbox'.
|
|
"""
|
|
info_path = Path(os.environ["LOCALAPPDATA"]) / "Dropbox" / "info.json"
|
|
if info_path.exists():
|
|
try:
|
|
with open(info_path, encoding="utf-8") as f:
|
|
info = json.load(f)
|
|
return Path(info["personal"]["path"])
|
|
except Exception as e:
|
|
print(f"⚠️ Could not read Dropbox info.json: {e}")
|
|
|
|
# fallback if JSON missing
|
|
for drive in "CDEFGHIJKLMNOPQRSTUVWXYZ":
|
|
candidate = Path(f"{drive}:\\Dropbox")
|
|
if candidate.exists():
|
|
return candidate
|
|
|
|
raise FileNotFoundError("Dropbox folder not found on any drive.")
|
|
|
|
|
|
|
|
|
|
def get_medicus_connection():
|
|
"""
|
|
Connect to Firebird 'medicus.fdb' depending on computer name.
|
|
Returns fdb.Connection or raises RuntimeError if unknown or connection fails.
|
|
"""
|
|
computer_name = socket.gethostname().upper()
|
|
try:
|
|
if computer_name == "Z230":
|
|
print("Computer name is Z230")
|
|
return fdb.connect(dsn=r"localhost:c:\medicus 3\data\medicus.fdb", user="SYSDBA", password="masterkey", charset="win1250")
|
|
elif computer_name == "LEKAR":
|
|
print("Computer name is SESTRALEKAR")
|
|
return fdb.connect(dsn=r"localhost:m:\medicus\data\medicus.fdb", user="SYSDBA", password="masterkey", charset="win1250")
|
|
elif computer_name in ("SESTRA", "POHODA"):
|
|
print("Computer name is SESTRA or POHODA")
|
|
return fdb.connect(dsn=r"192.168.1.40:m:\medicus\data\medicus.fdb", user="SYSDBA", password="masterkey", charset="win1250")
|
|
else:
|
|
raise RuntimeError(f"❌ Unknown computer name: {computer_name}")
|
|
|
|
except Exception as e:
|
|
print(f"⚠️ Error connecting to Medicus on {computer_name}: {e}")
|
|
raise
|
|
|
|
|