simplify handler setup with default_handlers in modules

like IPython's, but a bit simpler since we don't have
so many services to deal with.
This commit is contained in:
MinRK
2014-09-13 22:41:06 -07:00
parent 53edc0b2f7
commit a245641886
6 changed files with 40 additions and 25 deletions

View File

@@ -1 +1,7 @@
from .auth import * from . import auth, users
from .auth import *
from .users import *
default_handlers = []
for mod in (auth, users):
default_handlers.extend(mod.default_handlers)

View File

@@ -20,3 +20,7 @@ class AuthorizationsAPIHandler(BaseHandler):
self.write(json.dumps({ self.write(json.dumps({
'user' : orm_token.user.name, 'user' : orm_token.user.name,
})) }))
default_handlers = [
(r"/api/authorizations/([^/]+)", AuthorizationsAPIHandler),
]

View File

@@ -14,29 +14,19 @@ from jinja2 import Environment, FileSystemLoader
import tornado.httpserver import tornado.httpserver
import tornado.options import tornado.options
from tornado.ioloop import IOLoop from tornado.ioloop import IOLoop
from tornado.log import LogFormatter, app_log from tornado.log import LogFormatter
from tornado import gen, web from tornado import gen, web
from IPython.utils.traitlets import ( from IPython.utils.traitlets import (
Unicode, Integer, Dict, TraitError, List, Instance, Bool, Bytes, Any, Unicode, Integer, Dict, TraitError, List, Bool, Bytes, Any,
DottedObjectName, DottedObjectName, Set,
) )
from IPython.config import Application, catch_config_error from IPython.config import Application, catch_config_error
from IPython.utils.importstring import import_item from IPython.utils.importstring import import_item
here = os.path.dirname(__file__) here = os.path.dirname(__file__)
from .handlers import ( from . import handlers, apihandlers
Template404,
RootHandler,
LoginHandler,
LogoutHandler,
UserHandler,
)
from .apihandlers import (
AuthorizationsAPIHandler,
)
from . import orm from . import orm
from ._data import DATA_FILES_PATH from ._data import DATA_FILES_PATH
@@ -220,19 +210,19 @@ class JupyterHubApp(Application):
return handlers return handlers
def init_handlers(self): def init_handlers(self):
handlers = [ h = []
(r"/", RootHandler), h.extend(handlers.default_handlers)
(r"/login", LoginHandler), h.extend(apihandlers.default_handlers)
(r"/logout", LogoutHandler),
(r"/api/authorizations/([^/]+)", AuthorizationsAPIHandler), self.handlers = self.add_url_prefix(self.hub_prefix, h)
]
self.handlers = self.add_url_prefix(self.hub_prefix, handlers) # some extra handlers, outside hub_prefix
self.handlers.extend([ self.handlers.extend([
(r"/user/([^/]+)/?.*", UserHandler), (r"/user/([^/]+)/?.*", handlers.UserHandler),
(r"/?", web.RedirectHandler, {"url" : self.hub_prefix, "permanent": False}), (r"/?", web.RedirectHandler, {"url" : self.hub_prefix, "permanent": False}),
]) ])
self.handlers.append( self.handlers.append(
(r'(.*)', Template404) (r'(.*)', handlers.Template404)
) )
def init_db(self): def init_db(self):

View File

@@ -1,2 +1,8 @@
from .base import * from .base import *
from .login import * from .login import *
from . import base, login
default_handlers = []
for mod in (base, login):
default_handlers.extend(mod.default_handlers)

View File

@@ -294,3 +294,7 @@ class UserHandler(BaseHandler):
self.redirect(url_concat(self.settings['login_url'], { self.redirect(url_concat(self.settings['login_url'], {
'next' : self.request.path, 'next' : self.request.path,
})) }))
default_handlers = [
(r"/", RootHandler),
]

View File

@@ -56,3 +56,8 @@ class LoginHandler(BaseHandler):
username=username, username=username,
) )
self.finish(html) self.finish(html)
default_handlers = [
(r"/login", LoginHandler),
(r"/logout", LogoutHandler),
]