Development #60302
Comprendre pourquoi on stocke des chemins absolus de fichiers (et corriger si ça se produit encore)
0%
Fichiers
Demandes liées
Historique
Mis à jour par Emmanuel Cazenave il y a plus de 2 ans
- Lié à Support #57729: Migration d'instances de Publik : changement de nom de domaine ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 2 ans
- Lié à Bug #21731: AttachmentEvolutionPart: le filename n'est pas relatif au publisher.app_dir ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 2 ans
- Fichier wcs_showfilenames.py wcs_showfilenames.py ajouté
J'ai refait un tour un peu plus rigoureux, et en fait je crois que non on ne stocke plus de chemins absolus, je ne trouve plus de fichiers stockés en chemin absolus depuis que #21731 a été déployé.
Là bas il se disait : "Voilà sans exécution de migration générale mais si on voulait il y aurait juste à provoquer un .store() sur tous les formdata (ce qu'on pourrait limiter à l'SQL et ça serait trivial)."
Je ne comprends pas la partie "(ce qu'on pourrait limiter à l'SQL et ça serait trivial).", mais bref je ferais bien cette migration sur un/des tenants de recette, puis laisser vivre un peu et vérifier plus tard que des chemins absolus ne reviennent pas.
Je joins le script qui me sert à analyser la situation.
Mis à jour par Thomas Noël il y a plus de 2 ans
Juste une note, d'une analyse que j'avais faite chez un autre client, il n'y avait comme chemin absolu que les AttachmentEvolutionPart et j'avais fait ce script :
from wcs.formdef import FormDef from wcs.carddef import CardDef SOURCE = '/var/lib/wcs/wcs.dev.publik.love/' TARGET = '/var/lib/wcs/wcs2.dev.publik.love/' LEN = len(SOURCE) for formdef in FormDef.select(ignore_migration=True) + CardDef.select(ignore_migration=True): for formdata in formdef.data_class().select(ignore_errors=True, iterator=True): changed = False for part in formdata.iter_evolution_parts(): if part.__class__.__name__ == 'AttachmentEvolutionPart': if part.filename and part.filename.startswith(SOURCE): part.filename = TARGET + part.filename[LEN:] changed = True print(formdata, '->', part.filename) if changed: print('... re-stored') formdata.store()
Mis à jour par Emmanuel Cazenave il y a environ 2 ans
- Statut changé de Nouveau à Fermé
Résultats des courses, les chemins de fichiers sont stockés en chemin relatif, et #60380 pour faciliter le rattrapage sur les "vieux" fichiers.
Mis à jour par Emmanuel Cazenave il y a environ 2 ans
Emmanuel Cazenave a écrit :
les chemins de fichiers sont stockés en chemin relatif
les chemins des "nouveaux" fichiers.