Re: [CPS-users-fr] Ajouter une entrée dans un index

Cyrille Leroux cyrille.leroux at gmail.com
Jeu 11 Mai 15:39:34 CEST 2006


On 5/11/06, Georges Racinet <gracinet at nuxeo.com> wrote:
>
> Le 11 mai 2006, à 14:59, Cyrille Leroux a écrit :
>
> > Bonjour,
> > Avec CPS 3.4.0-1, j'essaie -désespérément- de lister/ajouter/supprimer
> > les informations indexées dans portal_catalog, ceci à partir du code
> > d'un widget customisé.
> >
> > L'idéal ce serait d'avoir un code qui ressemble à :
> > tool = getToolByName(self, 'portal_catalog')
> > tool.ajouterValeur(leDocument,unIndex,leMotQueJeVeuxIndexer)
> > tool.supprimerValeur(...)
>
> Je ne suis pas sûr que ce soit souhaitable de faire comme ça. Entre
> autres parce que les indexations sont gérées en fin de transaction et
> que vous risquez peut-être de provoquer des conflits durs à résoudre
> (je m'avance un peu).
>
> Il vaut mieux laisser faire l'indexation automatique et stocker votre
> valeur dans un champ du doc en faisant pointer un index dessus
> (utiliser un Field Index paramétré avec le nom du champ).
>
> Pour l'invalidation, simplement vider le champ. Est-ce que ça vous
> suffirait ?


Merci Georges de t'interesser à mon problème.

A vrai dire, j'en suis arrivé à essayer ça, parceque je ne m'en sort
pas avec une méthode plus "propre".

Ce que j'essais de faire, c'est indexer la valeur selectionnée, dans
un widget hérité de CPSSelectWidget (alimenté par une base de données
et non par un vocabulaire). Le problème, c'est que l'indexation
automatique n'indexe que la clef et pas la valeur.

J'ai donc utilisé typemaker pour faire un type avec mon widget
customisé et un autre "caché" (en esperant que les champs cachés
soient indexés), mais je ne trouve pas comment les faire communiquer

- Je ne trouve pas le moyen de lire le contenu de mon select customisé
à partir de mon widget caché;
- Je ne trouve pas non plus le moyen de lire le contenu du document
directement dans portal_catalog (toujours à partir du widget caché)
- En cherchant de le code, je suis tombé sur la méthode SearchableText
dans CPSDocument/CPSDocument.py qui pourrait m'interesser, mais
apparement, elle n'est jamais invoquée (j'ai introduis des logs et des
erreurs pour voir)

Par ailleurs, j'ai aussi ajouté un Field Index paramétré avec le nom
du champ, mais c'est toujours le même problème : ça indexe la clef,
pas la valeur.

Enfin bref, je tourne en rond!

    Cyrille


Plus d'informations sur la liste de diffusion cps-users-fr
Plus d'information sur CPS: CPS project - CVS - API

Hébergement: Nuxeo: Zope service provider


This list archive provided by Nuxeo, the leaders of open source ECM. Check out the Nuxeo 5 open source, standards-based ECM project.