Projet

Général

Profil

Development #60302

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

Ajouté par Emmanuel Cazenave il y a plus de 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
05 janvier 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description


Fichiers

wcs_showfilenames.py (2,34 ko) wcs_showfilenames.py Emmanuel Cazenave, 05 janvier 2022 16:36

Demandes liées

Lié à Publik - Support #57729: Migration d'instances de Publik : changement de nom de domaineFermé11 octobre 2021

Actions
Lié à w.c.s. - Bug #21731: AttachmentEvolutionPart: le filename n'est pas relatif au publisher.app_dirFermé08 février 2018

Actions

Historique

#1

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é
#2

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é
#3

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

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

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

#7

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.

#8

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.

Formats disponibles : Atom PDF