galaxy.web.framework package

Galaxy web application framework

Submodules

galaxy.web.framework.base module

A simple WSGI application/framework.

galaxy.web.framework.base.server_starttime = 1550212149

time of the most recent server startup

class galaxy.web.framework.base.WebApplication[source]

Bases: object

A simple web application which maps requests to objects using routes, and to methods on those objects in the CherryPy style. Thus simple argument mapping in the CherryPy style occurs automatically, but more complicated encoding of arguments in the PATH_INFO can be performed with routes.

__init__()[source]

Create a new web application object. To actually connect some controllers use add_controller and add_route. Call finalize_config when all controllers and routes have been added and __call__ to handle a request (WSGI style).

add_ui_controller(controller_name, controller)[source]

Add a controller class to this application. A controller class has methods which handle web requests. To connect a URL to a controller’s method use add_route.

add_api_controller(controller_name, controller)[source]
add_route(route, **kwargs)[source]

Add a route to match a URL with a method. Accepts all keyword arguments of routes.Mapper.connect. Every route should result in at least a controller value which corresponds to one of the objects added with add_controller. It optionally may yield an action argument which will be used to locate the method to call on the controller. Additional arguments will be passed to the method as keyword args.

add_client_route(route, controller='root')[source]
set_transaction_factory(transaction_factory)[source]

Use the callable transaction_factory to create the transaction which will be passed to requests.

finalize_config()[source]

Call when application is completely configured and ready to serve requests

trace(**fields)[source]
handle_request(environ, start_response, body_renderer=None)[source]
make_body_iterable(trans, body)[source]
handle_controller_exception(e, trans, **kwargs)[source]

Allow handling of exceptions raised in controller methods.

class galaxy.web.framework.base.WSGIEnvironmentProperty(key, default='')[source]

Bases: object

Descriptor that delegates a property to a key in the environ member of the associated object (provides property style access to keys in the WSGI environment)

__init__(key, default='')[source]
class galaxy.web.framework.base.LazyProperty(func)[source]

Bases: object

Property that replaces itself with a calculated value the first time it is used.

__init__(func)[source]
galaxy.web.framework.base.lazy_property

alias of galaxy.web.framework.base.LazyProperty

class galaxy.web.framework.base.DefaultWebTransaction(environ)[source]

Bases: object

Wraps the state of a single web transaction (request/response cycle).

TODO: Provide hooks to allow application specific state to be included
in here.
__init__(environ)[source]
session[source]

Property that replaces itself with a calculated value the first time it is used.

class galaxy.web.framework.base.Request(environ)[source]

Bases: webob.request.Request

Encapsulates an HTTP request.

__init__(environ)[source]

Create a new request wrapping the WSGI environment environ

remote_host[source]

Property that replaces itself with a calculated value the first time it is used.

remote_hostname[source]

Property that replaces itself with a calculated value the first time it is used.

cookies[source]

Property that replaces itself with a calculated value the first time it is used.

base[source]

Property that replaces itself with a calculated value the first time it is used.

path[source]

Property that replaces itself with a calculated value the first time it is used.

browser_url[source]

Property that replaces itself with a calculated value the first time it is used.

remote_port

Descriptor that delegates a property to a key in the environ member of the associated object (provides property style access to keys in the WSGI environment)

protocol

Descriptor that delegates a property to a key in the environ member of the associated object (provides property style access to keys in the WSGI environment)

class galaxy.web.framework.base.Response[source]

Bases: object

Describes an HTTP response. Currently very simple since the actual body of the request is handled separately.

__init__()[source]

Create a new Response defaulting to HTML content and “200 OK” status

set_content_type(type_)[source]

Sets the Content-Type header

get_content_type()[source]
send_redirect(url)[source]

Send an HTTP redirect response to (target url)

wsgi_headeritems()[source]

Return headers in format appropriate for WSGI start_response

wsgi_status()[source]

Return status line in format appropriate for WSGI start_response

galaxy.web.framework.base.send_file(start_response, trans, body)[source]
galaxy.web.framework.base.iterate_file(file)[source]

Progressively return chunks from file.

galaxy.web.framework.base.flatten(seq)[source]

Flatten a possible nested set of iterables

galaxy.web.framework.decorators module

galaxy.web.framework.decorators.error(message)[source]
galaxy.web.framework.decorators.expose(func)[source]

Decorator: mark a function as ‘exposed’ and thus web accessible

galaxy.web.framework.decorators.json(func, pretty=False)[source]

Format the response as JSON and set the response content type to JSON_CONTENT_TYPE.

galaxy.web.framework.decorators.json_pretty(func)[source]

Indent and sort returned JSON.

galaxy.web.framework.decorators.require_login(verb='perform this action', use_panels=False, webapp='galaxy')[source]
galaxy.web.framework.decorators.require_admin(func)[source]
galaxy.web.framework.decorators.expose_api(func, to_json=True, user_required=True)[source]

Expose this function via the API.

galaxy.web.framework.decorators.expose_api_raw(func)[source]

Expose this function via the API but don’t dump the results to JSON.

galaxy.web.framework.decorators.expose_api_raw_anonymous(func)[source]

Expose this function via the API but don’t dump the results to JSON.

galaxy.web.framework.decorators.expose_api_anonymous(func, to_json=True)[source]

Expose this function via the API but don’t require a set user.

galaxy.web.framework.openid_manager module

Manage the OpenID consumer and related data stores.

