| Index: cms/converters.py |
| =================================================================== |
| --- a/cms/converters.py |
| +++ b/cms/converters.py |
| @@ -17,7 +17,6 @@ |
| import os |
| import HTMLParser |
| -import imp |
| import re |
| import jinja2 |
| @@ -327,7 +326,6 @@ |
| "get_page_content": self.get_page_content, |
| } |
| - self._module_refs = [] |
| for dirname, dictionary in [("filters", filters), ("globals", globals)]: |
| for filename in self._params["source"].list_files(dirname): |
| root, ext = os.path.splitext(filename) |
| @@ -335,20 +333,8 @@ |
| continue |
| path = "%s/%s" % (dirname, filename) |
| - code = self._params["source"].read_file(path) |
| - module = imp.new_module(root.replace("/", ".")) |
| - exec code in module.__dict__ |
| - |
| name = os.path.basename(root) |
| - if not hasattr(module, name): |
| - raise Exception("Expected symbol %s not found in %s file %s" % (name, dirname, filename)) |
| - dictionary[name] = getattr(module, name) |
| - |
| - # HACK: The module we created here can be garbage collected because it |
| - # isn't added to sys.modules. If a function is called and its module is |
| - # gone it might cause weird errors (imports and module variables |
| - # unavailable). We avoid this situation by keeping a reference. |
| - self._module_refs.append(module) |
| + dictionary[name] = self._params["source"].import_symbol(path, name) |
| self._env = jinja2.Environment(loader=self._SourceLoader(self._params["source"]), autoescape=True) |
| self._env.filters.update(filters) |