Bonjour,
j'ai créé un Tool similaire il n'y pas si longtemps et voilà la façon dont je m'y suis pris via une méthode dans la classe de mon tool (un script peut faire l'affaire)
- On créé le graphique dans un fichier
- On charge le contenu de ce dernier en mémoire
- On efface le fichier (pour ne pas encombrer le serveur à force)
- On modifie les headers selon le type d'image
- On retourne le flux
Le code donne ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
# Création du fichier temporaire
temp = tempfile.mkstemp()
# On en récup le nom
fname = temp[1]
# On dessine dedans
myBar.draw(fname)
# On charge le contenu
fp = file(fname)
data = fp.read(-1)
fp.close()
# On le supprime
os.remove(fname)
# Changement des headers
self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache')
self.REQUEST.RESPONSE.setHeader('Content-Type', 'image/png')
return data |
ensuite pour l'intégrer dans les templates il suffit d'un coup de tal :
<img tal:attributes="python:monTool.absolute_url() + '/maFonction'">
J'espère que ça répondra à la question
Partager