From 45dbbef0428cf4768d2a1677d3c979722e33139a Mon Sep 17 00:00:00 2001 From: "J. Miguel Farto" Date: Sun, 21 Dec 2014 00:51:42 +0100 Subject: [PATCH 1/7] Jinja2 initialization changed and autoescape activated --- sagenb/flask_version/base.py | 26 ++++++++++++++++++-------- sagenb/notebook/template.py | 16 ++++------------ 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/sagenb/flask_version/base.py b/sagenb/flask_version/base.py index a79b2b667..bf85e4ad0 100755 --- a/sagenb/flask_version/base.py +++ b/sagenb/flask_version/base.py @@ -15,8 +15,11 @@ SRC = os.path.join(SAGE_SRC, 'sage') from flask.ext.openid import OpenID from flask.ext.babel import Babel, gettext, ngettext, lazy_gettext, get_locale -from sagenb.misc.misc import SAGENB_ROOT, DATA, SAGE_DOC, translations_path, N_, nN_ - +from sagenb.misc.misc import SAGENB_ROOT, DATA, SAGE_DOC, translations_path, N_, nN_, unicode_str +from json import dumps +from sagenb.notebook.cell import number_of_rows +from sagenb.notebook.template import (css_escape, clean_name, + prettify_time_ago, TEMPLATE_PATH) oid = OpenID() class SageNBFlask(Flask): @@ -55,10 +58,17 @@ def __init__(self, *args, **kwds): self.add_static_path('/doc/static', DOC) #self.add_static_path('/doc/static/reference', os.path.join(SAGE_DOC, 'reference')) - def create_jinja_environment(self): - from sagenb.notebook.template import env - env.globals.update(url_for=url_for) - return env + # Template globals + self.add_template_global(url_for) + # Template filters + self.add_template_filter(css_escape) + self.add_template_filter(number_of_rows) + self.add_template_filter(clean_name) + self.add_template_filter(prettify_time_ago) + self.add_template_filter(max) + self.add_template_filter(lambda x: repr(unicode_str(x))[1:], + name='repr_str') + self.add_template_filter(dumps, 'tojson') def static_view_func(self, root_path, filename): from flask.helpers import send_from_directory @@ -334,7 +344,6 @@ def set_profiles(): return render_template('html/accounts/openid_profile.html', **parse_dict) return redirect(url_for('base.index')) - ############# # OLD STUFF # ############# @@ -410,7 +419,8 @@ def create_app(path_to_notebook, *args, **kwds): ############## # Create app # ############## - app = SageNBFlask('flask_version', startup_token=startup_token) + app = SageNBFlask('flask_version', startup_token=startup_token, + template_folder=TEMPLATE_PATH) app.secret_key = os.urandom(24) oid.init_app(app) app.debug = True diff --git a/sagenb/notebook/template.py b/sagenb/notebook/template.py index f0f48e71d..9e59b5284 100644 --- a/sagenb/notebook/template.py +++ b/sagenb/notebook/template.py @@ -17,11 +17,11 @@ import jinja2 -import os, re, sys, json +import os, re, sys -from sagenb.misc.misc import SAGE_VERSION, DATA, unicode_str -from sagenb.notebook.cell import number_of_rows +from sagenb.misc.misc import SAGE_VERSION, DATA from flask.ext.babel import gettext, ngettext, lazy_gettext +from flask import current_app as app if os.environ.has_key('SAGENB_TEMPLATE_PATH'): if not os.path.isdir(os.environ['SAGENB_TEMPLATE_PATH']): @@ -30,7 +30,6 @@ TEMPLATE_PATH = os.environ['SAGENB_TEMPLATE_PATH'] else: TEMPLATE_PATH = os.path.join(DATA, 'sage') -env = jinja2.Environment(loader=jinja2.FileSystemLoader(TEMPLATE_PATH)) css_illegal_re = re.compile(r'[^-A-Za-z_0-9]') @@ -96,13 +95,6 @@ def clean_name(name): """ return ''.join([x if x.isalnum() else '_' for x in name]) -env.filters['css_escape'] = css_escape -env.filters['number_of_rows'] = number_of_rows -env.filters['clean_name'] = clean_name -env.filters['prettify_time_ago'] = prettify_time_ago -env.filters['max'] = max -env.filters['repr_str'] = lambda x: repr(unicode_str(x))[1:] -env.filters['tojson'] = json.dumps def template(filename, **user_context): """ @@ -143,7 +135,7 @@ def template(filename, **user_context): 'JEDITABLE_TINYMCE': JEDITABLE_TINYMCE, 'conf': notebook.conf() if notebook else None} try: - tmpl = env.get_template(filename) + tmpl = app.jinja_env.get_template(filename) except jinja2.exceptions.TemplateNotFound: return "Notebook Bug -- missing template %s"%filename From 5c6c4b99cd0bb423a1f6f41c9c323452715a0d00 Mon Sep 17 00:00:00 2001 From: "J. Miguel Farto" Date: Sun, 21 Dec 2014 02:22:12 +0100 Subject: [PATCH 2/7] 'safe' added and 'escape' removed from templates --- sagenb/data/sage/html/error_message.html | 2 +- sagenb/data/sage/html/history.html | 2 +- .../data/sage/html/notebook/afterpublish_window.html | 2 +- sagenb/data/sage/html/notebook/base.html | 4 ++-- sagenb/data/sage/html/notebook/cell.html | 12 ++++++------ .../html/notebook/download_or_delete_datafile.html | 2 +- sagenb/data/sage/html/notebook/edit_window.html | 2 +- .../sage/html/notebook/guest_worksheet_page.html | 4 ++-- .../data/sage/html/notebook/plain_text_window.html | 2 +- sagenb/data/sage/html/notebook/print_worksheet.html | 2 +- .../data/sage/html/notebook/specific_revision.html | 2 +- sagenb/data/sage/html/notebook/text_cell.html | 4 ++-- sagenb/data/sage/html/notebook/worksheet.html | 2 +- sagenb/data/sage/html/notebook/worksheet_page.html | 2 +- .../data/sage/html/settings/notebook_settings.html | 2 +- sagenb/data/sage/html/worksheet_listing.html | 8 ++++---- 16 files changed, 27 insertions(+), 27 deletions(-) diff --git a/sagenb/data/sage/html/error_message.html b/sagenb/data/sage/html/error_message.html index 5141bd9c8..f198a05e7 100644 --- a/sagenb/data/sage/html/error_message.html +++ b/sagenb/data/sage/html/error_message.html @@ -12,7 +12,7 @@ {% block main %}
- {{ msg }} + {{ msg | safe }}
{% if cont %}
diff --git a/sagenb/data/sage/html/history.html b/sagenb/data/sage/html/history.html index d6b829678..b96cb48f2 100644 --- a/sagenb/data/sage/html/history.html +++ b/sagenb/data/sage/html/history.html @@ -9,7 +9,7 @@ {% block page_id %}history-page{% endblock %} {% block body %} -
{{ text | escape }}
+
{{ text }}
{{ gettext('Create a new Sage worksheet version of the last 100 commands in the above log.') }} - + {% endblock %} diff --git a/sagenb/data/sage/html/notebook/guest_worksheet_page.html b/sagenb/data/sage/html/notebook/guest_worksheet_page.html index 0994045a1..7e02b169e 100644 --- a/sagenb/data/sage/html/notebook/guest_worksheet_page.html +++ b/sagenb/data/sage/html/notebook/guest_worksheet_page.html @@ -60,8 +60,8 @@

{{ worksheet.name() }}

-

{{ worksheet.html_time_since_last_edited() }}

-{{ worksheet.html(do_print=false, publish=true, username=username) }} +

{{ worksheet.html_time_since_last_edited() | safe }}

+{{ worksheet.html(do_print=false, publish=true, username=username) | safe }}