1 """
2 icsemantic.langfallback events
3
4 @author: Juan Pablo Gimenez
5 @contact: jpg@rcom.com.ar
6 """
7 __author__ = """Juan Pablo Gimenez <jpg@rcom.com.ar>"""
8 __docformat__ = 'plaintext'
9
10 from zope.component import getUtility
11
12 from platecom.utils.interfaces import IicSemanticManagementContentTypes, \
13 IContentTypesMultilingualPatcher
14
16 """
17 handler que se dispara en el IBeforeTraverseEvent
18
19 En el event.object recibe el portal y tiene que patchear
20 a todos los ContentTypes que esten configurados
21
22 >>> from icsemantic.langfallback.events import site_patcher
23
24 >>> class Event: pass
25 >>> event = Event()
26
27 le paso cualquier porqueria como portal...
28 >>> event.object = 'portal'
29 >>> site_patcher(event)
30
31 le paso un portal pero no es Site...
32 >>> event.object = portal
33 >>> site_patcher(event)
34
35 le paso un portal que es un Site...
36 >>> from zope.app.component.hooks import setSite
37 >>> setSite(portal)
38 >>> site_patcher(event)
39
40 """
41 if not getattr(event.object, '_v_multiligual_patched', None):
42
43 try:
44 pcm=getUtility(IicSemanticManagementContentTypes,
45 name='platecom.configuration')
46 except:
47
48 return
49 ccpatcher = getUtility(IContentTypesMultilingualPatcher)
50 for type_name in pcm.fallback_types:
51 try:
52 ccpatcher.patch(type_name, True)
53 except:
54
55 pass
56 event.object._v_multiligual_patched = True
57