X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sla%2Fslaclient%2Ftemplates%2Ffed4fire%2Fdjango%2Ffactory.py;fp=sla%2Fslaclient%2Ftemplates%2Ffed4fire%2Fdjango%2Ffactory.py;h=c7e4389112a0d04fc6e962a6b01ce0ece9bc911d;hb=c99f1bd98ff355bd3f63b4929739ea5bd92cd6a3;hp=0000000000000000000000000000000000000000;hpb=e49329b43a640671476f2a793bde1d40b57e4d2e;p=myslice.git diff --git a/sla/slaclient/templates/fed4fire/django/factory.py b/sla/slaclient/templates/fed4fire/django/factory.py new file mode 100755 index 00000000..c7e43891 --- /dev/null +++ b/sla/slaclient/templates/fed4fire/django/factory.py @@ -0,0 +1,70 @@ +"""Django implementation of the templating needed in Fed4FIRE. +""" +import pkgutil +import django.template +from django.conf import settings +import sla.slaclient + +# +# Package where to read the template files +# +_package = "sla.slaclient.templates.fed4fire.django" + +# +# Filename of the sla-agreement template +# +_AGREEMENT_FILENAME = "agreement.xml" + +# +# Filename of the sla-template template +# +_TEMPLATE_FILENAME = "template.xml" + + +class Factory(object): + + def __init__(self): + self.slaagreement_tpl = None + self.slatemplate_tpl = None + + def _lazy_init(self): + if not settings.configured: + settings.configure() + + @staticmethod + def _read(filename): + string = pkgutil.get_data(_package, filename) + return string + + def _get_agreement_tpl(self): + self._lazy_init() + if self.slaagreement_tpl is None: + self.slaagreement_tpl = Factory._read(_AGREEMENT_FILENAME) + return self.slaagreement_tpl + + def _get_template_tpl(self): + self._lazy_init() + if self.slatemplate_tpl is None: + self.slatemplate_tpl = Factory._read(_TEMPLATE_FILENAME) + return self.slatemplate_tpl + + def slaagreement(self): + tpl = self._get_agreement_tpl() + result = Template(tpl) + return result + + def slatemplate(self): + tpl = self._get_template_tpl() + result = Template(tpl) + return result + + +class Template(sla.slaclient.templates.Template): + + def __init__(self, string): + self.impl = django.template.Template(string) + + def render(self, data): + context = django.template.Context(dict(data=data)) + result = self.impl.render(context) + return result