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) 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.

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) ?

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é ?

D'avance merci de votre aide, 

Cordialement, 


-------- Message d'origine--------
De:     Piton Marco
Date:   mar. 21/06/2005 15:12
À:      Yannick BOYER; [email protected]
Cc:     [EMAIL PROTECTED]
Objet:  RE : RE : [CPS-users-fr] Ne pas afficher un champ d'un Schema

Yannick, 

En effet je viens de tester le code que tu m'as fourni. Ca marche au poil : 
grand grand merci.
Je mets Florent Guillaume qui m'a repondu egalement, en double
 
Cordialement, 

Marco.


-------- Message d'origine--------
De:     Yannick BOYER [mailto:[EMAIL PROTECTED]
Date:   mar. 21/06/2005 14:33
À:      Piton Marco; [email protected]
Cc:     
Objet:  RE : [CPS-users-fr] Ne pas afficher un champ d'un Schema
Dans portal_layout dans le widget que vous voulez caché il y a un champ:
 Hide the widget if the given TAL expression returns true

Moi j'ai rajouté un code du type : python: 'WorkspaceManager' not in 
user.getRolesInContext(context)

-----Message d'origine-----
De : Piton Marco [mailto:[EMAIL PROTECTED] 
Envoyé : mardi 21 juin 2005 16:27
À : [email protected]
Objet : [CPS-users-fr] Ne pas afficher un champ d'un Schema



Bonjour, 


Comment faire pour NE PAS afficher un champ defini dans un document, en 
fonction d'un rôle particulier ?

J'ai indiqué le rôle concerné dans les zones "ACL: read roles"    et "ACL: 
write roles" du field dans Portal_schemas (Le field s'appelle "Prenom" dans la 
trace ci-dessous).
A priori les autorisations sont bien testées, mais au lieu de ne pas afficher 
le champ, il y a plantage : 


Time    2005/06/21 14:22:27.203 GMT+2
User Name (User Id)     mPiton (mPiton)
Request URL     http://localhost:8080/cps/workspaces/ss/qs/view
Exception Type  ReadAccessError
Exception Value         Read access to Prenom denied (roles)

Traceback (innermost last):

    * Module ZPublisher.Publish, line 100, in publish
    * Module ZPublisher.mapply, line 88, in mapply
    * Module ZPublisher.Publish, line 40, in call_object
    * Module Products.CMFCore.PortalContent, line 125, in view
    * Module Products.CMFCore.PortalContent, line 116, in __call__
    * Module Shared.DC.Scripts.Bindings, line 306, in __call__
    * Module Shared.DC.Scripts.Bindings, line 343, in _bindAndExec
    * Module Products.CMFCore.FSPageTemplate, line 191, in _exec
    * Module Products.CMFCore.FSPageTemplate, line 124, in pt_render
    * Module Products.PageTemplates.PageTemplate, line 96, in pt_render
      <FSPageTemplate at /cps/cpsdocument_view used for /cps/workspaces/ss/qs>
    * Module TAL.TALInterpreter, line 189, in __call__
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 642, in do_defineMacro
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 408, in do_optTag_tal
    * Module TAL.TALInterpreter, line 393, in do_optTag
    * Module TAL.TALInterpreter, line 388, in no_tag
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 663, in do_useMacro
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 408, in do_optTag_tal
    * Module TAL.TALInterpreter, line 393, in do_optTag
    * Module TAL.TALInterpreter, line 388, in no_tag
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 663, in do_useMacro
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 408, in do_optTag_tal
    * Module TAL.TALInterpreter, line 393, in do_optTag
    * Module TAL.TALInterpreter, line 388, in no_tag
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 629, in do_condition
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 686, in do_defineSlot
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 408, in do_optTag_tal
    * Module TAL.TALInterpreter, line 393, in do_optTag
    * Module TAL.TALInterpreter, line 388, in no_tag
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 686, in do_defineSlot
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 408, in do_optTag_tal
    * Module TAL.TALInterpreter, line 393, in do_optTag
    * Module TAL.TALInterpreter, line 388, in no_tag
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 408, in do_optTag_tal
    * Module TAL.TALInterpreter, line 393, in do_optTag
    * Module TAL.TALInterpreter, line 388, in no_tag
    * Module TAL.TALInterpreter, line 233, in interpret
    * Module TAL.TALInterpreter, line 561, in do_insertStructure_tal
    * Module Products.PageTemplates.TALES, line 220, in evaluate
      Line 14, Column 4
      Expression: standard:'rendered_main|python:doc.render(proxy=here)'
      Names:

{'container': <CPSDefaultSite instance at 02616230>,
 'context': <ProxyDocument at /cps/workspaces/ss/qs>,
 'default': <Products.PageTemplates.TALES.Default instance at 0x019E3FD0>,
 'here': <ProxyDocument at /cps/workspaces/ss/qs>,
 'loop': <SafeMapping instance at 029DBE40>,
 'modules': <Products.PageTemplates.ZRPythonExpr._SecureModuleImporter instance 
at 0x019C10A8>,
 'nothing': None,
 'options': {'args': ()},
 'repeat': <SafeMapping instance at 029DBE40>,
 'request': <HTTPRequest, URL=http://localhost:8080/cps/workspaces/ss/qs/view>,
 'root': <Application instance at 0260EB30>,
 'template': <FSPageTemplate at /cps/cpsdocument_view used for 
/cps/workspaces/ss/qs>,
 'traverse_subpath': [],
 'user': mPiton}

    * Module Products.PageTemplates.Expressions, line 201, in __call__
    * Module Products.PageTemplates.Expressions, line 189, in _eval
    * Module Products.PageTemplates.ZRPythonExpr, line 47, in __call__
      __traceback_info__: doc.render(proxy=here)
    * Module Python expression "doc.render(proxy=here)", line 1, in <expression>
    * Module Products.CPSDocument.CPSDocument, line 63, in render
    * Module Products.CPSDocument.FlexibleTypeInformation, line 795, in 
renderObject
    * Module Products.CPSDocument.FlexibleTypeInformation, line 607, in 
_computeLayoutStructures
    * Module Products.CPSSchemas.Layout, line 233, in prepareLayoutWidgets
    * Module Products.CPSSchemas.BasicWidgets, line 264, in prepare
    * Module Products.CPSSchemas.DataModel, line 164, in __getitem__
    * Module Products.CPSSchemas.DataModel, line 157, in checkReadAccess
    * Module Products.CPSSchemas.Field, line 330, in checkReadAccess
    * Module Products.CPSSchemas.Field, line 315, in _checkAccess

ReadAccessError: Read access to Prenom denied (roles)



D'avance merci de votre aide,

Cordialement, 








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

Répondre à