Browse Source

normpath is now used before loading templates

pull/112/head
Armin Ronacher 14 years ago
parent
commit
a3a843999b
  1. 3
      CHANGES
  2. 4
      flask/templating.py
  3. 2
      tests/flask_tests.py
  4. 5
      tests/moduleapp/apps/admin/__init__.py

3
CHANGES

@ -25,6 +25,9 @@ Bugfix release, release date to be announced.
- Fixed an issue where the default `OPTIONS` response was - Fixed an issue where the default `OPTIONS` response was
not exposing all valid methods in the `Allow` header. not exposing all valid methods in the `Allow` header.
- Jinja2 template loading syntax now allows "./" in front of
a template load path. Previously this caused issues with
module setups.
Version 0.6 Version 0.6
----------- -----------

4
flask/templating.py

@ -8,6 +8,7 @@
:copyright: (c) 2010 by Armin Ronacher. :copyright: (c) 2010 by Armin Ronacher.
:license: BSD, see LICENSE for more details. :license: BSD, see LICENSE for more details.
""" """
import posixpath
from jinja2 import BaseLoader, TemplateNotFound from jinja2 import BaseLoader, TemplateNotFound
from .globals import _request_ctx_stack from .globals import _request_ctx_stack
@ -36,6 +37,9 @@ class _DispatchingJinjaLoader(BaseLoader):
self.app = app self.app = app
def get_source(self, environment, template): def get_source(self, environment, template):
template = posixpath.normpath(template)
if template.startswith('../'):
raise TemplateNotFound(template)
loader = None loader = None
try: try:
module, name = template.split('/', 1) module, name = template.split('/', 1)

2
tests/flask_tests.py

@ -789,6 +789,8 @@ class ModuleTestCase(unittest.TestCase):
assert rv.data == 'Hello from the Frontend' assert rv.data == 'Hello from the Frontend'
rv = c.get('/admin/') rv = c.get('/admin/')
assert rv.data == 'Hello from the Admin' assert rv.data == 'Hello from the Admin'
rv = c.get('/admin/index2')
assert rv.data == 'Hello from the Admin'
rv = c.get('/admin/static/test.txt') rv = c.get('/admin/static/test.txt')
assert rv.data.strip() == 'Admin File' assert rv.data.strip() == 'Admin File'
rv = c.get('/admin/static/css/test.css') rv = c.get('/admin/static/css/test.css')

5
tests/moduleapp/apps/admin/__init__.py

@ -7,3 +7,8 @@ admin = Module(__name__, url_prefix='/admin')
@admin.route('/') @admin.route('/')
def index(): def index():
return render_template('admin/index.html') return render_template('admin/index.html')
@admin.route('/index2')
def index2():
return render_template('./admin/index.html')

Loading…
Cancel
Save