Show More
@@ -27,10 +27,13 b' import stat' | |||||
27 | import threading |
|
27 | import threading | |
28 | import time |
|
28 | import time | |
29 | import uuid |
|
29 | import uuid | |
|
30 | import os | |||
30 |
|
31 | |||
31 | from tornado import web |
|
32 | from tornado import web | |
32 | from tornado import websocket |
|
33 | from tornado import websocket | |
33 |
|
34 | |||
|
35 | from jinja2 import Environment, FileSystemLoader | |||
|
36 | ||||
34 | from zmq.eventloop import ioloop |
|
37 | from zmq.eventloop import ioloop | |
35 | from zmq.utils import jsonapi |
|
38 | from zmq.utils import jsonapi | |
36 |
|
39 | |||
@@ -210,27 +213,29 b' class ProjectDashboardHandler(AuthenticatedHandler):' | |||||
210 | def get(self): |
|
213 | def get(self): | |
211 | nbm = self.application.notebook_manager |
|
214 | nbm = self.application.notebook_manager | |
212 | project = nbm.notebook_dir |
|
215 | project = nbm.notebook_dir | |
213 | self.render( |
|
216 | env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath("."), "IPython/frontend/html/notebook/templates"))) | |
214 |
|
|
217 | nb = env.get_template('projectdashboard.html') | |
|
218 | self.write( nb.render(project=project, | |||
215 | base_project_url=self.application.ipython_app.base_project_url, |
|
219 | base_project_url=self.application.ipython_app.base_project_url, | |
216 | base_kernel_url=self.application.ipython_app.base_kernel_url, |
|
220 | base_kernel_url=self.application.ipython_app.base_kernel_url, | |
217 | read_only=self.read_only, |
|
221 | read_only=self.read_only, | |
218 | logged_in=self.logged_in, |
|
222 | logged_in=self.logged_in, | |
219 | login_available=self.login_available |
|
223 | login_available=self.login_available)) | |
220 | ) |
|
|||
221 |
|
224 | |||
222 |
|
225 | |||
223 | class LoginHandler(AuthenticatedHandler): |
|
226 | class LoginHandler(AuthenticatedHandler): | |
224 |
|
227 | |||
225 | def _render(self, message=None): |
|
228 | def _render(self, message=None): | |
226 | self.render('login.html', |
|
229 | env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath("."), "IPython/frontend/html/notebook/templates"))) | |
|
230 | nb = env.get_template('login.html') | |||
|
231 | self.write( nb.render( | |||
227 | next=self.get_argument('next', default=self.application.ipython_app.base_project_url), |
|
232 | next=self.get_argument('next', default=self.application.ipython_app.base_project_url), | |
228 | read_only=self.read_only, |
|
233 | read_only=self.read_only, | |
229 | logged_in=self.logged_in, |
|
234 | logged_in=self.logged_in, | |
230 | login_available=self.login_available, |
|
235 | login_available=self.login_available, | |
231 | base_project_url=self.application.ipython_app.base_project_url, |
|
236 | base_project_url=self.application.ipython_app.base_project_url, | |
232 | message=message |
|
237 | message=message | |
233 | ) |
|
238 | )) | |
234 |
|
239 | |||
235 | def get(self): |
|
240 | def get(self): | |
236 | if self.current_user: |
|
241 | if self.current_user: | |
@@ -260,12 +265,14 b' class LogoutHandler(AuthenticatedHandler):' | |||||
260 | message = {'warning': 'Cannot log out. Notebook authentication ' |
|
265 | message = {'warning': 'Cannot log out. Notebook authentication ' | |
261 | 'is disabled.'} |
|
266 | 'is disabled.'} | |
262 |
|
267 | |||
263 | self.render('logout.html', |
|
268 | env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath("."), "IPython/frontend/html/notebook/templates"))) | |
|
269 | nb = env.get_template('logout.html') | |||
|
270 | self.write( nb.render( | |||
264 | read_only=self.read_only, |
|
271 | read_only=self.read_only, | |
265 | logged_in=self.logged_in, |
|
272 | logged_in=self.logged_in, | |
266 | login_available=self.login_available, |
|
273 | login_available=self.login_available, | |
267 | base_project_url=self.application.ipython_app.base_project_url, |
|
274 | base_project_url=self.application.ipython_app.base_project_url, | |
268 | message=message) |
|
275 | message=message)) | |
269 |
|
276 | |||
270 |
|
277 | |||
271 | class NewHandler(AuthenticatedHandler): |
|
278 | class NewHandler(AuthenticatedHandler): | |
@@ -277,7 +284,6 b' class NewHandler(AuthenticatedHandler):' | |||||
277 | notebook_id = nbm.new_notebook() |
|
284 | notebook_id = nbm.new_notebook() | |
278 | self.redirect('/'+urljoin(self.application.ipython_app.base_project_url, notebook_id)) |
|
285 | self.redirect('/'+urljoin(self.application.ipython_app.base_project_url, notebook_id)) | |
279 |
|
286 | |||
280 |
|
||||
281 | class NamedNotebookHandler(AuthenticatedHandler): |
|
287 | class NamedNotebookHandler(AuthenticatedHandler): | |
282 |
|
288 | |||
283 | @authenticate_unless_readonly |
|
289 | @authenticate_unless_readonly | |
@@ -286,9 +292,9 b' class NamedNotebookHandler(AuthenticatedHandler):' | |||||
286 | project = nbm.notebook_dir |
|
292 | project = nbm.notebook_dir | |
287 | if not nbm.notebook_exists(notebook_id): |
|
293 | if not nbm.notebook_exists(notebook_id): | |
288 | raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id) |
|
294 | raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id) | |
289 |
|
295 | env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath("."), "IPython/frontend/html/notebook/templates"))) | ||
290 | self.render( |
|
296 | nb = env.get_template('notebook/notebook.html') | |
291 |
|
|
297 | self.write( nb.render(project=project, | |
292 | notebook_id=notebook_id, |
|
298 | notebook_id=notebook_id, | |
293 | base_project_url=self.application.ipython_app.base_project_url, |
|
299 | base_project_url=self.application.ipython_app.base_project_url, | |
294 | base_kernel_url=self.application.ipython_app.base_kernel_url, |
|
300 | base_kernel_url=self.application.ipython_app.base_kernel_url, | |
@@ -296,8 +302,7 b' class NamedNotebookHandler(AuthenticatedHandler):' | |||||
296 | read_only=self.read_only, |
|
302 | read_only=self.read_only, | |
297 | logged_in=self.logged_in, |
|
303 | logged_in=self.logged_in, | |
298 | login_available=self.login_available, |
|
304 | login_available=self.login_available, | |
299 | mathjax_url=self.application.ipython_app.mathjax_url, |
|
305 | mathjax_url=self.application.ipython_app.mathjax_url,)) | |
300 | ) |
|
|||
301 |
|
306 | |||
302 |
|
307 | |||
303 | class PrintNotebookHandler(AuthenticatedHandler): |
|
308 | class PrintNotebookHandler(AuthenticatedHandler): | |
@@ -309,8 +314,10 b' class PrintNotebookHandler(AuthenticatedHandler):' | |||||
309 | if not nbm.notebook_exists(notebook_id): |
|
314 | if not nbm.notebook_exists(notebook_id): | |
310 | raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id) |
|
315 | raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id) | |
311 |
|
316 | |||
312 | self.render( |
|
317 | env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath("."), "IPython/frontend/html/notebook/templates"))) | |
313 | 'printnotebook.html', project=project, |
|
318 | nb = env.get_template('printnotebook.html') | |
|
319 | self.write( nb.render( | |||
|
320 | project=project, | |||
314 | notebook_id=notebook_id, |
|
321 | notebook_id=notebook_id, | |
315 | base_project_url=self.application.ipython_app.base_project_url, |
|
322 | base_project_url=self.application.ipython_app.base_project_url, | |
316 | base_kernel_url=self.application.ipython_app.base_kernel_url, |
|
323 | base_kernel_url=self.application.ipython_app.base_kernel_url, | |
@@ -319,7 +326,7 b' class PrintNotebookHandler(AuthenticatedHandler):' | |||||
319 | logged_in=self.logged_in, |
|
326 | logged_in=self.logged_in, | |
320 | login_available=self.login_available, |
|
327 | login_available=self.login_available, | |
321 | mathjax_url=self.application.ipython_app.mathjax_url, |
|
328 | mathjax_url=self.application.ipython_app.mathjax_url, | |
322 | ) |
|
329 | )) | |
323 |
|
330 | |||
324 | #----------------------------------------------------------------------------- |
|
331 | #----------------------------------------------------------------------------- | |
325 | # Kernel handlers |
|
332 | # Kernel handlers |
@@ -1,9 +1,10 b'' | |||||
1 | {% extends page.html %} |
|
1 | {% extends "page.html" %} | |
|
2 | ||||
2 | {% block stylesheet %} |
|
3 | {% block stylesheet %} | |
3 |
|
4 | |||
4 | {% if mathjax_url %} |
|
5 | {% if mathjax_url %} | |
5 | <script type="text/javascript" src="{{mathjax_url}}?config=TeX-AMS_HTML" charset="utf-8"></script> |
|
6 | <script type="text/javascript" src="{{mathjax_url}}?config=TeX-AMS_HTML" charset="utf-8"></script> | |
6 | {% end %} |
|
7 | {% endif %} | |
7 | <script type="text/javascript"> |
|
8 | <script type="text/javascript"> | |
8 | // MathJax disabled, set as null to distingish from *missing* MathJax, |
|
9 | // MathJax disabled, set as null to distingish from *missing* MathJax, | |
9 | // where it will be undefined, and should prompt a dialog later. |
|
10 | // where it will be undefined, and should prompt a dialog later. | |
@@ -20,9 +21,7 b' window.mathjax_url = "{{mathjax_url}}";' | |||||
20 | <link rel="stylesheet" href="{{ static_url("css/renderedhtml.css") }}" type="text/css" /> |
|
21 | <link rel="stylesheet" href="{{ static_url("css/renderedhtml.css") }}" type="text/css" /> | |
21 |
|
22 | |||
22 | <link rel="stylesheet" href="{{ static_url("css/printnotebook.css") }}" type="text/css" media="print"/> |
|
23 | <link rel="stylesheet" href="{{ static_url("css/printnotebook.css") }}" type="text/css" media="print"/> | |
23 |
|
24 | {% endblock %} | ||
24 | {% end %} |
|
|||
25 |
|
||||
26 |
|
25 | |||
27 | {% block params %} |
|
26 | {% block params %} | |
28 |
|
27 | |||
@@ -32,7 +31,7 b' data-base-kernel-url={{base_kernel_url}}' | |||||
32 | data-read-only={{read_only and not logged_in}} |
|
31 | data-read-only={{read_only and not logged_in}} | |
33 | data-notebook-id={{notebook_id}} |
|
32 | data-notebook-id={{notebook_id}} | |
34 |
|
33 | |||
35 | {% end %} |
|
34 | {% endblock %} | |
36 |
|
35 | |||
37 |
|
36 | |||
38 | {% block header %} |
|
37 | {% block header %} | |
@@ -42,7 +41,7 b' data-notebook-id={{notebook_id}}' | |||||
42 | <span id="save_status"></span> |
|
41 | <span id="save_status"></span> | |
43 | </span> |
|
42 | </span> | |
44 |
|
43 | |||
45 | {% end %} |
|
44 | {% endblock %} | |
46 |
|
45 | |||
47 |
|
46 | |||
48 | {% block site %} |
|
47 | {% block site %} | |
@@ -207,7 +206,7 b' data-notebook-id={{notebook_id}}' | |||||
207 | <div id='tooltip' class='tooltip ui-corner-all' style='display:none'></div> |
|
206 | <div id='tooltip' class='tooltip ui-corner-all' style='display:none'></div> | |
208 |
|
207 | |||
209 |
|
208 | |||
210 | {% end %} |
|
209 | {% endblock %} | |
211 |
|
210 | |||
212 |
|
211 | |||
213 | {% block script %} |
|
212 | {% block script %} | |
@@ -248,5 +247,7 b' data-notebook-id={{notebook_id}}' | |||||
248 | <script src="{{ static_url("js/notebookmain.js") }}" type="text/javascript" charset="utf-8"></script> |
|
247 | <script src="{{ static_url("js/notebookmain.js") }}" type="text/javascript" charset="utf-8"></script> | |
249 |
|
248 | |||
250 | <script src="{{ static_url("js/contexthint.js") }}" charset="utf-8"></script> |
|
249 | <script src="{{ static_url("js/contexthint.js") }}" charset="utf-8"></script> | |
|
250 | {% endblock %} | |||
|
251 | ||||
|
252 | ||||
251 |
|
253 | |||
252 | {% end %} |
|
@@ -1,26 +1,31 b'' | |||||
|
1 | ||||
|
2 | ||||
1 | <!DOCTYPE HTML> |
|
3 | <!DOCTYPE HTML> | |
|
4 | {% macro static_url(name) -%} | |||
|
5 | /static/{{ name }} | |||
|
6 | {%- endmacro %} | |||
2 | <html> |
|
7 | <html> | |
3 |
|
8 | |||
4 | <head> |
|
9 | <head> | |
5 | <meta charset="utf-8"> |
|
10 | <meta charset="utf-8"> | |
6 |
|
11 | |||
7 | <title>{% block title %}IPython Notebook{% end %}</title> |
|
12 | <title>{% block title %}IPython Notebook{% endblock %}</title> | |
8 |
|
13 | |||
9 | <link rel="stylesheet" href="{{static_url("jquery/css/themes/base/jquery-ui.min.css") }}" type="text/css" /> |
|
14 | <link rel="stylesheet" href="{{static_url("jquery/css/themes/base/jquery-ui.min.css") }}" type="text/css" /> | |
10 | <link rel="stylesheet" href="{{static_url("css/boilerplate.css") }}" type="text/css" /> |
|
15 | <link rel="stylesheet" href="{{static_url("css/boilerplate.css") }}" type="text/css" /> | |
11 | <link rel="stylesheet" href="{{static_url("css/fbm.css") }}" type="text/css" /> |
|
16 | <link rel="stylesheet" href="{{static_url("css/fbm.css") }}" type="text/css" /> | |
12 | <link rel="stylesheet" href="{{static_url("css/page.css") }}" type="text/css"/> |
|
17 | <link rel="stylesheet" href="{{static_url("css/page.css") }}" type="text/css"/> | |
13 | {% block stylesheet %} |
|
18 | {% block stylesheet %} | |
14 | {% end %} |
|
19 | {% endblock %} | |
15 | <link rel="stylesheet" href="{{ static_url("css/custom.css") }}" type="text/css" /> |
|
20 | <link rel="stylesheet" href="{{ static_url("css/custom.css") }}" type="text/css" /> | |
16 |
|
21 | |||
17 |
|
22 | |||
18 | {% block meta %} |
|
23 | {% block meta %} | |
19 | {% end %} |
|
24 | {% endblock %} | |
20 |
|
25 | |||
21 | </head> |
|
26 | </head> | |
22 |
|
27 | |||
23 | <body {% block params %}{% end %}> |
|
28 | <body {% block params %}{% endblock %}> | |
24 |
|
29 | |||
25 | <div id="header"> |
|
30 | <div id="header"> | |
26 | <span id="ipython_notebook"><h1><a href={{base_project_url}} alt='dashboard'><img src='{{static_url("ipynblogo.png") }}' alt='IPython Notebook'/></a></h1></span> |
|
31 | <span id="ipython_notebook"><h1><a href={{base_project_url}} alt='dashboard'><img src='{{static_url("ipynblogo.png") }}' alt='IPython Notebook'/></a></h1></span> | |
@@ -32,18 +37,18 b'' | |||||
32 | <button id="logout">Logout</button> |
|
37 | <button id="logout">Logout</button> | |
33 | {% elif login_available and not logged_in %} |
|
38 | {% elif login_available and not logged_in %} | |
34 | <button id="login">Login</button> |
|
39 | <button id="login">Login</button> | |
35 | {% end %} |
|
40 | {% endif %} | |
36 | </span> |
|
41 | </span> | |
37 |
|
42 | |||
38 | {% end %} |
|
43 | {% endblock %} | |
39 |
|
44 | |||
40 | {% block header %} |
|
45 | {% block header %} | |
41 | {% end %} |
|
46 | {% endblock %} | |
42 | </div> |
|
47 | </div> | |
43 |
|
48 | |||
44 | <div id="site"> |
|
49 | <div id="site"> | |
45 | {% block site %} |
|
50 | {% block site %} | |
46 | {% end %} |
|
51 | {% endblock %} | |
47 | </div> |
|
52 | </div> | |
48 |
|
53 | |||
49 | <script src="{{static_url("jquery/js/jquery-1.7.1.min.js") }}" type="text/javascript" charset="utf-8"></script> |
|
54 | <script src="{{static_url("jquery/js/jquery-1.7.1.min.js") }}" type="text/javascript" charset="utf-8"></script> | |
@@ -53,7 +58,7 b'' | |||||
53 | <script src="{{static_url("js/loginwidget.js") }}" type="text/javascript" charset="utf-8"></script> |
|
58 | <script src="{{static_url("js/loginwidget.js") }}" type="text/javascript" charset="utf-8"></script> | |
54 |
|
59 | |||
55 | {% block script %} |
|
60 | {% block script %} | |
56 | {% end %} |
|
61 | {% endblock %} | |
57 |
|
62 | |||
58 | <script src="{{static_url("js/custom.js") }}" type="text/javascript" charset="utf-8"></script> |
|
63 | <script src="{{static_url("js/custom.js") }}" type="text/javascript" charset="utf-8"></script> | |
59 |
|
64 |
@@ -1,11 +1,11 b'' | |||||
1 | {% extends page.html %} |
|
1 | {% extends "page.html" %} | |
2 |
|
2 | |||
3 | {% block title %}IPython Dashboard{% end %} |
|
3 | {% block title %}IPython Dashboard{% endblock %} | |
4 |
|
4 | |||
5 | {% block stylesheet %} |
|
5 | {% block stylesheet %} | |
6 | <link rel="stylesheet" href="{{static_url("css/projectdashboard.css") }}" type="text/css" /> |
|
6 | <link rel="stylesheet" href="{{static_url("css/projectdashboard.css") }}" type="text/css" /> | |
7 |
|
|
7 | <link rel="stylesheet" href="{{static_url("css/alternateuploadform.css") }}" type="text/css" /> | |
8 | {% end %} |
|
8 | {% endblock %} | |
9 |
|
9 | |||
10 |
|
10 | |||
11 | {% block params %} |
|
11 | {% block params %} | |
@@ -15,7 +15,7 b' data-base-project-url={{base_project_url}}' | |||||
15 | data-base-kernel-url={{base_kernel_url}} |
|
15 | data-base-kernel-url={{base_kernel_url}} | |
16 | data-read-only={{read_only}} |
|
16 | data-read-only={{read_only}} | |
17 |
|
17 | |||
18 | {% end %} |
|
18 | {% endblock %} | |
19 |
|
19 | |||
20 |
|
20 | |||
21 | {% block site %} |
|
21 | {% block site %} | |
@@ -42,7 +42,7 b' data-read-only={{read_only}}' | |||||
42 | <button id="new_notebook" title="Create new notebook">New Notebook</button> |
|
42 | <button id="new_notebook" title="Create new notebook">New Notebook</button> | |
43 | </span> |
|
43 | </span> | |
44 | </div> |
|
44 | </div> | |
45 | {% end %} |
|
45 | {% endif %} | |
46 |
|
46 | |||
47 | <div id="notebook_list"> |
|
47 | <div id="notebook_list"> | |
48 | <div id="project_name"><h2>{{project}}</h2></div> |
|
48 | <div id="project_name"><h2>{{project}}</h2></div> | |
@@ -72,10 +72,10 b' data-read-only={{read_only}}' | |||||
72 |
|
72 | |||
73 | </div> |
|
73 | </div> | |
74 |
|
74 | |||
75 | {% end %} |
|
75 | {% endblock %} | |
76 |
|
76 | |||
77 | {% block script %} |
|
77 | {% block script %} | |
78 | <script src="{{static_url("js/notebooklist.js") }}" type="text/javascript" charset="utf-8"></script> |
|
78 | <script src="{{static_url("js/notebooklist.js") }}" type="text/javascript" charset="utf-8"></script> | |
79 | <script src="{{static_url("js/clusterlist.js") }}" type="text/javascript" charset="utf-8"></script> |
|
79 | <script src="{{static_url("js/clusterlist.js") }}" type="text/javascript" charset="utf-8"></script> | |
80 | <script src="{{static_url("js/projectdashboardmain.js") }}" type="text/javascript" charset="utf-8"></script> |
|
80 | <script src="{{static_url("js/projectdashboardmain.js") }}" type="text/javascript" charset="utf-8"></script> | |
81 | {% end %} |
|
81 | {% endblock %} |
General Comments 0
You need to be logged in to leave comments.
Login now