Files
medicus/DatovaSchranka.py
2025-10-26 18:47:00 +01:00

106 lines
2.9 KiB
Python

# Přihlašovací údaje
username = 'eupo5s'
password = 'Michalka25+'
schrankaid='bk7e6j2'
from zeep import Client
from zeep.wsse.username import UsernameToken
import time
import os
import base64
# Přihlašovací údaje
USERNAME = 'eupo5s'
PASSWORD = 'Michalka25+'
WSDL_URL = 'https://..../ds.wsdl' # upravit dle prostředí
# Inicializace klienta
client = Client(wsdl=WSDL_URL, wsse=UsernameToken(USERNAME, PASSWORD))
# Kontrola přihlášení
try:
owner_info = client.service.GetOwnerInfoFromLogin()
except Exception as e:
print(f"Chyba přihlášení: {e}")
exit(1)
# Zobrazení základních údajů o přihlášeném účtu
print("Přihlášen jako:", owner_info.dbID, owner_info.firmName)
# Vytvoření adresáře pro testovací soubory
out_dir = os.path.abspath('test_isds_py')
os.makedirs(out_dir, exist_ok=True)
# Vytvoření a odeslání testovacích zpráv
filenames = []
for i, text in enumerate(["První testovací soubor", "Druhý testovací soubor"], 1):
fn = os.path.join(out_dir, f"TESTISDS_{i}.txt")
with open(fn, 'w', encoding='utf-8') as f:
f.write(text)
filenames.append(fn)
# Nahraj přílohy
files_struct = []
for fn in filenames:
with open(fn, "rb") as f:
data = base64.b64encode(f.read()).decode('ascii')
files_struct.append({
'dmFileDescr': os.path.basename(fn),
'dmMimeType': 'text/plain',
'dmEncodedContent': data,
})
# Vytvoření a odeslání zprávy (parametry uprav podle vlastního scénáře!)
msg_id = client.service.CreateMessage(
senderDBID=None,
subject="Testovaci zasilka z Pythonu",
isUrgent=False,
senderOrgUnitCode=None,
# níže: příjemce
dbIDRecipient="231",
recipientFirmName="Nase org jednotka",
recipientOrgUnitNum=-1,
recipientOrgUnitName="ncj. 589",
receiverPersonCode=None,
toHands="K rukam p.Novaka",
deepAttachments=files_struct
)
print("MessageID:", msg_id)
# Chvíle čekání
time.sleep(5)
# Stažení přijatých zpráv v intervalu
records = client.service.GetListOfReceivedMessages(
startTime="2009-11-01T00:00:00",
endTime="2010-10-01T00:00:00",
recNo=0,
maxRec=100,
recordType=1023,
customFilter=None
)
for rec in records.dmRecord:
print(f"ID zasilky: {rec.dmID}, odesilatel: {rec.dmSender}")
received_id = rec.dmID
break
# Stažení jedné zprávy
msg = client.service.MessageDownload(received_id)
print("Stažená zpráva:", msg.dmDm.dmID)
# Uložení souborů
for file in msg.dmDm.dmFiles.dmFile:
content = base64.b64decode(file.dmEncodedContent)
path = os.path.join(out_dir, file.dmFileDescr)
with open(path, 'wb') as f:
f.write(content)
print("Uloženo:", path)
# Označení jako stáhnuto
client.service.MarkMessageAsDownloaded(received_id)
print("Označeno jako přečtené")
# Můžeme pokračovat implementací dalších funkcí: GetDeliveryInfo, SignedMessageDownloadToFile, GetListOfSentMessages, FindDataBox, CheckDataBox…