On 4/21/06, Olivier Grisel <[EMAIL PROTECTED]> wrote:
> Cyrille Leroux a écrit :
> > Bonjour,
> > Avec CPS 3.4.0-1, je créé un nouveau type auquel j'ajoute un widget de
> > sélection (le CPSSelectWidget du fichier CPSSchemas/BasicWidgets.py).
> > J'obtiens donc une liste déroulante :
> > id1 : valeur1
> > id2 : valeur2
> > id3 : valeur3
> > ...
> > Lorsque je fais une recherche, je me rend compte que seule l'id de
> > l'élément sélectionné est indexée, alors que j'aimerais que ce soit sa
> > valeur plutôt. Par exemple, si je cherche "id1", je trouve le
> > document, mais si je cherche "valeur1", je ne trouve pas.
> >
> > Question : Sachant que je ne peux pas mettre le contenu de la valeur
> > dans l'id (ça poserait des problèmes évidents de mise à jour de la
> > valeur),
>
> Pourquoi ?
>

Un exemple :
valeur1 : valeur1
valeur2 : valeur2

Maintenant je créé 100 documents et je selectionne "valeur1"

Un jour, j'ai une mise à jour à faire, et j'ai donc :
valeur1bis : valeur1bis
valeur2 : valeur2

Quand je veux visualiser mes documents, j'ai toujours "valeur1" et non
"valeur1bis" : il faut tout changer à la main. Alors qu'avec un id
fixe, le changement
id1 : valeur1 ->  id1 : valeur1bis
aurait été répercuté dans tous mes documents

Ou encore un autre scénario : ne changer que la valeur et pas l'id :
valeur1 : valeur1bis
Mais dans ce cas, la recherche ne serait plus pertinante.

> > existe-t-il une solution pour que la valeur soit indexée?
> > (via zmi ou code python)?
> ion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>
>
> La clef est ce qui est *stocké* dans le document (et donc indexé). La valeur
> sert uniquement a la traduction de l'interface.
>
> Pour contourner ce fonctionnement, il devrait être possible d'ajouter un 
> nouveau
> champ  indexé pour la recherche plein texte dans le schema de ce document et
> dont le contenu serait calculé par un write_process_expr du type:
>
> python:portal.portal_vocabularies['mon_voc'].get(datamodel.get('field_avec_la_clef',
> '')

Dans mon cas, j'ai créé un nouveau widget à partir de CPSSelectWidget
et j'ai surchargé la méthode qui récupère le "vocabulary" pour y
mettre à la place une méthode qui récupère des  données d'une BDD.
Mais effectivement, peut être qu'en ajoutant un champ caché, ça
devrait fonctionner.

En tout cas, merci pour cette piste.

    Cyrille
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>

Répondre à