Source code for galaxy.managers.roles

"""
Manager and Serializer for Roles.
"""

from sqlalchemy.orm import exc as sqlalchemy_exceptions

import galaxy.exceptions
from galaxy import model
from galaxy.managers import base

import logging
log = logging.getLogger( __name__ )


# =============================================================================
[docs]class RoleManager( base.ModelManager ): """ Business logic for roles. """ model_class = model.Role foreign_key_name = 'role' user_assoc = model.UserRoleAssociation group_assoc = model.GroupRoleAssociation def __init__( self, app ): super( RoleManager, self ).__init__( app )
[docs] def get( self, trans, decoded_role_id ): """ Method loads the role from the DB based on the given role id. :param decoded_role_id: id of the role to load from the DB :type decoded_role_id: int :returns: the loaded Role object :rtype: Role :raises: InconsistentDatabase, RequestParameterInvalidException, InternalServerError """ try: role = ( self.session().query( self.model_class ) .filter( self.model_class.id == decoded_role_id ).one() ) except sqlalchemy_exceptions.MultipleResultsFound: raise galaxy.exceptions.InconsistentDatabase( 'Multiple roles found with the same id.' ) except sqlalchemy_exceptions.NoResultFound: raise galaxy.exceptions.RequestParameterInvalidException( 'No role found with the id provided.' ) except Exception, e: raise galaxy.exceptions.InternalServerError( 'Error loading from the database.' + str(e) ) return role