z230
This commit is contained in:
@@ -11,6 +11,19 @@ Worktree (`.claude/worktrees/*`) slouží jen pro interní práci Claude, ne jak
|
|||||||
|
|
||||||
Každý adresář se skriptem má vlastní `NOTES.md` s technickými detaily. Přečti relevantní NOTES.md podle toho, čeho se konverzace týká.
|
Každý adresář se skriptem má vlastní `NOTES.md` s technickými detaily. Přečti relevantní NOTES.md podle toho, čeho se konverzace týká.
|
||||||
|
|
||||||
|
## Sdílené knihovny (`Knihovny/`)
|
||||||
|
|
||||||
|
Před psaním nového kódu vždy zkontroluj, zda existuje vhodná sdílená funkce.
|
||||||
|
Import vždy přes `sys.path` na kořen projektu nebo přímou cestou.
|
||||||
|
|
||||||
|
| Modul | Klíčová funkce / třída | Popis |
|
||||||
|
|-------|------------------------|-------|
|
||||||
|
| `najdi_dropbox.py` | `get_dropbox_root() → str` | Zjistí cestu k Dropboxu z registru nebo info.json — **používej místo pevných cest** |
|
||||||
|
| `EmailMessagingGraph.py` | — | Odesílání e-mailů přes Microsoft Graph API |
|
||||||
|
| `mysql_db.py` | — | Připojení a operace s MySQL databází |
|
||||||
|
| `medicus_db.py` | — | Připojení k databázi Medicus (Firebird) |
|
||||||
|
| `vzpb2b_client.py` | — | Klient pro VZP B2B API (stav pojištění) |
|
||||||
|
|
||||||
## Přehled skriptů
|
## Přehled skriptů
|
||||||
|
|
||||||
| Skript | Adresář | Popis |
|
| Skript | Adresář | Popis |
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
"""
|
||||||
|
Přesune soubory z Downloads Z230 do #Trash/YYYY-MM-DD,
|
||||||
|
kromě FIO transactions a DropboxBackupReport.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import shutil
|
||||||
|
from datetime import date
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Přidá kořen projektu do sys.path, aby šlo importovat Knihovny
|
||||||
|
_PROJEKT = Path(__file__).resolve().parents[2] # ordinaceprojekt/
|
||||||
|
sys.path.insert(0, str(_PROJEKT))
|
||||||
|
|
||||||
|
from Knihovny.najdi_dropbox import get_dropbox_root
|
||||||
|
|
||||||
|
_DROPBOX = Path(get_dropbox_root())
|
||||||
|
SOURCE_DIR = _DROPBOX / "!!!Days" / "Downloads Z230"
|
||||||
|
TRASH_DIR = SOURCE_DIR / "#Trash"
|
||||||
|
|
||||||
|
IGNORE_PATTERNS = [
|
||||||
|
"FIO transactions.xlsx",
|
||||||
|
"DropboxBackupReport.xlsx",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def should_ignore(filename: str) -> bool:
|
||||||
|
for pattern in IGNORE_PATTERNS:
|
||||||
|
if filename.endswith(pattern):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
today = date.today().strftime("%Y-%m-%d")
|
||||||
|
dest_dir = TRASH_DIR / today
|
||||||
|
|
||||||
|
files_to_move = [
|
||||||
|
f for f in SOURCE_DIR.iterdir()
|
||||||
|
if f.is_file() and not should_ignore(f.name)
|
||||||
|
]
|
||||||
|
|
||||||
|
if not files_to_move:
|
||||||
|
print("Žádné soubory k přesunu.")
|
||||||
|
return
|
||||||
|
|
||||||
|
dest_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
print(f"Cíl: {dest_dir}")
|
||||||
|
|
||||||
|
for f in files_to_move:
|
||||||
|
target = dest_dir / f.name
|
||||||
|
if target.exists():
|
||||||
|
base = f.stem
|
||||||
|
suffix = f.suffix
|
||||||
|
i = 1
|
||||||
|
while target.exists():
|
||||||
|
target = dest_dir / f"{base} ({i}){suffix}"
|
||||||
|
i += 1
|
||||||
|
shutil.move(str(f), str(target))
|
||||||
|
print(f" {f.name} → {target.name}")
|
||||||
|
|
||||||
|
print(f"\nPřesunuto {len(files_to_move)} souborů.")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user