[RESOLU] Photos non affichées

Bonjour,

Les utilisateurs de Dolibarr m’ont fait remarquer que les photos n’apparaîssent plus sur les fiches adhérents. En fait, il s’avère que certaines apparaîssent, d’autres non. Pourtant, toutes les photos sont bien présentes dans /var/lib/dolibarr_cpb/documents/adherent. D’ailleurs, j’ai une appli de trombinoscope qui va piocher dans la base Dolibarr, et qui les affiche bien toutes correctement.

Une idée de ce qui peut poser problème ? J’étais en 5.0.4, et j’ai fait une mise à jour vers 9.0.2 (il était temps !), mais ça n’a rien changé.

Merci de vos lumières.

Je précise aussi que le nom du fichier est bien dans le champ photo de la table.

Bon, j’ai finalement trouvé.

En fait, le souci doit remonter à un bon moment. Auparavant, l’arborescence des photos étaient sous la forme rowid[2]/rowid[1]/photo, où rowid est l’id de l’adhérent, sous forme de string. Alors que maintenant, c’est rowid/photo.

Le pire, c’est que j’avais vu ça, car mon script trombinoscope en tenait compte ! Mais je n’avais pas fais gaffe que Dolibarr, lui, n’avait pas migré l’ancienne arborescence vers la nouvelle…

Voici un petit script python 2 pour mouliner ça. Une fois exécuté, si tout est ok, vous pouvez virer tous les dossier 0/ à 9/. Il faut être dans le dossier /var/lib/dolibarr_cpb/documents/adherent/.

import MySQLdb
import shutil
import os
import os.path

request = "SELECT rowid, photo FROM llx_adherent"
conn = MySQLdb.Connect(host="localhost", user="", passwd="", db='dolibarrdb', compress=1, use_unicode=True, charset="utf8")
cursor = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
cursor.execute(request)
adherents = cursor.fetchall()
cursor.close()
conn.close()

for adherent in adherents:
    rowid = str(adherent['rowid'])
    photo = adherent['photo']
    src = "%s/%s/photos/%s" % (rowid[2], rowid[1], photo)
    if os.path.isfile(src):
        os.mkdir("%s" % rowid)
        os.mkdir("%s/photos" % rowid)
        os.mkdir("%s/photos/thumbs" % rowid)
        dst = "%s/photos/%s" % (rowid, photo)
        shutil.copy(src, dst)
        src = "%s/%s/photos/thumbs/%s" % (rowid[2], rowid[1], "%s_mini.jpg" % photo[:-4])
        dst = "%s/photos/thumbs/%s" % (rowid, "%s_mini.jpg" % photo[:-4])
        shutil.copy(src, dst)
        src = "%s/%s/photos/thumbs/%s" % (rowid[2], rowid[1], "%s_small.jpg" % photo[:-4])
        dst = "%s/photos/thumbs/%s" % (rowid, "%s_small.jpg" % photo[:-4])
        shutil.copy(src, dst)