Warning
This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.webapps.galaxy.api.group_roles
"""
API operations on Group objects.
"""
import logging
from galaxy import web
from galaxy.web.base.controller import BaseAPIController, url_for
log = logging.getLogger(__name__)
[docs]class GroupRolesAPIController(BaseAPIController):
[docs] @web.expose_api
@web.require_admin
def index(self, trans, group_id, **kwd):
"""
GET /api/groups/{encoded_group_id}/roles
Displays a collection (list) of groups.
"""
decoded_group_id = trans.security.decode_id(group_id)
try:
group = trans.sa_session.query(trans.app.model.Group).get(decoded_group_id)
except Exception:
group = None
if not group:
trans.response.status = 400
return "Invalid group id ( %s ) specified." % str(group_id)
rval = []
try:
for gra in group.roles:
role = gra.role
encoded_id = trans.security.encode_id(role.id)
rval.append(dict(id=encoded_id,
name=role.name,
url=url_for('group_role', group_id=group_id, id=encoded_id, )))
except Exception as e:
rval = "Error in group API at listing roles"
log.error(rval + ": %s" % str(e))
trans.response.status = 500
return rval
[docs] @web.expose_api
@web.require_admin
def show(self, trans, id, group_id, **kwd):
"""
GET /api/groups/{encoded_group_id}/roles/{encoded_role_id}
Displays information about a group role.
"""
role_id = id
decoded_group_id = trans.security.decode_id(group_id)
decoded_role_id = trans.security.decode_id(role_id)
item = None
try:
group = trans.sa_session.query(trans.app.model.Group).get(decoded_group_id)
role = trans.sa_session.query(trans.app.model.Role).get(decoded_role_id)
for gra in group.roles:
if gra.role == role:
item = dict(id=role_id,
name=role.name,
url=url_for('group_role', group_id=group_id, id=role_id)) # TODO Fix This
if not item:
item = "role %s not in group %s" % (role.name, group.name)
except Exception as e:
item = "Error in group_role API group %s role %s" % (group.name, role.name)
log.error(item + ": %s" % str(e))
return item
[docs] @web.expose_api
@web.require_admin
def update(self, trans, id, group_id, **kwd):
"""
PUT /api/groups/{encoded_group_id}/roles/{encoded_role_id}
Adds a role to a group
"""
role_id = id
decoded_group_id = trans.security.decode_id(group_id)
decoded_role_id = trans.security.decode_id(role_id)
item = None
try:
group = trans.sa_session.query(trans.app.model.Group).get(decoded_group_id)
role = trans.sa_session.query(trans.app.model.Role).get(decoded_role_id)
for gra in group.roles:
if gra.role == role:
item = dict(id=role_id,
name=role.name,
url=url_for('group_role', group_id=group_id, id=role_id))
if not item:
gra = trans.app.model.GroupRoleAssociation(group, role)
# Add GroupRoleAssociation
trans.sa_session.add(gra)
trans.sa_session.flush()
item = dict(id=role_id,
name=role.name,
url=url_for('group_role', group_id=group_id, id=role_id))
except Exception as e:
item = "Error in group_role API Adding role %s to group %s" % (role.name, group.name)
log.error(item + ": %s" % str(e))
return item
[docs] @web.expose_api
@web.require_admin
def delete(self, trans, id, group_id, **kwd):
"""
DELETE /api/groups/{encoded_group_id}/roles/{encoded_role_id}
Removes a role from a group
"""
role_id = id
decoded_group_id = trans.security.decode_id(group_id)
decoded_role_id = trans.security.decode_id(role_id)
try:
group = trans.sa_session.query(trans.app.model.Group).get(decoded_group_id)
role = trans.sa_session.query(trans.app.model.Role).get(decoded_role_id)
for gra in group.roles:
if gra.role == role:
trans.sa_session.delete(gra)
trans.sa_session.flush()
item = dict(id=role_id,
name=role.name,
url=url_for('group_role', group_id=group_id, id=role_id))
if not item:
item = "role %s not in group %s" % (role.name, group.name)
except Exception as e:
item = "Error in group_role API Removing role %s from group %s" % (role.name, group.name)
log.error(item + ": %s" % str(e))
return item