Bonjour, Je vous remercie de votre réponse qui m'aide bien. Sans vouloir abuser, savez-vous s'il est possible également : 1) de tester si un document a tel ou tel etat ? Nous avons cherchés une fonction du type has_state mais nous n'avons rien trouvé. 2) de mettre cette fonction sous forme de script dans ce même paramètre : "Hide the widget if the given TAL expression returns true"
D'avance merci de votre aide, Cordialement, -------- Message d'origine-------- De: Florent Guillaume [mailto:[EMAIL PROTECTED] Date: mer. 22/06/2005 18:24 À: Piton Marco Cc: [email protected] Objet: Re: RE : RE : RE : [CPS-users-fr] Ne pas afficher un champ d'un Schema (suite) On 22 Jun 2005, at 10:10, Piton Marco wrote: > Bonjour, > > Suite à l'aide de yannick Boyer, j'arrive bien à tester l'affichage > des champs d'un layout en fonction de rôles ; le code TAL a > indiquer dans le champ "Hide the widget if the given TAL expression > returns true" (portal_layout/champ a afficher ou non) est du type : > python: 'X' not in user.getRolesInContext(context) ou 'X' est un role. > Si le user a le role 'X' le champ s'affiche bien.(l'expression > renvoie 'False', et le champ n'est donc pas caché). > > J'ai ete plus loin, et j'ai permis l'affichage de champs, à quatre > roles, sachant qu'un utilisateur peut avoir 0,un,deux,trois, ou > quatre de ces rôles. > > J'ai pas mal galéré (je ne connais pas Python) Il va falloir s'y mettre :) > avant d'arriver à trouver le bout de code qui fonctionne (même si > c'est simplissime mais bon...) : > > python: 'Rolex1' not in user.getRolesInContext(context) and > 'Rolex2' not in user.getRolesInContext(context) and > 'Rolex3' not in user.getRolesInContext(context) and > 'Rolex4' not in user.getRolesInContext(context) > > 1) Mais pouvez-vous me dire s'il existe une expression Python plus > simple que celle que j'ai trouvée ? > Du type : > ('Rolex1','Rolex2','Rolex3','Rolex4') not in user.getRolesInContext > (context) > ou du type : > ('Rolex1' and 'Rolex2' and 'Rolex3' and 'Rolex4') not in > user.getRolesInContext(context) > Je ne suis pas arrivé à la trouver. Le mieux est d'utiliser python: not user.has_role(('Rolex1', 'Rolex2', 'Rolex3', 'Rolex4'), context) sachant que si ici on passe plusieurs rôles à has_role, un OU logique est fait. > > 2) Afin d'eviter de lister les differents roles, je pourrais > egalement rechercher la presence non pas de roles, mais d'une sous- > chaine de caracteres : comment alors coder l'expression ? (Dans le > cas ci-dessus : tester la presence de la Chaine('Rolex') dans la > liste des roles du user). Comment coder cette expression : Chaine > ('Rolex') not in user.getRolesInContext(context) ? Rien de simple, non, même si on peut trouver des expressions qui marchent. > > 3) Existe t-il une doc sur les fonctions écrites en Python et > utilisables ? Comment savoir par exemple que la fonction > getRolesInContext(context) peut être employée et qu'elle a telle > finalité ? Il faut lire l'API de Zope, et celle de CMF. Florent -- Florent Guillaume, Nuxeo (Paris, France) CTO, Director of R&D +33 1 40 33 71 59 http://nuxeo.com [EMAIL PROTECTED]
_______________________________________________ cps-users-fr Adresse de la liste : [email protected] Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>
