--- /dev/null
+"""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