2013-06-03 23:19:06 +03:00
|
|
|
import os
|
|
|
|
import os.path
|
|
|
|
import sys
|
|
|
|
|
|
|
|
class Templates (object):
|
2013-06-04 01:22:54 +03:00
|
|
|
def __init__(self, templatedirs, extension):
|
2013-06-03 23:19:06 +03:00
|
|
|
self.extension = extension
|
|
|
|
self.cached_templates = {}
|
2013-06-04 01:22:54 +03:00
|
|
|
self.templatedirs = templatedirs
|
2013-06-03 23:19:06 +03:00
|
|
|
|
|
|
|
def get(self, name):
|
|
|
|
if name in self.cached_templates:
|
|
|
|
return self.cached_templates[name]
|
2013-06-04 01:22:54 +03:00
|
|
|
for templatedir in self.templatedirs:
|
|
|
|
if self.has_template_in(templatedir, name):
|
|
|
|
return self.get_in(templatedir, name)
|
|
|
|
raise Exception("Found no template " + name + " for "
|
|
|
|
+ self.extension + ".")
|
|
|
|
|
|
|
|
def has_template_in(self, templatedir, name):
|
|
|
|
# FIXME better test
|
|
|
|
return os.path.exists(self.get_template_filename(templatedir, name))
|
|
|
|
|
|
|
|
def get_in(self, templatedir, name):
|
|
|
|
filename = self.get_template_filename(templatedir, name)
|
2013-06-03 23:19:06 +03:00
|
|
|
f = open(filename, "r")
|
|
|
|
template = f.read()
|
|
|
|
f.close()
|
|
|
|
self.cached_templates[name] = template
|
|
|
|
return template
|
|
|
|
|
2013-06-04 01:22:54 +03:00
|
|
|
def get_template_filename(self, templatedir, name):
|
|
|
|
return os.path.join(templatedir,
|
|
|
|
self.extension,
|
|
|
|
name + "." + self.extension)
|
|
|
|
|