Project

General

Profile

Développement #60302

Comprendre pourquoi on stocke des chemins absolus de fichiers (et corriger si ça se produit encore)

Added by Emmanuel Cazenave about 3 years ago. Updated about 3 years ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
05 January 2022
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

Description


Files

wcs_showfilenames.py (2.34 KB) wcs_showfilenames.py Emmanuel Cazenave, 05 January 2022 04:36 PM

Related issues

Related to Publik - Support #57729: Migration d'instances de Publik : changement de nom de domaineFermé11 October 2021

Actions
Related to w.c.s. - Bug #21731: AttachmentEvolutionPart: le filename n'est pas relatif au publisher.app_dirFermé08 February 2018

Actions

History

#1

Updated by Emmanuel Cazenave about 3 years ago

  • Related to Support #57729: Migration d'instances de Publik : changement de nom de domaine added
#2

Updated by Emmanuel Cazenave about 3 years ago

  • Related to Bug #21731: AttachmentEvolutionPart: le filename n'est pas relatif au publisher.app_dir added
#3

Updated by Emmanuel Cazenave about 3 years ago

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.

#4

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()

#7

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.

#8

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.

Also available in: Atom PDF