patch(self,
klass,
replace_accessors=False)
| source code
|
Incorpora los metodos con fallback multi-lenguaje
>>> import string
>>> from Products.Archetypes.atapi import *
>>> from Products.ATContentTypes.content.base import ATCTContent
>>> from icsemantic.core.content.multilingual import ContentTypesMultilingualPatcher
>>> from icsemantic.core.interfaces import IMultilingualContentMarker, IMultilingualGettersMarker
>>> class MyContent(ATCTContent):
... portal_type = meta_type = 'MyContent'
... schema = Schema((
... StringField('some_field', storage=AnnotationStorage()),
... StringField('_other_field'),
... ))
>>> registerType(MyContent, 'Archetypes')
>>> hasattr(MyContent, 'getSome_field')
True
>>> hasattr(MyContent, 'getMultilingualSome_field')
False
>>> original_getter = getattr(MyContent, 'getSome_field')
>>> ccpatcher = ContentTypesMultilingualPatcher()
>>> ccpatcher.patch(MyContent)
>>> IMultilingualContentMarker.implementedBy(MyContent)
True
>>> IMultilingualGettersMarker.implementedBy(MyContent)
False
>>> hasattr(MyContent, 'getSome_field')
True
>>> hasattr(MyContent, 'getMultilingualSome_field')
True
>>> original_getter == getattr(MyContent, 'getSome_field')
True
>>> ccpatcher.unpatch(MyContent)
>>> IMultilingualContentMarker.implementedBy(MyContent)
False
>>> IMultilingualGettersMarker.implementedBy(MyContent)
False
>>> ccpatcher.patch(MyContent, replace_accessors=True)
>>> IMultilingualContentMarker.implementedBy(MyContent)
True
>>> IMultilingualGettersMarker.implementedBy(MyContent)
True
>>> hasattr(MyContent, 'getSome_field')
True
>>> hasattr(MyContent, 'getMultilingualSome_field')
True
>>> original_getter == getattr(MyContent, 'getSome_field')
False
>>> getattr(MyContent, 'getSome_field') == getattr(MyContent, 'getMultilingualSome_field')
True
>>> original_getter == getattr(MyContent, '_old_getSome_field')
True
Y ahora pruebo con basura...
>>> ccpatcher.patch('pepe')
Traceback (most recent call last):
...
AttributeError...
|