Georges Racinet a écrit :
Àma c'est plus simple et symétrique de sous-classer plutôt que de patcher (et ce sera + facile à passer en 3.4 un jour). Quelque chose dans ce goût là (non testé)

from Globals import InitializeClass
from Products.CPSSchemas.Widget import CPSWidgetType
from Products.CPSSchemas.WidgetTypesTool import WidgetTypeRegistry

class Site1AttachedFileWidget(CPSAttachedFileWidget):
    field_types = ('CPS Disk File Field',   # File
'CPS String Field', # Plain text for indexing (optional)
                   'CPS File Field',   # Preview (HTML, optional)
#                   'CPS SubObjects Field', # uncomment for 3.4
    )

    field_inits = ({'is_searchabletext': 0,
'suffix_text': '_f1', # _f# are autocomputed field ext
                    'suffix_html': '_f2',
#                    'suffix_html_subfiles': '_f3', # uncomment for 3.4
            'disk_storage_path' = '/var/site1',
                    },
                   {'is_searchabletext': 1,
                    },
                   {'is_searchabletext': 0,
                    },
                   )

class Site1AttachedFileWidgetType(CPSWidgetType):
    """AttachedFile widget type."""
    meta_type = "Site1 AttachedFile Widget Type"
    cls = Site1AttachedFileWidget

WidgetTypeRegistry.register(Site1AttachedFileWidgetType)

etc., et utiliser ce widget type dans getCustomDocumentWidgetTypes à la place du CPS AttachedFile Widget Types avec data : {}

---------
Georges Racinet                        Nuxeo SAS
[EMAIL PROTECTED]                http://nuxeo.com
Tel: +33 (0) 1 40 33 71 73

Bonjour,
Je cale encore sur erreur à l'installation du produit Cogiteau ( Site1). Voilà ce que j'ai fait :
Dans mon __init__.py j'ai ajouté :

   import CogiteauCustomWidgets

et dans CogiteauCustomWidgets.py j'ai mis le code suivant :

   #Définition de la classe CogiteauAttachedFileWidget
   from Globals import InitializeClass
   from Products.CPSSchemas.BasicWidgets import CPSFileWidget
   from Products.CPSSchemas.ExtendedWidgets import CPSAttachedFileWidget
   from Products.CPSSchemas.Widget import CPSWidgetType
   from Products.CPSSchemas.WidgetTypesTool import WidgetTypeRegistry

   class CogiteauAttachedFileWidget(CPSAttachedFileWidget):
       meta_type = "Cogiteau AttachedFile Widget"
       field_types = ('CPS Disk File Field',   # File
                      'CPS String Field', # Plain text for indexing
   (optional)
                      'CPS File Field',   # Preview (HTML, optional)
   #                  'CPS SubObjects Field', # uncomment for 3.4
       )

       field_inits = ({'is_searchabletext': 0,
                       'suffix_text': '_f1', # _f# are autocomputed
   field ext
                       'suffix_html': '_f2',
   #                    'suffix_html_subfiles': '_f3', # uncomment for 3.4
                       'disk_storage_path' : '/var/storage',
                       },
                      {'is_searchabletext': 1,
                       },
                      {'is_searchabletext': 0,
                       },
                      )

   class CogiteauAttachedFileWidgetType(CPSWidgetType):
       """Cogiteau AttachedFile widget type."""
       meta_type = "Cogiteau AttachedFile Widget Type"
       cls = CogiteauAttachedFileWidget

   WidgetTypeRegistry.register(CogiteauAttachedFileWidgetType)

Je ne sais pas si c'est bien commeça qu'il faut déclarer ce nouveau type de widget mais j'ai essayé de le mettre dans l'install, après les 'import' et j'ai cru comprendre qu'il n'avait pas d'effet (aurait-il fallu le mettre dans les lignes de l'installer ?)

Ensuite dans le getCustomDocumentsWidget.py :

   widgets = {
           'AttachedFileCogiteau Widget': {
               'type': 'CogiteauAttachedFileWidgetType',
               'data': {},
               },
         }
   return widgets

et dans le getCustomDocumentLayouts.py (pour file, news et flexible)

    'attachedFile': {
               'type': 'AttachedFileCogiteau Widget',
               'data': {
                   'title': 'cpsdoc_flex_attachedFile_title',

J'ai le message d'erreur suivant à l'installation du produit :

Traceback (innermost last):
 Module ZPublisher.Publish, line 101, in publish
 Module ZPublisher.mapply, line 88, in mapply
 Module ZPublisher.Publish, line 39, in call_object
 Module Products.ExternalMethod.ExternalMethod, line 225, in __call__
  - __traceback_info__: ((<CPSDefaultSite instance at b68818c0>,), {}, None)
 Module /home/zope/CPS324/Products/Cogiteau2/Extensions/install.py, line 193, 
in install
 Module /home/zope/CPS324/Products/Cogiteau2/Extensions/install.py, line 48, in 
install
 Module Products.CPSInstaller.CPSInstaller, line 305, in runExternalUpdater
 Module Products.ExternalMethod.ExternalMethod, line 232, in __call__
  - __traceback_info__: ((), {}, None)
 Module /home/zope/CPS324/Products/CPSDocument/Extensions/install.py, line 227, 
in install
 Module /home/zope/CPS324/Products/CPSDocument/Extensions/install.py, line 207, 
in cpsinstall
 Module /home/zope/CPS324/Products/CPSDocument/Extensions/install.py, line 55, 
in install
 Module /home/zope/CPS324/Products/CPSDocument/Extensions/install.py, line 144, 
in installDocumentSchemas
 Module Products.CPSInstaller.CPSInstaller, line 391, in verifyLayouts
 Module Products.CPSSchemas.Layout, line 451, in manage_addCPSWidget
 Module Products.CPSSchemas.Layout, line 441, in getUnstrippedWidgetTypeId
ValueError: AttachedFileCogiteau Widget

Donc apparemment il ne reconnaît pas ce nom mais je ne sais pas si c'est dans le getCustom..Widget ou getCustom..Layouts, ni ce qu'il manque pour qu'il reconnaisse le nouveau widget.

Merci d'avance de votre aide.


--
Christophe Otton

Poyry Environment

e-mail : [EMAIL PROTECTED]


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

Répondre à