IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zope Python Discussion :

Générer dynamiquement des graphiques dans Plone


Sujet :

Zope Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Générer dynamiquement des graphiques dans Plone
    Salut !

    Je débute en plone, et je suis bloquée depuis 2 jours sur un problème dont je ne trouve aucune solution. Après avoir cherché un peu partout sur le web, je viens vous demander de l'aide.

    Je voudrais afficher des diagrammes de statistiques dans mon site. Pour ce faire, je créé une image avec la librairie python "chartdir". Cette image est générée dans un dossier en dehors de plone. Je voudrais alors pouvoir afficher cette image dans un template de plone...mais ceci m'est impossible. Je n'ai pas d'erreur, mais l'image ne s'affiche pas (la balise IMG ne semble pas trouver le fichier en dehors de plone).

    En mettant l'image dans plone, l'affichage se fait correctement. Seulement, l'image diagramme se génère dynamiquement, et je ne sais pas comment ajouter une image dynamiquement dans plone sans passser par l'interface graphique (ZMI).

    Y a t il une solution à ce problème? Faut il s'y prendre autrement ?

    Merci d'avance pour votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img tal:attributes="python:monTool.absolute_url() + '/maFonction'">
    J'espère que ça répondra à la question

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/11/2013, 14h52
  2. Réponses: 4
    Dernier message: 14/05/2007, 08h53
  3. ajouter dynamiquement des items dans un popup menu
    Par Malone dans le forum Composants VCL
    Réponses: 7
    Dernier message: 23/08/2005, 16h08
  4. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50
  5. Réponses: 2
    Dernier message: 31/08/2002, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo