From 638e36f51d2c9d1af3a0ff62a869e72c02a38f76 Mon Sep 17 00:00:00 2001 From: Nate Coraor Date: Sat, 14 Nov 2015 01:46:20 -0500 Subject: [PATCH 1/2] Newer versions of WebOb set None in referer, older versions set an empty string. Handle cases where it is assumed to be a string. I checked all other trans.request attributes to find other cases where this might crop up and didn't find any. --- lib/galaxy/webapps/galaxy/controllers/dataset.py | 2 +- lib/galaxy/webapps/galaxy/controllers/history.py | 2 +- lib/galaxy/webapps/galaxy/controllers/user.py | 9 ++++++--- lib/galaxy/webapps/galaxy/controllers/visualization.py | 2 +- lib/galaxy/webapps/galaxy/controllers/workflow.py | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/controllers/dataset.py b/lib/galaxy/webapps/galaxy/controllers/dataset.py index ea014edb812..56d8a63c4ab 100644 --- a/lib/galaxy/webapps/galaxy/controllers/dataset.py +++ b/lib/galaxy/webapps/galaxy/controllers/dataset.py @@ -519,7 +519,7 @@ class DatasetInterface( BaseUIController, UsesAnnotations, UsesItemRatings, Uses """ Import another user's dataset via a shared URL; dataset is added to user's current history. """ # Set referer message. referer = trans.request.referer - if referer is not "": + if referer is not None: referer_message = "return to the previous page" % escape(referer) else: referer_message = "go to Galaxy's start page" % url_for( '/' ) diff --git a/lib/galaxy/webapps/galaxy/controllers/history.py b/lib/galaxy/webapps/galaxy/controllers/history.py index c16b7d931aa..0c5f7270a45 100644 --- a/lib/galaxy/webapps/galaxy/controllers/history.py +++ b/lib/galaxy/webapps/galaxy/controllers/history.py @@ -1322,7 +1322,7 @@ class HistoryController( BaseUIController, SharableMixin, UsesAnnotations, UsesI referer = kwd['referer'] else: referer = trans.request.referer - if referer is not "": + if referer is not None: referer_message = "return to the previous page" % escape(referer) else: referer_message = "go to Galaxy's start page" % url_for( '/' ) diff --git a/lib/galaxy/webapps/galaxy/controllers/user.py b/lib/galaxy/webapps/galaxy/controllers/user.py index 0b2655aea6b..041e298a920 100644 --- a/lib/galaxy/webapps/galaxy/controllers/user.py +++ b/lib/galaxy/webapps/galaxy/controllers/user.py @@ -463,7 +463,8 @@ class User( BaseUIController, UsesFormDefinitionsMixin, CreatesUsersMixin, Creat @web.expose def login( self, trans, refresh_frames=[], **kwd ): '''Handle Galaxy Log in''' - redirect = self.__get_redirect_url( kwd.get( 'redirect', trans.request.referer ).strip() ) + referer = trans.request.referer or '' + redirect = self.__get_redirect_url( kwd.get( 'redirect', referer ).strip() ) redirect_url = '' # always start with redirect_url being empty use_panels = util.string_as_bool( kwd.get( 'use_panels', False ) ) message = kwd.get( 'message', '' ) @@ -516,7 +517,8 @@ class User( BaseUIController, UsesFormDefinitionsMixin, CreatesUsersMixin, Creat status = kwd.get( 'status', 'error' ) login = kwd.get( 'login', '' ) password = kwd.get( 'password', '' ) - redirect = kwd.get( 'redirect', trans.request.referer ).strip() + referer = trans.request.referer or '' + redirect = kwd.get( 'redirect', referer ).strip() success = False user = trans.sa_session.query( trans.app.model.User ).filter(or_( trans.app.model.User.table.c.email == login, @@ -671,7 +673,8 @@ class User( BaseUIController, UsesFormDefinitionsMixin, CreatesUsersMixin, Creat username = util.restore_text( params.get( 'username', '' ) ) subscribe = params.get( 'subscribe', '' ) subscribe_checked = CheckboxField.is_checked( subscribe ) - redirect = kwd.get( 'redirect', trans.request.referer ).strip() + referer = trans.request.referer or '' + redirect = kwd.get( 'redirect', referer ).strip() is_admin = cntrller == 'admin' and trans.user_is_admin if not trans.app.config.allow_user_creation and not trans.user_is_admin(): message = 'User registration is disabled. Please contact your local Galaxy administrator for an account.' diff --git a/lib/galaxy/webapps/galaxy/controllers/visualization.py b/lib/galaxy/webapps/galaxy/controllers/visualization.py index 683cc8827b1..f635865a4f8 100644 --- a/lib/galaxy/webapps/galaxy/controllers/visualization.py +++ b/lib/galaxy/webapps/galaxy/controllers/visualization.py @@ -457,7 +457,7 @@ class VisualizationController( BaseUIController, SharableMixin, UsesVisualizatio """ Import a visualization into user's workspace. """ # Set referer message. referer = trans.request.referer - if referer is not "": + if referer is not None: referer_message = "return to the previous page" % escape(referer) else: referer_message = "go to Galaxy's start page" % web.url_for( '/' ) diff --git a/lib/galaxy/webapps/galaxy/controllers/workflow.py b/lib/galaxy/webapps/galaxy/controllers/workflow.py index 956436e14cb..f052fd31571 100644 --- a/lib/galaxy/webapps/galaxy/controllers/workflow.py +++ b/lib/galaxy/webapps/galaxy/controllers/workflow.py @@ -396,7 +396,7 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix """Imports a workflow shared by other users.""" # Set referer message. referer = trans.request.referer - if referer is not "": + if referer is not None: referer_message = "return to the previous page" % escape(referer) else: referer_message = "go to Galaxy's start page" % url_for( '/' ) From d5fe49ec6f1250da732faaf5c605549183249938 Mon Sep 17 00:00:00 2001 From: Nate Coraor Date: Tue, 17 Nov 2015 12:50:20 -0500 Subject: [PATCH 2/2] Incorporate @nsoranzo's suggestions --- lib/galaxy/webapps/galaxy/controllers/dataset.py | 2 +- lib/galaxy/webapps/galaxy/controllers/history.py | 2 +- lib/galaxy/webapps/galaxy/controllers/visualization.py | 2 +- lib/galaxy/webapps/galaxy/controllers/workflow.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/controllers/dataset.py b/lib/galaxy/webapps/galaxy/controllers/dataset.py index 56d8a63c4ab..b5f7e56f009 100644 --- a/lib/galaxy/webapps/galaxy/controllers/dataset.py +++ b/lib/galaxy/webapps/galaxy/controllers/dataset.py @@ -519,7 +519,7 @@ class DatasetInterface( BaseUIController, UsesAnnotations, UsesItemRatings, Uses """ Import another user's dataset via a shared URL; dataset is added to user's current history. """ # Set referer message. referer = trans.request.referer - if referer is not None: + if referer: referer_message = "return to the previous page" % escape(referer) else: referer_message = "go to Galaxy's start page" % url_for( '/' ) diff --git a/lib/galaxy/webapps/galaxy/controllers/history.py b/lib/galaxy/webapps/galaxy/controllers/history.py index 0c5f7270a45..c3be41b84f3 100644 --- a/lib/galaxy/webapps/galaxy/controllers/history.py +++ b/lib/galaxy/webapps/galaxy/controllers/history.py @@ -1322,7 +1322,7 @@ class HistoryController( BaseUIController, SharableMixin, UsesAnnotations, UsesI referer = kwd['referer'] else: referer = trans.request.referer - if referer is not None: + if referer: referer_message = "return to the previous page" % escape(referer) else: referer_message = "go to Galaxy's start page" % url_for( '/' ) diff --git a/lib/galaxy/webapps/galaxy/controllers/visualization.py b/lib/galaxy/webapps/galaxy/controllers/visualization.py index f635865a4f8..51996e8b95d 100644 --- a/lib/galaxy/webapps/galaxy/controllers/visualization.py +++ b/lib/galaxy/webapps/galaxy/controllers/visualization.py @@ -457,7 +457,7 @@ class VisualizationController( BaseUIController, SharableMixin, UsesVisualizatio """ Import a visualization into user's workspace. """ # Set referer message. referer = trans.request.referer - if referer is not None: + if referer: referer_message = "return to the previous page" % escape(referer) else: referer_message = "go to Galaxy's start page" % web.url_for( '/' ) diff --git a/lib/galaxy/webapps/galaxy/controllers/workflow.py b/lib/galaxy/webapps/galaxy/controllers/workflow.py index f052fd31571..a2ea03620db 100644 --- a/lib/galaxy/webapps/galaxy/controllers/workflow.py +++ b/lib/galaxy/webapps/galaxy/controllers/workflow.py @@ -396,7 +396,7 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix """Imports a workflow shared by other users.""" # Set referer message. referer = trans.request.referer - if referer is not None: + if referer: referer_message = "return to the previous page" % escape(referer) else: referer_message = "go to Galaxy's start page" % url_for( '/' )