[CPS-users-fr] Re: Pb de Stockage externe séparé

Christophe Otton le.blaireau at free.fr
Jeu 10 Aou 17:41:37 CEST 2006


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
> gracinet at nuxeo.com                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 : le.blaireau at free.fr




More information about the cps-users-fr mailing list

This list archive provided by Nuxeo, the leaders of open source ECM. Check out the Nuxeo 5 open source, standards-based ECM project.