|
RE : RE : RE : Ne pas afficher un champ d'un Schema (suite): msg#00329web.zope.cps.general.french
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; cps-users-fr-FQDHc1wsLCVb90+sfpvX0g@xxxxxxxxxxxxxxxx Cc: fguillaume-CQNGlVZ5l00AvxtiuMwx3w@xxxxxxxxxxxxxxxx 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:yannick.boyer-2B98Am/d+tFQFI55V6+gNQ@xxxxxxxxxxxxxxxx] Date: mar. 21/06/2005 14:33 À: Piton Marco; cps-users-fr-FQDHc1wsLCVb90+sfpvX0g@xxxxxxxxxxxxxxxx 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:mpiton-zDdfv1f5rea41k5uCYKmRQ@xxxxxxxxxxxxxxxx] Envoyé : mardi 21 juin 2005 16:27 À : cps-users-fr-FQDHc1wsLCVb90+sfpvX0g@xxxxxxxxxxxxxxxx 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 : cps-users-fr-FQDHc1wsLCVb90+sfpvX0g@xxxxxxxxxxxxxxxx Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr> |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: WorkFlow: 00329, Rakotomandimby (R12y) Mihamina |
|---|---|
| Next by Date: | Liste des sous documents (URGENT): 00329, Balmana Stéphane |
| Previous by Thread: | Indexation Word sous Windowsi: 00329, Olivier TOUZÉ |
| Next by Thread: | Re: RE : RE : RE : Ne pas afficher un champ d'un Schema (suite): 00329, Florent Guillaume |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |