Show More
@@ -192,7 +192,8 class ProjectDashboardHandler(AuthenticatedHandler): | |||||
192 | project = nbm.notebook_dir |
|
192 | project = nbm.notebook_dir | |
193 | self.render( |
|
193 | self.render( | |
194 | 'projectdashboard.html', project=project, |
|
194 | 'projectdashboard.html', project=project, | |
195 |
base_project_url= |
|
195 | base_project_url=self.application.ipython_app.base_project_url, | |
|
196 | base_kernel_url=self.application.ipython_app.base_kernel_url, | |||
196 | read_only=self.read_only, |
|
197 | read_only=self.read_only, | |
197 | logged_in=self.logged_in, |
|
198 | logged_in=self.logged_in, | |
198 | login_available=self.login_available |
|
199 | login_available=self.login_available | |
@@ -255,7 +256,8 class NewHandler(AuthenticatedHandler): | |||||
255 | self.render( |
|
256 | self.render( | |
256 | 'notebook.html', project=project, |
|
257 | 'notebook.html', project=project, | |
257 | notebook_id=notebook_id, |
|
258 | notebook_id=notebook_id, | |
258 |
base_project_url= |
|
259 | base_project_url=self.application.ipython_app.base_project_url, | |
|
260 | base_kernel_url=self.application.ipython_app.base_kernel_url, | |||
259 | kill_kernel=False, |
|
261 | kill_kernel=False, | |
260 | read_only=False, |
|
262 | read_only=False, | |
261 | logged_in=self.logged_in, |
|
263 | logged_in=self.logged_in, | |
@@ -276,7 +278,8 class NamedNotebookHandler(AuthenticatedHandler): | |||||
276 | self.render( |
|
278 | self.render( | |
277 | 'notebook.html', project=project, |
|
279 | 'notebook.html', project=project, | |
278 | notebook_id=notebook_id, |
|
280 | notebook_id=notebook_id, | |
279 |
base_project_url= |
|
281 | base_project_url=self.application.ipython_app.base_project_url, | |
|
282 | base_kernel_url=self.application.ipython_app.base_kernel_url, | |||
280 | kill_kernel=False, |
|
283 | kill_kernel=False, | |
281 | read_only=self.read_only, |
|
284 | read_only=self.read_only, | |
282 | logged_in=self.logged_in, |
|
285 | logged_in=self.logged_in, | |
@@ -297,7 +300,8 class PrintNotebookHandler(AuthenticatedHandler): | |||||
297 | self.render( |
|
300 | self.render( | |
298 | 'printnotebook.html', project=project, |
|
301 | 'printnotebook.html', project=project, | |
299 | notebook_id=notebook_id, |
|
302 | notebook_id=notebook_id, | |
300 |
base_project_url= |
|
303 | base_project_url=self.application.ipython_app.base_project_url, | |
|
304 | base_kernel_url=self.application.ipython_app.base_kernel_url, | |||
301 | kill_kernel=False, |
|
305 | kill_kernel=False, | |
302 | read_only=self.read_only, |
|
306 | read_only=self.read_only, | |
303 | logged_in=self.logged_in, |
|
307 | logged_in=self.logged_in, | |
@@ -637,7 +641,8 class NotebookCopyHandler(AuthenticatedHandler): | |||||
637 | self.render( |
|
641 | self.render( | |
638 | 'notebook.html', project=project, |
|
642 | 'notebook.html', project=project, | |
639 | notebook_id=notebook_id, |
|
643 | notebook_id=notebook_id, | |
640 |
base_project_url= |
|
644 | base_project_url=self.application.ipython_app.base_project_url, | |
|
645 | base_kernel_url=self.application.ipython_app.base_kernel_url, | |||
641 | kill_kernel=False, |
|
646 | kill_kernel=False, | |
642 | read_only=False, |
|
647 | read_only=False, | |
643 | logged_in=self.logged_in, |
|
648 | logged_in=self.logged_in, |
@@ -85,12 +85,23 ipython notebook --port=5555 --ip=* # Listen on port 5555, all interfaces | |||||
85 | """ |
|
85 | """ | |
86 |
|
86 | |||
87 | #----------------------------------------------------------------------------- |
|
87 | #----------------------------------------------------------------------------- | |
|
88 | # Helper functions | |||
|
89 | #----------------------------------------------------------------------------- | |||
|
90 | ||||
|
91 | def url_path_join(a,b): | |||
|
92 | if a.endswith('/') and b.startswith('/'): | |||
|
93 | return a[:-1]+b | |||
|
94 | else: | |||
|
95 | return a+b | |||
|
96 | ||||
|
97 | #----------------------------------------------------------------------------- | |||
88 | # The Tornado web application |
|
98 | # The Tornado web application | |
89 | #----------------------------------------------------------------------------- |
|
99 | #----------------------------------------------------------------------------- | |
90 |
|
100 | |||
91 | class NotebookWebApplication(web.Application): |
|
101 | class NotebookWebApplication(web.Application): | |
92 |
|
102 | |||
93 |
def __init__(self, ipython_app, kernel_manager, notebook_manager, log, |
|
103 | def __init__(self, ipython_app, kernel_manager, notebook_manager, log, | |
|
104 | base_project_url, settings_overrides): | |||
94 | handlers = [ |
|
105 | handlers = [ | |
95 | (r"/", ProjectDashboardHandler), |
|
106 | (r"/", ProjectDashboardHandler), | |
96 | (r"/login", LoginHandler), |
|
107 | (r"/login", LoginHandler), | |
@@ -119,7 +130,14 class NotebookWebApplication(web.Application): | |||||
119 | # allow custom overrides for the tornado web app. |
|
130 | # allow custom overrides for the tornado web app. | |
120 | settings.update(settings_overrides) |
|
131 | settings.update(settings_overrides) | |
121 |
|
132 | |||
122 | super(NotebookWebApplication, self).__init__(handlers, **settings) |
|
133 | # prepend base_project_url onto the patterns that we match | |
|
134 | new_handlers = [] | |||
|
135 | for handler in handlers: | |||
|
136 | pattern = url_path_join(base_project_url, handler[0]) | |||
|
137 | new_handler = tuple([pattern]+list(handler[1:])) | |||
|
138 | new_handlers.append( new_handler ) | |||
|
139 | ||||
|
140 | super(NotebookWebApplication, self).__init__(new_handlers, **settings) | |||
123 |
|
141 | |||
124 | self.kernel_manager = kernel_manager |
|
142 | self.kernel_manager = kernel_manager | |
125 | self.log = log |
|
143 | self.log = log | |
@@ -278,6 +296,11 class NotebookApp(BaseIPythonApplication): | |||||
278 | if not new: |
|
296 | if not new: | |
279 | self.mathjax_url = u'' |
|
297 | self.mathjax_url = u'' | |
280 |
|
298 | |||
|
299 | base_project_url = Unicode('/', config=True, | |||
|
300 | help='''The base URL for the notebook server''') | |||
|
301 | base_kernel_url = Unicode('/', config=True, | |||
|
302 | help='''The base URL for the kernel server''') | |||
|
303 | ||||
281 | mathjax_url = Unicode("", config=True, |
|
304 | mathjax_url = Unicode("", config=True, | |
282 | help="""The url for MathJax.js.""" |
|
305 | help="""The url for MathJax.js.""" | |
283 | ) |
|
306 | ) | |
@@ -333,7 +356,7 class NotebookApp(BaseIPythonApplication): | |||||
333 | """initialize tornado webapp and httpserver""" |
|
356 | """initialize tornado webapp and httpserver""" | |
334 | self.web_app = NotebookWebApplication( |
|
357 | self.web_app = NotebookWebApplication( | |
335 | self, self.kernel_manager, self.notebook_manager, self.log, |
|
358 | self, self.kernel_manager, self.notebook_manager, self.log, | |
336 | self.webapp_settings |
|
359 | self.base_project_url, self.webapp_settings | |
337 | ) |
|
360 | ) | |
338 | if self.certfile: |
|
361 | if self.certfile: | |
339 | ssl_options = dict(certfile=self.certfile) |
|
362 | ssl_options = dict(certfile=self.certfile) |
General Comments 0
You need to be logged in to leave comments.
Login now