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 :

aleatoire et aleatoire restrin


Sujet :

Zope Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Points : 37
    Points
    37
    Par défaut aleatoire et aleatoire restrin
    salut,
    j'ai un script python "getCasClient.py" qui sert à recupérer certains type d'objet à partir d'un site pui choisir d'une maniere aleatoire l'un de ces objets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    from Products.CMFCore.utils import getToolByName
    import random
    catalog = getToolByName(context, 'portal_catalog')
    # contruire sa requete
    results = catalog.searchResults(
        portal_type = ['News Item','casClient','technologie','CasClient','Success Stories','Livre Blanc','News '],)
    i = random.choice(results)
    j = i.getObject()
    return j
    et pour recuperer le title, ainsi que son contenu, je fais :
    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
     
    <div tal:define="o context/getCasClient">
        <div class="titreCasClient" tal:define="titre o/Title"
             tal:content="titre"> Cas client
        </div>
     
        <DIV class="textCasClient"
             tal:define="texte python:o.CookedBody(stx_level=2)[:80]">
             <div tal:content="structure texte"></div>
             <div>
    			<image src="fleche-rouge.gif" /> <a tal:attributes="href o/absolute_url">Lire la suite</a>
    		 </div>
        </DIV>
    </div>
    </div>
    </div>
    et ça marche trés bien.
    Par contre, j'ai un autre script qui fais presque le meme travaille sauf qu'il restrint le rechercher dans l'objet courant(pas dans tout le site comme dans le 1er cas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    from Products.CMFCore.utils import getToolByName
    import random
    catalog = getToolByName(context, 'portal_catalog')
    # contruire sa requete
    results = catalog.searchResults(path = {'query' :
    '/'.join(context.getPhysicalPath()) },
     
                               portal_type = ['News Item','casClient','technologie','CasClient','Success Stories','Livre Blanc','News ',],
                                    )
     
    i = random.choice(results)
    j = i.getObject()
    return j
    mais cette fois, il m'affiche des erreurs
    Est ce que quelqu'un pourrez m'aidez ?
    Merci d'avance

  2. #2
    Membre habitué Avatar de HexChit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 136
    Points
    136
    Par défaut
    Tu pourrais nous mettre les erreurs qu'il t'affiche stp?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    merci beaucoup, mais je trouver la solution.
    Par contre ilya tjs une begue: c'est que en cas ou le moteur de recherche ne trouver pas un sous dossier de type voulu dans le dossier courant.
    Alors, j'ai ajouter des modifs dans cette script python :
    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
    18
    19
    20
    21
    22
     
    from Products.CMFCore.utils import getToolByName
    import random
    catalog = getToolByName(context, 'portal_catalog')
    # contruire sa requete
    results = catalog.searchResults(path = {'query' :
    '/'.join(context.getPhysicalPath()) },
     
                               portal_type = ['News Item','casClient','technologie','CasClient','Success Stories','Livre Blanc','News ',],
                                    )
     
    i = random.choice(results)
    if len(i) != 0:    #verifier s'il a bien trouver quelques choses
        j = i.getObject()
        return j
    else:  # sinon, effectuer la recherche dans tout le site
        results = catalog.searchResults(
        portal_type = ['News Item','casClient','technologie','CasClient','Success Stories','Livre Blanc','News ',],
                                    )
        i = random.choice(results)
        j = i.getObject()
        return j
    mais ça pas marcher
    * URL: file:Asyres/skins/default/main_template.pt
    Line 136, Column 3
    Expression: standard:'here/getCasClientBody'
    Names:

    {'container': <PloneSite at /amairi>,
    'context': <ATFolder at /amairi/developpements/nternet-intranet-extranet-groupware>,
    'default': <Products.PageTemplates.TALES.Default instance at 0xb751f32c>,
    'here': <ATFolder at /amairi/developpements/nternet-intranet-extranet-groupware>,
    'loop': <Products.PageTemplates.TALES.SafeMapping object at 0xb2cb7e8c>,
    'modules': <Products.PageTemplates.ZRPythonExpr._SecureModuleImporter instance at 0xb74c292c>,
    'nothing': None,
    'options': {'args': ()},
    'repeat': <Products.PageTemplates.TALES.SafeMapping object at 0xb2cb7e8c>,
    'request': <HTTPRequest, URL=http://localhost:8080/amairi/developpements/nternet-intranet-extranet-groupware/folder_listing>,
    'root': <Application at >,
    'template': <FSPageTemplate at /amairi/folder_listing used for /amairi/developpements/nternet-intranet-extranet-groupware>,
    'traverse_subpath': [],
    'user': <User 'admin'>}

    * Module Products.PageTemplates.Expressions, line 185, in __call__
    * Module Products.PageTemplates.Expressions, line 180, in _eval
    * Module Products.PageTemplates.Expressions, line 77, in render
    * Module Products.PageTemplates.ZRPythonExpr, line 76, in call_with_ns
    * Module Products.CMFCore.FSPythonScript, line 103, in __render_with_namespace__
    * Module Shared.DC.Scripts.Bindings, line 325, in __render_with_namespace__
    * Module Shared.DC.Scripts.Bindings, line 348, in _bindAndExec
    * Module Products.CMFCore.FSPythonScript, line 163, in _exec
    * Module None, line 11, in getCasClientBody
    <FSPythonScript at /amairi/getCasClientBody used for /amairi/developpements/nternet-intranet-extranet-groupware>
    Line 11
    * Module random, line 249, in choice
    * Module Products.ZCatalog.Lazy, line 94, in __getitem__

    IndexError: 0 (Also, the following error occurred while attempting to render the standard error message, please see the event log for full details: 0)
    merci

  4. #4
    Membre habitué Avatar de HexChit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 136
    Points
    136
    Par défaut
    c'est parce que tu fais un random.choice sur une liste qui peut être vide !!
    Donc tu devrait effectuer un test de liste non vide avant le random.choice()

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    bien repondu
    vous avez tout a fait raison
    je peux que s'incline et vous remerci pour votre précieux aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Affichage aleatoire de points ....!?
    Par christophebmx dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/01/2005, 15h13
  2. generation de text de longueur aleatoire
    Par deeal dans le forum Général Python
    Réponses: 1
    Dernier message: 04/01/2005, 11h14
  3. [langage] fonction aléatoire
    Par Kinethe dans le forum Langage
    Réponses: 28
    Dernier message: 09/07/2004, 09h57
  4. Algorithmes de generateur pseudo-aleatoire
    Par funx dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 06/09/2002, 18h33
  5. nombre aleatoire
    Par Bob dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 17/06/2002, 18h12

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