src/ztfy/myams/tal/api.py
changeset 0 8a19e25e39e4
child 101 8364fb15bfe5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ztfy/myams/tal/api.py	Wed May 07 10:36:24 2014 +0200
@@ -0,0 +1,53 @@
+#
+# Copyright (c) 2012 Thierry Florac <tflorac AT onf.fr>
+# All Rights Reserved.
+#
+
+
+# import standard packages
+
+# import Zope3 interfaces
+from z3c.json.interfaces import IJSONWriter
+from zope.tales.interfaces import ITALESFunctionNamespace
+
+# import local interfaces
+from ztfy.myams.interfaces import IMyAMSApplication, IObjectData
+from ztfy.myams.interfaces.configuration import IMyAMSConfiguration
+from ztfy.myams.tal.interfaces import IMyAMSTalesAPI
+
+# import Zope3 packages
+from zope.component import getUtility
+from zope.interface import implements
+from zope.security.proxy import removeSecurityProxy
+
+# import local packages
+from ztfy.utils.traversing import getParent
+
+
+class MyAMSTalesAdapter(object):
+    """myams: TALES adapter"""
+
+    implements(IMyAMSTalesAPI, ITALESFunctionNamespace)
+
+    def __init__(self, context):
+        self.context = context
+
+    def setEngine(self, engine):
+        self.request = engine.vars['request']
+
+    def data(self):
+        data = IObjectData(self.context, None)
+        if (data is not None) and data.object_data:
+            writer = getUtility(IJSONWriter)
+            return writer.write(data.object_data)
+
+    def configuration(self):
+        application = getParent(self.context, IMyAMSApplication)
+        if application is not None:
+            return IMyAMSConfiguration(application, None)
+
+    def resources(self):
+        application = getParent(self.context, IMyAMSApplication)
+        if application is not None:
+            for resource in application.resources:
+                removeSecurityProxy(resource).need()