SLA and Service Directory code added
[myslice.git] / sla / slaclient / templates / fed4fire / django / factory.py
diff --git a/sla/slaclient/templates/fed4fire/django/factory.py b/sla/slaclient/templates/fed4fire/django/factory.py
new file mode 100755 (executable)
index 0000000..c7e4389
--- /dev/null
@@ -0,0 +1,70 @@
+"""Django implementation of the templating needed in Fed4FIRE.\r
+"""\r
+import pkgutil\r
+import django.template\r
+from django.conf import settings\r
+import sla.slaclient\r
+\r
+#\r
+# Package where to read the template files\r
+#\r
+_package = "sla.slaclient.templates.fed4fire.django"\r
+\r
+#\r
+# Filename of the sla-agreement template\r
+#\r
+_AGREEMENT_FILENAME = "agreement.xml"\r
+\r
+#\r
+# Filename of the sla-template template\r
+#\r
+_TEMPLATE_FILENAME = "template.xml"\r
+\r
+\r
+class Factory(object):\r
+\r
+    def __init__(self):\r
+        self.slaagreement_tpl = None\r
+        self.slatemplate_tpl = None\r
+\r
+    def _lazy_init(self):\r
+        if not settings.configured:\r
+            settings.configure()\r
+\r
+    @staticmethod\r
+    def _read(filename):\r
+        string = pkgutil.get_data(_package, filename)\r
+        return string\r
+\r
+    def _get_agreement_tpl(self):\r
+        self._lazy_init()\r
+        if self.slaagreement_tpl is None:\r
+            self.slaagreement_tpl = Factory._read(_AGREEMENT_FILENAME)\r
+        return self.slaagreement_tpl\r
+\r
+    def _get_template_tpl(self):\r
+        self._lazy_init()\r
+        if self.slatemplate_tpl is None:\r
+            self.slatemplate_tpl = Factory._read(_TEMPLATE_FILENAME)\r
+        return self.slatemplate_tpl\r
+\r
+    def slaagreement(self):\r
+        tpl = self._get_agreement_tpl()\r
+        result = Template(tpl)\r
+        return result\r
+\r
+    def slatemplate(self):\r
+        tpl = self._get_template_tpl()\r
+        result = Template(tpl)\r
+        return result\r
+\r
+\r
+class Template(sla.slaclient.templates.Template):\r
+\r
+    def __init__(self, string):\r
+        self.impl = django.template.Template(string)\r
+\r
+    def render(self, data):\r
+        context = django.template.Context(dict(data=data))\r
+        result = self.impl.render(context)\r
+        return result\r