Développement #60302
Comprendre pourquoi on stocke des chemins absolus de fichiers (et corriger si ça se produit encore)
0%
Files
Related issues
History
Updated by Emmanuel Cazenave about 3 years ago
- Related to Support #57729: Migration d'instances de Publik : changement de nom de domaine added
Updated by Emmanuel Cazenave about 3 years ago
- Related to Bug #21731: AttachmentEvolutionPart: le filename n'est pas relatif au publisher.app_dir added
Updated by Emmanuel Cazenave about 3 years ago
- File wcs_showfilenames.py wcs_showfilenames.py added
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.
Updated by Thomas Noël about 3 years ago
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()
Updated by Emmanuel Cazenave about 3 years ago
- Status changed from Nouveau to 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.
Updated by Emmanuel Cazenave about 3 years ago
Emmanuel Cazenave a écrit :
les chemins de fichiers sont stockés en chemin relatif
les chemins des "nouveaux" fichiers.