J'ai trouvé une autre solution.
J'ai ajouté une propriété "initialize_fields" à mon directory. Lors de la méthode renderCreateEntryDetailed, je transfère ces champs du datastructure au datamodel avant de lancer le computeLayoutStrutcure. Ce qui évite de faire du spécifique et reste un tant soit peu générique.
 
Cordialement

Cédric Marfil
Concepteur Réalisateur Intégrateur Confirmé
Tél. direct: 03.20.65.33.18
Mail: [EMAIL PROTECTED]

Capgemini
181 rue Jules Delcenserie
59700 Marcq en Baroeul
----- Original Message -----
Sent: Wednesday, September 13, 2006 8:15 PM
Subject: Re: [CPS-users-fr] Layout et widgets hidden


On Sep 13, 2006, at 8:01 PM, Cedric Marfil wrote:

> Merci Georges,
> mais comment me baser sur le datastructure dans la hidden_if_expr ? 
> ce n'est pas un objet qui fait parti du contexte

Ah oui, en effet et d'ailleurs le fait de déclarer un widget comme 
caché est fait sans datastructure (Widget.getModeFromLayoutMode)
Eh bien, c'est  lourd, mais il ne te reste plus qu'à lire la valeur 
directement dans REQUEST (la clef doit être widget__<id du widget>)


> <007201c6d75e$ab5aa560$9859440a>
> Cédric Marfil
> Concepteur Réalisateur Intégrateur Confirmé
> Tél. direct: 03.20.65.33.18
> Mail: [EMAIL PROTECTED]
>
> Capgemini
> 181 rue Jules Delcenserie
> 59700 Marcq en Baroeul
> ----- Original Message -----
> From: Georges Racinet
> To: Cedric Marfil
> Sent: Wednesday, September 13, 2006 7:59 PM
> Subject: Re: [CPS-users-fr] Layout et widgets hidden
>
>
> On Sep 13, 2006, at 7:30 PM, Cedric Marfil wrote:
>
> > Bonsoir,
> > Suite à la création de 2 profils différents pour l'accès à
> > l'application, j'ai un layout avec certains widgets dont
> > l'"hidden_if_expr" est remplie:
> >  - Quand je visualise mon formulaire de création, pas de problème.
> >  - Quand je saisis des données dans les widgets dont la
> > "hidden_if_expr" est remplie et que je valide le formulaire, ces
> > widget n'enregistrent pas leur valeur
>
> On dirait que l'élimination des widgets cachés de la layout_structure
> se fait effectivement avant la validation. Mais après préparation et
> mise à jour par rapport à la requête de la datastructure. Tu ferais
> mieux de te baser sur le contenu de la datastructure plutôt que sur
> le datamodel.
>
> >  - Si en création, un widget n'est pas validé, alors le layout se
> > réaffiche sans les champs dont la "hidden_if_expr" est remplie.
>
> A priori, 'typeMember' n'est plus dans la requête au second clic donc
> ton _expression_ donne datamodel['typeMember'], qui vaut la
> default_expr de ton champ (parce qu'on est en création), à vue de nez
> ça doit être '', ce qui cache le widget.
>
> >  - Quand je suis en modification, le formulaire s'affiche et se
> > comporte correctement.
> >
> > Voici à quoi ressemble ma hidden_if_expr:
> > python: context.REQUEST.get('typeMember', datamodel['typeMember']) !
> > = 'professionnel'
> >
> > Je me doute que çà doit avoir un rapport avec le fait qu'au moment
> > de l'enregistrement des données (méthode
> > layout.validate_layout_structure), le widget doit apparaître en
> > hidden car le contexte d'évaluation de l'_expression_ ne correspond
> > plus au formulaire initial, mais je n'ai pas d'idée sur la façon de
> > résoudre ce problème.
> > Peut-être suffit-il de changer mon _expression_, mais pour y mettre
> > quoi ?
> >
> > Merci d'avance pour vos retours
> >
> > Cordialement
> >
> > <capLogo.gif>
> > Cédric Marfil
> > Concepteur Réalisateur Intégrateur Confirmé
> > Tél. direct: 03.20.65.33.18
> > Mail: [EMAIL PROTECTED]
> >
> > Capgemini
> > 181 rue Jules Delcenserie
> > 59700 Marcq en Baroeul
> > This message contains information that may be privileged or
> > confidential and is the property of the Capgemini Group. It is
> > intended only for the person to whom it is addressed. If you are
> > not the intended recipient, you are not authorized to read, print,
> > retain, copy, disseminate, distribute, or use this message or any
> > part thereof. If you receive this message in error, please notify
> > the sender immediately and delete all copies of this message.
> >
> > <capLogo.gif>
> > _______________________________________________
> > cps-users-fr
> > Adresse de la liste : [email protected]
> > Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/
> > cps-users-fr>
>
> ---------
> Georges Racinet                        Nuxeo SAS
> [EMAIL PROTECTED]                http://nuxeo.com
> Tel: +33 (0) 1 40 33 71 73
>
> This message contains information that may be privileged or 
> confidential and is the property of the Capgemini Group. It is 
> intended only for the person to whom it is addressed. If you are 
> not the intended recipient, you are not authorized to read, print, 
> retain, copy, disseminate, distribute, or use this message or any 
> part thereof. If you receive this message in error, please notify 
> the sender immediately and delete all copies of this message.
>
>

---------
Georges Racinet                        Nuxeo SAS
[EMAIL PROTECTED]                http://nuxeo.com
Tel: +33 (0) 1 40 33 71 73

This message contains information that may be privileged or confidential and is the property of the Capgemini Group. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print, retain, copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message.

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

Répondre à