feat: nommage intelligent resize + conflit uniquement si necessaire #10

Closed
opened 2026-05-06 07:40:14 +00:00 by Cédric A5L · 0 comments
Owner

Comportement attendu

1. Nommage basé sur le nom de base (sans suffixe dimensions existant)

Si la source est logo_1024x1024.png, la copie 500x500 doit donner logo_500x500.png et non logo_1024x1024_500x500.png.

Logique : stripper le suffixe _NxN en fin de stem avant de construire le nom de sortie.

import re
stem_base = re.sub(r"_\d+x\d+$", "", stem)
out_name = f"{stem_base}_{size}x{size}.{fmt}"

2. Sélecteur de conflit masqué par défaut

Ne pas afficher le groupe "Si le fichier existe déjà" au chargement de la page.
Flux attendu :

  1. Utilisateur choisit tailles + formats puis clique Générer
  2. Pre-check AJAX des fichiers cibles (nouvelle route /check-resize)
  3. Seulement si conflit detecte -> panneau de choix (Backup / Ecraser / Renommer / Ignorer)
  4. Utilisateur confirme -> generation repart avec la strategie choisie

Fichiers a modifier

  • app/app.py : strip du suffixe _NxN dans /resize, nouvelle route /check-resize
  • app/templates/preview_image.html : groupe conflit masque par defaut, affiche dynamiquement en JS

Exemples

Source Taille Actuel Attendu
logo.png 500 logo_500x500.png OK logo_500x500.png OK
logo_1024x1024.png 500 logo_1024x1024_500x500.png KO logo_500x500.png OK
logo_bak_20250506.png 64 logo_bak_20250506_64x64.png OK logo_bak_20250506_64x64.png OK
## Comportement attendu ### 1. Nommage basé sur le nom de base (sans suffixe dimensions existant) Si la source est `logo_1024x1024.png`, la copie 500x500 doit donner `logo_500x500.png` et non `logo_1024x1024_500x500.png`. Logique : stripper le suffixe `_NxN` en fin de stem avant de construire le nom de sortie. ```python import re stem_base = re.sub(r"_\d+x\d+$", "", stem) out_name = f"{stem_base}_{size}x{size}.{fmt}" ``` ### 2. Sélecteur de conflit masqué par défaut Ne pas afficher le groupe "Si le fichier existe déjà" au chargement de la page. Flux attendu : 1. Utilisateur choisit tailles + formats puis clique Générer 2. Pre-check AJAX des fichiers cibles (nouvelle route `/check-resize`) 3. Seulement si conflit detecte -> panneau de choix (Backup / Ecraser / Renommer / Ignorer) 4. Utilisateur confirme -> generation repart avec la strategie choisie ## Fichiers a modifier - `app/app.py` : strip du suffixe _NxN dans `/resize`, nouvelle route `/check-resize` - `app/templates/preview_image.html` : groupe conflit masque par defaut, affiche dynamiquement en JS ## Exemples | Source | Taille | Actuel | Attendu | |---|---|---|---| | `logo.png` | 500 | `logo_500x500.png` OK | `logo_500x500.png` OK | | `logo_1024x1024.png` | 500 | `logo_1024x1024_500x500.png` KO | `logo_500x500.png` OK | | `logo_bak_20250506.png` | 64 | `logo_bak_20250506_64x64.png` OK | `logo_bak_20250506_64x64.png` OK |
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: alpinux.cedrica5l/alpinux-static#10
No description provided.