Source code for backend.route

import logging
import tornado.httpserver
import tornado.ioloop
import tornado.web
from tornado.options import define, options

import sys
import application
import handlers
import auth
import settings as swefreq_settings

from modules.browser.route import routes as browser_routes

define("port", default=4000, help="run on the given port", type=int)
define("develop", default=False, help="Run in develop environment", type=bool)

# Setup the Tornado Application
tornado_settings = {"debug": False,
            "cookie_secret": swefreq_settings.cookie_secret,
            "login_url": "/login",
            "elixir_oauth": {
                "id": swefreq_settings.elixir["id"],
                "secret": swefreq_settings.elixir["secret"],
                "redirect_uri": swefreq_settings.elixir["redirectUri"],
            },
            "xsrf_cookies": True,
            "template_path": "templates/",
        }

[docs]class Application(tornado.web.Application): def __init__(self, settings): self.declared_handlers = [ ## Static handlers (r"/static/(.*)", tornado.web.StaticFileHandler, {"path": "static/"}), (r'/(favicon.ico)', tornado.web.StaticFileHandler, {"path": "static/img/"}), (r"/release/(?P<dataset>[^\/]+)/versions/(?P<ds_version>[^/]+)/(?P<hash_value>[^\/]+)/(?P<file>[^\/]+)", handlers.TemporaryStaticNginxFileHandler, {"path": "/release-files/"}), (r"/release/(?P<dataset>[^\/]+)/versions/(?P<ds_version>[^/]+)/(?P<file>[^\/]+)", handlers.AuthorizedStaticNginxFileHandler, {"path": "/release-files/"}), ## Authentication (r"/logout", auth.ElixirLogoutHandler), (r"/elixir/login", auth.ElixirLoginHandler), (r"/elixir/logout", auth.ElixirLogoutHandler), ## API Methods (r"/api/countries", application.CountryList), (r"/api/users/me", application.GetUser), (r"/api/users/datasets", application.UserDatasetAccess), (r"/api/users/sftp_access", application.SFTPAccess), (r"/api/schema", application.GetSchema), ### Dataset Api (r"/api/dataset", application.ListDatasets), (r"/api/dataset/(?P<dataset>[^\/]+)", application.GetDataset), (r"/api/dataset/(?P<dataset>[^\/]+)/log/(?P<event>[^\/]+)/(?P<target>[^\/]+)", application.LogEvent), (r"/api/dataset/(?P<dataset>[^\/]+)/logo", application.ServeLogo), (r"/api/dataset/(?P<dataset>[^\/]+)/(?:versions/(?P<ds_version>[^/]+)/)?files", application.DatasetFiles), (r"/api/dataset/(?P<dataset>[^\/]+)/(?:versions/(?P<ds_version>[^/]+)/)?collection", application.Collection), (r"/api/dataset/(?P<dataset>[^\/]+)/users_current", application.DatasetUsersCurrent), (r"/api/dataset/(?P<dataset>[^\/]+)/users_pending", application.DatasetUsersPending), (r"/api/dataset/(?P<dataset>[^\/]+)/(?:versions/(?P<ds_version>[^/]+)/)?temporary_link", application.GenerateTemporaryLink), (r"/api/dataset/(?P<dataset>[^\/]+)/users/[^\/]+/request", application.RequestAccess), (r"/api/dataset/(?P<dataset>[^\/]+)/users/(?P<email>[^\/]+)/approve", application.ApproveUser), (r"/api/dataset/(?P<dataset>[^\/]+)/users/(?P<email>[^\/]+)/revoke", application.RevokeUser), (r"/api/dataset/(?P<dataset>[^\/]+)/versions", application.ListDatasetVersions), (r"/api/dataset/(?P<dataset>[^\/]+)/versions/(?P<version>[^\/]+)", application.GetDataset), (r"/api/dataset/(?P<dataset>[^\/]+)/versions/(?P<version>[^\/]+)/files", application.DatasetFiles), (r"/api/dataset/(?P<dataset>[^\/]+)/versions/(?P<version>[^\/]+)/temporary_link", application.GenerateTemporaryLink), ] ## Adding module handlers self.declared_handlers += browser_routes ## Adding Catch all handlers self.declared_handlers += [ (r"/api/.*", tornado.web.ErrorHandler, {"status_code": 404} ), (r'().*', tornado.web.StaticFileHandler, {"path": "static/templates/", "default_filename": "index.html"}), ] ## Adding developer login handler if settings.get('develop', False): self.declared_handlers.insert(-1, ("/developer/login", auth.DeveloperLoginHandler)) self.declared_handlers.insert(-1, ("/developer/quit", application.QuitHandler)) # Setup the Tornado Application tornado.web.Application.__init__(self, self.declared_handlers, **settings)
if __name__ == '__main__': # Make sure that the extra option to `settings` isn't upsetting tornado if '--settings_file' in sys.argv: flag_index = sys.argv.index('--settings_file') # first remove flag, then argument del sys.argv[flag_index] del sys.argv[flag_index] tornado.log.enable_pretty_logging() tornado.options.parse_command_line() if options.develop: tornado_settings['debug'] = True tornado_settings['develop'] = True logging.getLogger().setLevel(logging.DEBUG) # Instantiate Application application = Application(tornado_settings) application.listen(options.port, xheaders=True) # Get a handle to the instance of IOLoop ioloop = tornado.ioloop.IOLoop.instance() # Start the IOLoop ioloop.start()