Index: third_party/jinja2/loaders.py |
diff --git a/third_party/jinja2/loaders.py b/third_party/jinja2/loaders.py |
index a9a2625274c28c36125ecd01f70601194e36d6a1..44aa3925a2d11eb037de0ebab3378f126da12dc8 100644 |
--- a/third_party/jinja2/loaders.py |
+++ b/third_party/jinja2/loaders.py |
@@ -141,20 +141,28 @@ class FileSystemLoader(BaseLoader): |
The loader takes the path to the templates as string, or if multiple |
locations are wanted a list of them which is then looked up in the |
- given order: |
+ given order:: |
>>> loader = FileSystemLoader('/path/to/templates') |
>>> loader = FileSystemLoader(['/path/to/templates', '/other/path']) |
Per default the template encoding is ``'utf-8'`` which can be changed |
by setting the `encoding` parameter to something else. |
+ |
+ To follow symbolic links, set the *followlinks* parameter to ``True``:: |
+ |
+ >>> loader = FileSystemLoader('/path/to/templates', followlinks=True) |
+ |
+ .. versionchanged:: 2.8+ |
+ The *followlinks* parameter was added. |
""" |
- def __init__(self, searchpath, encoding='utf-8'): |
+ def __init__(self, searchpath, encoding='utf-8', followlinks=False): |
if isinstance(searchpath, string_types): |
searchpath = [searchpath] |
self.searchpath = list(searchpath) |
self.encoding = encoding |
+ self.followlinks = followlinks |
def get_source(self, environment, template): |
pieces = split_template_path(template) |
@@ -169,6 +177,7 @@ class FileSystemLoader(BaseLoader): |
f.close() |
mtime = path.getmtime(filename) |
+ |
def uptodate(): |
try: |
return path.getmtime(filename) == mtime |
@@ -180,7 +189,8 @@ class FileSystemLoader(BaseLoader): |
def list_templates(self): |
found = set() |
for searchpath in self.searchpath: |
- for dirpath, dirnames, filenames in os.walk(searchpath): |
+ walk_dir = os.walk(searchpath, followlinks=self.followlinks) |
+ for dirpath, dirnames, filenames in walk_dir: |
for filename in filenames: |
template = os.path.join(dirpath, filename) \ |
[len(searchpath):].strip(os.path.sep) \ |
@@ -281,7 +291,7 @@ class DictLoader(BaseLoader): |
class FunctionLoader(BaseLoader): |
"""A loader that is passed a function which does the loading. The |
- function becomes the name of the template passed and has to return either |
+ function receives the name of the template and has to return either |
an unicode string with the template source, a tuple in the form ``(source, |
filename, uptodatefunc)`` or `None` if the template does not exist. |
@@ -349,7 +359,7 @@ class PrefixLoader(BaseLoader): |
def load(self, environment, name, globals=None): |
loader, local_name = self.get_loader(name) |
try: |
- return loader.load(environment, local_name) |
+ return loader.load(environment, local_name, globals) |
except TemplateNotFound: |
# re-raise the exception with the correct fileame here. |
# (the one that includes the prefix) |