"""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!')