Grégory FRANCOIS a écrit :
Bonjour,

Pour permettre aux membres d'un portail d'acceder au MailHost (lors d'une
creation de document) sans etre manager, j'essaie de créer un tool lequel
sera appelé par le wfscript.
Le script d'installation du site déclenche l'erreur suivante :

Traceback (innermost last):

    * Module ZPublisher.Publish, line 115, in publish
    * Module ZPublisher.mapply, line 88, in mapply
    * Module ZPublisher.Publish, line 41, in call_object
    * Module Products.ExternalMethod.ExternalMethod, line 225, in __call__
      __traceback_info__: ((<CPSDefaultSite at /IntranetCirus>,), {}, None)
    * Module
C:\Zope-Instance\Products\IntranetCirus\Extensions\install.py, line
320, in install
    * Module
C:\Zope-Instance\Products\IntranetCirus\Extensions\install.py, line
314, in installSendMailAsManager
    * Module Products.CPSInstaller.CMFInstaller, line 174, in getTool
    * Module Products.CMFCore.utils, line 82, in getToolByName

AttributeError: Mon_tool

Visiblement le tool en question n'existe pas au moment de l'appel à getToolByName. Il faut le creer avant dans le script d'install ou part un import_step / toolset dedié dans un profil GenericSetup.

Mais étant donné le fait que ce tool ne contient aucune donnée persistente il est plus simple de coder cette fonction dans un simple module au lieu d'en faire une méthode de tool.

Par exemple dans un fichier Products.MonProduit.utils.py :

"""
from AccessControl import ModuleSecurityInfo

ModuleSecurityInfo('Products.MonProduit.utils').declarePublic('ma_fonction')
def ma_fonction(arg1, arg2):
    pass
"""

Ne pas oublier de faire un "import utils" dans le __init__.py du produit pour que la declaration de sécurité soit prise en compte au lancement de Zope.

Dans le script de wf ou dans n'importe quel autre bout de code restreint il sera alors possible de faire :

modules['Products.MonProduit.utils'].ma_fonction(arg1, arg2)

--
Olivier

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

Répondre à