logo       

RE : RE : RE : Ne pas afficher un champ d'un Schema (suite): msg#00329

web.zope.cps.general.french

Subject: RE : RE : RE : Ne pas afficher un champ d'un Schema (suite)


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>
Google Custom Search

News | FAQ | advertise