109 lines
4.3 KiB
Python
109 lines
4.3 KiB
Python
"""test_import_3files.py – jednorázový test: 3 soubory jednoho pacienta → 1 dekurs s klikacími odkazy
|
||
Testuje opravenou RTF logiku (cs32, Přílohy: inline, poradi++)
|
||
Spustit na Windows.
|
||
"""
|
||
import datetime
|
||
import os
|
||
import fdb
|
||
import funkce
|
||
import funkce_ext
|
||
|
||
CESTA = r'u:\\'
|
||
IDPAC = 9742 # Buzalka Vladimír, RC 7309208104
|
||
|
||
SOUBORY = [
|
||
{
|
||
'souborname': '7309208104 2026-03-18 Buzalka, Vladimír [vyšetření] [ahoj Claude copy1].pdf',
|
||
'prvnizavorka': 'vyšetření',
|
||
'druhazavorka': 'ahoj Claude copy1',
|
||
'datum': datetime.date(2026, 3, 18),
|
||
},
|
||
{
|
||
'souborname': '7309208104 2026-03-18 Buzalka, Vladimír [vyšetření] [ahoj Claude copy2].pdf',
|
||
'prvnizavorka': 'vyšetření',
|
||
'druhazavorka': 'ahoj Claude copy2',
|
||
'datum': datetime.date(2026, 3, 18),
|
||
},
|
||
{
|
||
'souborname': '7309208104 2026-03-18 Buzalka, Vladimír [vyšetření] [ahoj Claude].pdf',
|
||
'prvnizavorka': 'vyšetření',
|
||
'druhazavorka': 'ahoj Claude',
|
||
'datum': datetime.date(2026, 3, 18),
|
||
},
|
||
]
|
||
|
||
# ── Připojení ─────────────────────────────────────────────────────────────────
|
||
conn = fdb.connect(
|
||
dsn=r'localhost:c:\medicus 3\data\medicus.fdb',
|
||
user='SYSDBA', password='masterkey', charset='WIN1250'
|
||
)
|
||
|
||
# ── Krok 1: vložit každý soubor do ext DB ─────────────────────────────────────
|
||
bookmark = ''
|
||
bookmarks = ''
|
||
cislo = 9
|
||
poradi = 0
|
||
|
||
for s in SOUBORY:
|
||
cesta_souboru = os.path.join(CESTA, s['souborname'])
|
||
datumsouboru = datetime.datetime.fromtimestamp(os.path.getmtime(cesta_souboru))
|
||
|
||
print(f"\n>>> Zpracovávám: {s['souborname']}")
|
||
fileid = funkce_ext.zapis_file_ext(
|
||
vstupconnection = conn,
|
||
idpac = IDPAC,
|
||
cesta = CESTA,
|
||
souborname = s['souborname'],
|
||
prvnizavorka = s['prvnizavorka'],
|
||
soubordate = s['datum'],
|
||
souborfiledate = datumsouboru,
|
||
poznamka = s['druhazavorka'],
|
||
)
|
||
print(f" → FILES.ID = {fileid}")
|
||
|
||
# {\info{\bookmarks ...}} sekce
|
||
filenameforbookmark = s['datum'].strftime('%Y-%m-%d') + ' ' + s['prvnizavorka'] + ': ' + s['druhazavorka']
|
||
bookmark += '"' + filenameforbookmark + '","Files:' + str(fileid) + '",' + str(cislo) + ';'
|
||
cislo += 7
|
||
|
||
# tělo RTF – klikatelné záložky (cs32, všechny stejný formát)
|
||
bookmarks += (r'\pard\s10{\*\bkmkstart ' + str(poradi) + r'}'
|
||
r'\plain\cs32\f0\ul\fs20\cf1 ' + filenameforbookmark +
|
||
r'{\*\bkmkend ' + str(poradi) + r'}\par')
|
||
poradi += 1
|
||
|
||
bookmark = bookmark[:-1] # odstranit poslední ;
|
||
|
||
# ── Krok 2: sestavit RTF ──────────────────────────────────────────────────────
|
||
rtf = r"""{\rtf1\ansi\ansicpg1250\uc1\deff0\deflang1029{\info{\bookmarks BOOKMARKNAMES}}{\fonttbl{\f0\fnil\fcharset238 Arial;}{\f5\fnil\fcharset238 Symbol;}}
|
||
{\colortbl ;\red0\green0\blue255;\red0\green128\blue0;\red0\green0\blue0;}
|
||
{\stylesheet{\s10\fi0\li0\ql\ri0\sb0\sa0 Vlevo;}{\*\cs15\f0\fs20 Norm\'e1ln\'ed;}{\*\cs20\f0\i\fs20 Z\'e1hlav\'ed;}{\*\cs32\f0\ul\fs20\cf1 Odkaz;}}
|
||
\uc1\pard\s10\plain\cs20\f0\i\fs20 Vlo\'9een\'e9 p\'f8\'edlohy:\par
|
||
BOOKMARKSTEXT
|
||
\pard\s10\plain\cs15\f0\fs20 \par
|
||
}"""
|
||
|
||
rtf = rtf.replace('BOOKMARKNAMES', bookmark)
|
||
rtf = rtf.replace('BOOKMARKSTEXT', bookmarks)
|
||
|
||
print('\n=== Výsledný RTF ===')
|
||
print(rtf)
|
||
|
||
# ── Krok 3: zapsat dekurs ─────────────────────────────────────────────────────
|
||
dekursid = funkce.get_dekurs_id(conn)
|
||
datumzapisu = datetime.datetime.now().date()
|
||
caszapisu = datetime.datetime.now().time()
|
||
|
||
cur = conn.cursor()
|
||
cur.execute(
|
||
"INSERT INTO DEKURS (id, iduzi, idprac, idodd, idpac, datum, cas, dekurs)"
|
||
" VALUES (?,?,?,?,?,?,?,?)",
|
||
(dekursid, 6, 2, 2, IDPAC, datumzapisu, caszapisu, rtf)
|
||
)
|
||
conn.commit()
|
||
conn.close()
|
||
|
||
print(f'\n=== HOTOVO ===')
|
||
print(f'DEKURS.ID = {dekursid}')
|
||
print('Otevři Medicus → karta Buzalka Vladimír → najdi dnešní záznam → klikej na odkazy!')
|