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>