From bac95b874b77ffb1889bea34295796526077d794 Mon Sep 17 00:00:00 2001 From: Nate Coraor Date: Thu, 8 Aug 2013 15:40:00 -0400 Subject: [PATCH] Define the ActionInputError exception that was being caught in the quotas API controller. Thanks Jim Johnson. --- lib/galaxy/actions/admin.py | 46 ++++++++++++------------- lib/galaxy/exceptions/__init__.py | 4 +++ lib/galaxy/webapps/galaxy/api/quotas.py | 2 +- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/lib/galaxy/actions/admin.py b/lib/galaxy/actions/admin.py index bf931f51e21..cdd8b0cd24c 100644 --- a/lib/galaxy/actions/admin.py +++ b/lib/galaxy/actions/admin.py @@ -4,7 +4,7 @@ Contains administrative functions import logging from galaxy import util -from galaxy.exceptions import MessageException +from galaxy.exceptions import ActionInputError log = logging.getLogger( __name__ ) @@ -21,21 +21,21 @@ class AdminActions( object ): except AssertionError: create_amount = False if not params.name or not params.description: - raise MessageException( "Enter a valid name and a description.", type='error' ) + raise ActionInputError( "Enter a valid name and a description." ) elif self.sa_session.query( self.app.model.Quota ).filter( self.app.model.Quota.table.c.name==params.name ).first(): - raise MessageException( "Quota names must be unique and a quota with that name already exists, so choose another name.", type='error' ) + raise ActionInputError( "Quota names must be unique and a quota with that name already exists, so choose another name." ) elif not params.get( 'amount', None ): - raise MessageException( "Enter a valid quota amount.", type='error' ) + raise ActionInputError( "Enter a valid quota amount." ) elif create_amount is False: - raise MessageException( "Unable to parse the provided amount.", type='error' ) + raise ActionInputError( "Unable to parse the provided amount." ) elif params.operation not in self.app.model.Quota.valid_operations: - raise MessageException( "Enter a valid operation.", type='error' ) + raise ActionInputError( "Enter a valid operation." ) elif params.default != 'no' and params.default not in self.app.model.DefaultQuotaAssociation.types.__dict__.values(): - raise MessageException( "Enter a valid default type.", type='error' ) + raise ActionInputError( "Enter a valid default type." ) elif params.default != 'no' and params.operation != '=': - raise MessageException( "Operation for a default quota must be '='.", type='error' ) + raise ActionInputError( "Operation for a default quota must be '='." ) elif create_amount is None and params.operation != '=': - raise MessageException( "Operation for an unlimited quota must be '='.", type='error' ) + raise ActionInputError( "Operation for an unlimited quota must be '='." ) else: # Create the quota quota = self.app.model.Quota( name=params.name, description=params.description, amount=create_amount, operation=params.operation ) @@ -59,9 +59,9 @@ class AdminActions( object ): def _rename_quota( self, quota, params ): if not params.name: - raise MessageException( 'Enter a valid name', type='error' ) + raise ActionInputError( 'Enter a valid name' ) elif params.name != quota.name and self.sa_session.query( self.app.model.Quota ).filter( self.app.model.Quota.table.c.name==params.name ).first(): - raise MessageException( 'A quota with that name already exists', type='error' ) + raise ActionInputError( 'A quota with that name already exists' ) else: old_name = quota.name quota.name = params.name @@ -73,7 +73,7 @@ class AdminActions( object ): def _manage_users_and_groups_for_quota( self, quota, params ): if quota.default: - raise MessageException( 'Default quotas cannot be associated with specific users and groups', type='error' ) + raise ActionInputError( 'Default quotas cannot be associated with specific users and groups' ) else: in_users = [ self.sa_session.query( self.app.model.User ).get( x ) for x in util.listify( params.in_users ) ] in_groups = [ self.sa_session.query( self.app.model.Group ).get( x ) for x in util.listify( params.in_groups ) ] @@ -91,11 +91,11 @@ class AdminActions( object ): except AssertionError: new_amount = False if not params.amount: - raise MessageException( 'Enter a valid amount', type='error' ) + raise ActionInputError( 'Enter a valid amount' ) elif new_amount is False: - raise MessageException( 'Unable to parse the provided amount', type='error' ) + raise ActionInputError( 'Unable to parse the provided amount' ) elif params.operation not in self.app.model.Quota.valid_operations: - raise MessageException( 'Enter a valid operation', type='error' ) + raise ActionInputError( 'Enter a valid operation' ) else: quota.amount = new_amount quota.operation = params.operation @@ -106,7 +106,7 @@ class AdminActions( object ): def _set_quota_default( self, quota, params ): if params.default != 'no' and params.default not in self.app.model.DefaultQuotaAssociation.types.__dict__.values(): - raise MessageException( 'Enter a valid default type.', type='error' ) + raise ActionInputError( 'Enter a valid default type.' ) else: if params.default != 'no': self.app.quota_agent.set_default_quota( params.default, quota ) @@ -123,7 +123,7 @@ class AdminActions( object ): def _unset_quota_default( self, quota, params ): if not quota.default: - raise MessageException( "Quota '%s' is not a default." % quota.name, type='error' ) + raise ActionInputError( "Quota '%s' is not a default." % quota.name ) else: message = "Quota '%s' is no longer the default for %s users." % ( quota.name, quota.default[0].type ) for dqa in quota.default: @@ -138,9 +138,9 @@ class AdminActions( object ): if q.default: names.append( q.name ) if len( names ) == 1: - raise MessageException( "Quota '%s' is a default, please unset it as a default before deleting it" % ( names[0] ), type='error' ) + raise ActionInputError( "Quota '%s' is a default, please unset it as a default before deleting it" % ( names[0] ) ) elif len( names ) > 1: - raise MessageException( "Quotas are defaults, please unset them as defaults before deleting them: " + ', '.join( names ), type='error' ) + raise ActionInputError( "Quotas are defaults, please unset them as defaults before deleting them: " + ', '.join( names ) ) message = "Deleted %d quotas: " % len( quotas ) for q in quotas: q.deleted = True @@ -157,9 +157,9 @@ class AdminActions( object ): if not q.deleted: names.append( q.name ) if len( names ) == 1: - raise MessageException( "Quota '%s' has not been deleted, so it cannot be undeleted." % ( names[0] ), type='error' ) + raise ActionInputError( "Quota '%s' has not been deleted, so it cannot be undeleted." % ( names[0] ) ) elif len( names ) > 1: - raise MessageException( "Quotas have not been deleted so they cannot be undeleted: " + ', '.join( names ), type='error' ) + raise ActionInputError( "Quotas have not been deleted so they cannot be undeleted: " + ', '.join( names ) ) message = "Undeleted %d quotas: " % len( quotas ) for q in quotas: q.deleted = False @@ -182,9 +182,9 @@ class AdminActions( object ): if not q.deleted: names.append( q.name ) if len( names ) == 1: - raise MessageException( "Quota '%s' has not been deleted, so it cannot be purged." % ( names[0] ), type='error' ) + raise ActionInputError( "Quota '%s' has not been deleted, so it cannot be purged." % ( names[0] ) ) elif len( names ) > 1: - raise MessageException( "Quotas have not been deleted so they cannot be undeleted: " + ', '.join( names ), type='error' ) + raise ActionInputError( "Quotas have not been deleted so they cannot be undeleted: " + ', '.join( names ) ) message = "Purged %d quotas: " % len( quotas ) for q in quotas: # Delete UserQuotaAssociations diff --git a/lib/galaxy/exceptions/__init__.py b/lib/galaxy/exceptions/__init__.py index 1f8b806ef42..c38d5c1662b 100644 --- a/lib/galaxy/exceptions/__init__.py +++ b/lib/galaxy/exceptions/__init__.py @@ -21,6 +21,10 @@ class ItemAccessibilityException( MessageException ): class ItemOwnershipException( MessageException ): pass +class ActionInputError( MessageException ): + def __init__( self, err_msg, type="error" ): + super( ActionInputError, self ).__init__( err_msg, type ) + class ObjectNotFound( Exception ): """ Accessed object was not found """ pass diff --git a/lib/galaxy/webapps/galaxy/api/quotas.py b/lib/galaxy/webapps/galaxy/api/quotas.py index 456608c87c4..dd4ea164d4f 100644 --- a/lib/galaxy/webapps/galaxy/api/quotas.py +++ b/lib/galaxy/webapps/galaxy/api/quotas.py @@ -11,7 +11,7 @@ from galaxy.web.params import QuotaParamParser from galaxy.actions.admin import AdminActions from paste.httpexceptions import HTTPBadRequest -from galaxy.exceptions import * +from galaxy.exceptions import ActionInputError log = logging.getLogger( __name__ )