Browse files

render_template calls no longer need changing for blueprints. They ne…

…ed new paths though :(
  • Loading branch information...
1 parent 37fab78 commit 0fcbe0a47895a1d1106b50420fe696e04520b621 @mitsuhiko mitsuhiko committed Jun 17, 2011
Showing with 6 additions and 69 deletions.
  1. +6 −69 scripts/flask-07-upgrade.py
View
75 scripts/flask-07-upgrade.py
@@ -21,7 +21,6 @@
"""
import re
import os
-import sys
import inspect
import difflib
import posixpath
@@ -177,37 +176,7 @@ def rewrite_blueprint_imports(contents):
return ''.join(new_file)
-def rewrite_render_template_calls(contents, module_declarations):
- mapping = dict(module_declarations)
- annotated_lines = []
-
- def make_line_annotations():
- if not annotated_lines:
- last_index = 0
- for line in contents.splitlines(True):
- last_index += len(line)
- annotated_lines.append((last_index, line))
-
- def backtrack_module_name(call_start):
- make_line_annotations()
- for idx, (line_end, line) in enumerate(annotated_lines):
- if line_end > call_start:
- for _, line in reversed(annotated_lines[:idx]):
- match = _mod_route_re.search(line)
- if match is not None:
- shortname = match.group(1)
- return mapping.get(shortname)
-
- def handle_match(match):
- template_name = ast.literal_eval(match.group(2))
- modname = backtrack_module_name(match.start())
- if modname is not None and template_name.startswith(modname + '/'):
- template_name = modname + ':' + template_name[len(modname) + 1:]
- return match.group(1) + repr(template_name)
- return _render_template_re.sub(handle_match, contents)
-
-
-def rewrite_for_blueprints(contents, filename, template_bundles=False):
+def rewrite_for_blueprints(contents, filename):
modules_declared = []
def handle_match(match):
target = match.group(1)
@@ -222,21 +191,17 @@ def handle_match(match):
if modules_declared:
new_contents = rewrite_blueprint_imports(new_contents)
- if template_bundles:
- new_contents = rewrite_render_template_calls(new_contents,
- modules_declared)
for pattern, replacement in _blueprint_related:
new_contents = pattern.sub(replacement, new_contents)
return new_contents
-def upgrade_python_file(filename, contents, teardown, template_bundles):
+def upgrade_python_file(filename, contents, teardown):
new_contents = fix_url_for(contents)
if teardown:
new_contents = fix_teardown_funcs(new_contents)
- new_contents = rewrite_for_blueprints(new_contents, filename,
- template_bundles)
+ new_contents = rewrite_for_blueprints(new_contents, filename)
new_contents = _error_handler_re.sub('\\1.error_handler_spec[None][\\2]',
new_contents)
make_diff(filename, contents, new_contents)
@@ -266,32 +231,16 @@ def walk_path(path):
yield filename, 'template'
-def scan_path(path=None, teardown=True, template_bundles=True):
+def scan_path(path=None, teardown=True):
for filename, type in walk_path(path):
with open(filename) as f:
contents = f.read()
if type == 'python':
- upgrade_python_file(filename, contents, teardown,
- template_bundles)
+ upgrade_python_file(filename, contents, teardown)
elif type == 'template':
upgrade_template_file(filename, contents)
-def autodetect_template_bundles(paths):
- folders_with_templates = set()
- for path in paths:
- for filename, type in walk_path(path):
- if type == 'template':
- fullpath = filename.replace(os.path.sep, '/')
- index = fullpath.find('/templates/')
- if index >= 0:
- folder = fullpath[:index]
- else:
- folder = posixpath.dirname(fullpath)
- folders_with_templates.add(folder)
- return len(folders_with_templates) > 1
-
-
def main():
"""Entrypoint"""
parser = OptionParser(usage='%prog [options] [paths]')
@@ -302,10 +251,6 @@ def main():
action='store_true', help='Indicate to the system '
'that templates are bundled with modules. Default '
'is auto detect.')
- parser.add_option('-B', '--no-bundled-templates', dest='no_bundled_tmpl',
- action='store_true', help='Indicate to the system '
- 'that templates are not bundled with modules. '
- 'Default is auto detect')
options, args = parser.parse_args()
if not args:
args = ['.']
@@ -315,16 +260,8 @@ def main():
'The runtime requirements for Flask 0.7 however are still '
'Python 2.5.')
- if options.no_bundled_tmpl:
- template_bundles = False
- elif options.bundled_tmpl:
- template_bundles = True
- else:
- template_bundles = autodetect_template_bundles(args)
-
for path in args:
- scan_path(path, teardown=not options.no_teardown,
- template_bundles=template_bundles)
+ scan_path(path, teardown=not options.no_teardown)
if __name__ == '__main__':

0 comments on commit 0fcbe0a

Please sign in to comment.