106 lines
2.9 KiB
Python
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…
|