50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
import socket
|
|
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class MedicusConfig:
|
|
server: str
|
|
path: str
|
|
|
|
@property
|
|
def dsn(self) -> str:
|
|
return f"{self.server}:{self.path}"
|
|
|
|
|
|
def get_medicus_config() -> MedicusConfig:
|
|
"""
|
|
Vrátí konfiguraci připojení k databázi Medicus podle jména počítače.
|
|
|
|
Logika:
|
|
- LEKAR → localhost, M:\\Medicus\\Data\\Medicus.fdb (ostrý lokální)
|
|
- SESTRA → 192.168.1.10, M:\\Medicus\\Data\\Medicus.fdb (ostrý přes síť)
|
|
- LENOVO → 192.168.1.10, M:\\Medicus\\Data\\Medicus.fdb (testovací přes síť)
|
|
- ostatní → localhost, C:\\Medicus 3\\Data\\Medicus.fdb (testovací lokální)
|
|
|
|
Vrací:
|
|
MedicusConfig s atributy server, path a vlastností dsn ("server:path").
|
|
|
|
Příklad použití:
|
|
from Knihovny.najdi_medicus import get_medicus_config
|
|
|
|
cfg = get_medicus_config()
|
|
con = fdb.connect(dsn=cfg.dsn, user="SYSDBA", password="masterkey")
|
|
"""
|
|
hostname = socket.gethostname().upper()
|
|
|
|
if hostname == "LEKAR":
|
|
return MedicusConfig(server="localhost", path=r"M:\Medicus\Data\Medicus.fdb")
|
|
elif hostname in ("SESTRA", "LENOVO"):
|
|
return MedicusConfig(server="192.168.1.10", path=r"M:\Medicus\Data\Medicus.fdb")
|
|
else:
|
|
return MedicusConfig(server="localhost", path=r"C:\Medicus 3\Data\Medicus.fdb")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
cfg = get_medicus_config()
|
|
print(f"Hostname : {socket.gethostname()}")
|
|
print(f"Server : {cfg.server}")
|
|
print(f"Path : {cfg.path}")
|
|
print(f"DSN : {cfg.dsn}")
|