From 68d07e4c5ac089db1c47270ca5b1940bc3af714e 2012-08-30 15:50:13 From: Cameron Bates Date: 2012-08-30 15:50:13 Subject: [PATCH] Refactor notebook to use Jinja2 instead of tornado templates --- diff --git a/IPython/frontend/html/notebook/handlers.py b/IPython/frontend/html/notebook/handlers.py index 9d50415..2414757 100644 --- a/IPython/frontend/html/notebook/handlers.py +++ b/IPython/frontend/html/notebook/handlers.py @@ -27,10 +27,13 @@ import stat import threading import time import uuid +import os from tornado import web from tornado import websocket +from jinja2 import Environment, FileSystemLoader + from zmq.eventloop import ioloop from zmq.utils import jsonapi @@ -210,27 +213,29 @@ class ProjectDashboardHandler(AuthenticatedHandler): def get(self): nbm = self.application.notebook_manager project = nbm.notebook_dir - self.render( - 'projectdashboard.html', project=project, + env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath("."), "IPython/frontend/html/notebook/templates"))) + nb = env.get_template('projectdashboard.html') + self.write( nb.render(project=project, base_project_url=self.application.ipython_app.base_project_url, base_kernel_url=self.application.ipython_app.base_kernel_url, read_only=self.read_only, logged_in=self.logged_in, - login_available=self.login_available - ) + login_available=self.login_available)) class LoginHandler(AuthenticatedHandler): def _render(self, message=None): - self.render('login.html', + env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath("."), "IPython/frontend/html/notebook/templates"))) + nb = env.get_template('login.html') + self.write( nb.render( next=self.get_argument('next', default=self.application.ipython_app.base_project_url), read_only=self.read_only, logged_in=self.logged_in, login_available=self.login_available, base_project_url=self.application.ipython_app.base_project_url, message=message - ) + )) def get(self): if self.current_user: @@ -260,12 +265,14 @@ class LogoutHandler(AuthenticatedHandler): message = {'warning': 'Cannot log out. Notebook authentication ' 'is disabled.'} - self.render('logout.html', + env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath("."), "IPython/frontend/html/notebook/templates"))) + nb = env.get_template('logout.html') + self.write( nb.render( read_only=self.read_only, logged_in=self.logged_in, login_available=self.login_available, base_project_url=self.application.ipython_app.base_project_url, - message=message) + message=message)) class NewHandler(AuthenticatedHandler): @@ -277,7 +284,6 @@ class NewHandler(AuthenticatedHandler): notebook_id = nbm.new_notebook() self.redirect('/'+urljoin(self.application.ipython_app.base_project_url, notebook_id)) - class NamedNotebookHandler(AuthenticatedHandler): @authenticate_unless_readonly @@ -286,9 +292,9 @@ class NamedNotebookHandler(AuthenticatedHandler): project = nbm.notebook_dir if not nbm.notebook_exists(notebook_id): raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id) - - self.render( - 'notebook.html', project=project, + env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath("."), "IPython/frontend/html/notebook/templates"))) + nb = env.get_template('notebook/notebook.html') + self.write( nb.render(project=project, notebook_id=notebook_id, base_project_url=self.application.ipython_app.base_project_url, base_kernel_url=self.application.ipython_app.base_kernel_url, @@ -296,8 +302,7 @@ class NamedNotebookHandler(AuthenticatedHandler): read_only=self.read_only, logged_in=self.logged_in, login_available=self.login_available, - mathjax_url=self.application.ipython_app.mathjax_url, - ) + mathjax_url=self.application.ipython_app.mathjax_url,)) class PrintNotebookHandler(AuthenticatedHandler): @@ -309,8 +314,10 @@ class PrintNotebookHandler(AuthenticatedHandler): if not nbm.notebook_exists(notebook_id): raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id) - self.render( - 'printnotebook.html', project=project, + env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath("."), "IPython/frontend/html/notebook/templates"))) + nb = env.get_template('printnotebook.html') + self.write( nb.render( + project=project, notebook_id=notebook_id, base_project_url=self.application.ipython_app.base_project_url, base_kernel_url=self.application.ipython_app.base_kernel_url, @@ -319,7 +326,7 @@ class PrintNotebookHandler(AuthenticatedHandler): logged_in=self.logged_in, login_available=self.login_available, mathjax_url=self.application.ipython_app.mathjax_url, - ) + )) #----------------------------------------------------------------------------- # Kernel handlers diff --git a/IPython/frontend/html/notebook/templates/notebook.html b/IPython/frontend/html/notebook/templates/notebook/notebook.html similarity index 96% rename from IPython/frontend/html/notebook/templates/notebook.html rename to IPython/frontend/html/notebook/templates/notebook/notebook.html index 69d99b7..9aa20c2 100644 --- a/IPython/frontend/html/notebook/templates/notebook.html +++ b/IPython/frontend/html/notebook/templates/notebook/notebook.html @@ -1,9 +1,10 @@ -{% extends page.html %} +{% extends "page.html" %} + {% block stylesheet %} {% if mathjax_url %} -{% end %} +{% endif %} +{% endblock %} + + -{% end %} diff --git a/IPython/frontend/html/notebook/templates/page.html b/IPython/frontend/html/notebook/templates/page.html index 311d83a..8c9d73d 100644 --- a/IPython/frontend/html/notebook/templates/page.html +++ b/IPython/frontend/html/notebook/templates/page.html @@ -1,26 +1,31 @@ + + +{% macro static_url(name) -%} + /static/{{ name }} +{%- endmacro %} - {% block title %}IPython Notebook{% end %} + {% block title %}IPython Notebook{% endblock %} {% block stylesheet %} - {% end %} + {% endblock %} {% block meta %} - {% end %} + {% endblock %} - +
{% block site %} -{% end %} +{% endblock %}
@@ -53,7 +58,7 @@ {% block script %} -{% end %} +{% endblock %} diff --git a/IPython/frontend/html/notebook/templates/projectdashboard.html b/IPython/frontend/html/notebook/templates/projectdashboard.html index 9d91be3..0c49f70 100644 --- a/IPython/frontend/html/notebook/templates/projectdashboard.html +++ b/IPython/frontend/html/notebook/templates/projectdashboard.html @@ -1,11 +1,11 @@ -{% extends page.html %} +{% extends "page.html" %} -{% block title %}IPython Dashboard{% end %} +{% block title %}IPython Dashboard{% endblock %} {% block stylesheet %} - -{% end %} + +{% endblock %} {% block params %} @@ -15,7 +15,7 @@ data-base-project-url={{base_project_url}} data-base-kernel-url={{base_kernel_url}} data-read-only={{read_only}} -{% end %} +{% endblock %} {% block site %} @@ -42,7 +42,7 @@ data-read-only={{read_only}} - {% end %} + {% endif %}

{{project}}

@@ -72,10 +72,10 @@ data-read-only={{read_only}}
-{% end %} +{% endblock %} {% block script %} -{% end %} +{% endblock %}