galaxy.web.framework.openid_manager.oidlog(message, level=0)[source]
class galaxy.web.framework.openid_manager.OpenIDManager(cache_path)[source]

Bases: object

__init__(cache_path)[source]
get_session(trans)[source]
persist_session(trans, oidconsumer)[source]
get_consumer(trans)[source]
add_sreg(trans, request, required=None, optional=None)[source]
get_sreg(info)[source]
FAILURE = 'failure'
SUCCESS = 'success'
CANCEL = 'cancel'
SETUP_NEEDED = 'setup_needed'

galaxy.web.framework.webapp module

class galaxy.web.framework.webapp.WebApplication(galaxy_app, session_cookie='galaxysession', name=None)[source]

Bases: galaxy.web.framework.base.WebApplication

Base WSGI application instantiated for all Galaxy webapps.

A web application that:
  • adds API and UI controllers by scanning given directories and

importing all modules found there. * has a security object. * builds mako template lookups. * generates GalaxyWebTransactions.

__init__(galaxy_app, session_cookie='galaxysession', name=None)[source]
create_mako_template_lookup(galaxy_app, name)[source]
handle_controller_exception(e, trans, **kwargs)[source]
make_body_iterable(trans, body)[source]
transaction_chooser(environ, galaxy_app, session_cookie)[source]
add_ui_controllers(package_name, app)[source]

Search for UI controllers in package_name and add them to the webapp.

add_api_controllers(package_name, app)[source]

Search for UI controllers in package_name and add them to the webapp.

class galaxy.web.framework.webapp.GalaxyWebTransaction(environ, app, webapp, session_cookie=None)[source]

Bases: galaxy.web.framework.base.DefaultWebTransaction, galaxy.managers.context.ProvidesAppContext, galaxy.managers.context.ProvidesUserContext, galaxy.managers.context.ProvidesHistoryContext

Encapsulates web transaction specific state for the Galaxy application (specifically the user’s “cookie” session and history)

__init__(environ, app, webapp, session_cookie=None)[source]
setup_i18n()[source]
set_cors_headers()[source]

Allow CORS requests if configured to do so by echoing back the request’s ‘Origin’ header (if any) as the response header ‘Access-Control-Allow-Origin’

get_user()[source]

Return the current user if logged in or None.

set_user(user)[source]

Set the current user.

user

Return the current user if logged in or None.

Convenience method for getting a session cookie

Convenience method for setting a session cookie

get_or_create_remote_user(remote_user_email)[source]

Create a remote user with the email remote_user_email and return it

check_user_library_import_dir(user)[source]
user_checks(user)[source]

This could contain more checks around a user upon login

handle_user_login(user)[source]
Login a new user (possibly newly created)
  • do some ‘system’ checks (if any) for this user
  • create a new session
  • associate new session with user
  • if old session had a history and it was not associated with a user, associate it with the new session, otherwise associate the current session’s history with the user
  • add the disk usage of the current session to the user’s total disk usage
handle_user_logout(logout_all=False)[source]
Logout the current user:
  • invalidate the current session
  • create a new session with no user associated
get_galaxy_session()[source]

Return the current galaxy session

get_history(create=False, most_recent=False)[source]
Load the current history.
  • If that isn’t available, we find the most recently updated history.
  • If that isn’t available, we get or create the default history.

Transactions will not always have an active history (API requests), so None is a valid response.

set_history(history)[source]
history
Load the current history.
  • If that isn’t available, we find the most recently updated history.
  • If that isn’t available, we get or create the default history.

Transactions will not always have an active history (API requests), so None is a valid response.

get_or_create_default_history()[source]

Gets or creates a default history and associates it with the current session.

get_most_recent_history()[source]

Gets the most recently updated history.

new_history(name=None)[source]

Create a new history and associate it with the current session and its associated user (if set).

template_context

Property that replaces itself with a calculated value the first time it is used.

set_message(message, type=None)[source]

Convenience method for setting the ‘message’ and ‘message_type’ element of the template context.

get_message()[source]

Convenience method for getting the ‘message’ element of the template context.

show_message(message, type='info', refresh_frames=[], cont=None, use_panels=False, active_view='')[source]

Convenience method for displaying a simple page with a single message.

type: one of “error”, “warning”, “info”, or “done”; determines the
type of dialog box and icon displayed with the message
refresh_frames: names of frames in the interface that should be
refreshed when the message is displayed
show_error_message(message, refresh_frames=[], use_panels=False, active_view='')[source]

Convenience method for displaying an error message. See show_message.

show_ok_message(message, refresh_frames=[], use_panels=False, active_view='')[source]

Convenience method for displaying an ok message. See show_message.

show_warn_message(message, refresh_frames=[], use_panels=False, active_view='')[source]

Convenience method for displaying an warn message. See show_message.

session_csrf_token
check_csrf_token()[source]
fill_template(filename, **kwargs)[source]

Fill in a template, putting any keyword arguments on the context.

fill_template_mako(filename, template_lookup=None, **kwargs)[source]
stream_template_mako(filename, **kwargs)[source]
fill_template_string(template_string, context=None, **kwargs)[source]

Fill in a template, putting any keyword arguments on the context.

galaxy.web.framework.webapp.build_native_uwsgi_app(paste_factory, config_section)[source]

uwsgi can load paste factories with –ini-paste, but this builds non-paste uwsgi apps.

In particular these are useful with –yaml or –json for config.

galaxy.web.framework.webapp.build_url_map(app, global_conf, local_conf)[source]