def get(self, org_id, location_id):
response = {
API_ENVELOPE: [],
}
parser = reqparse.RequestParser()
parser.add_argument("recurse", type=inputs.boolean, default=False)
parser.add_argument("archived", type=inputs.boolean)
args = parser.parse_args()
args = dict((k, v) for k, v in args.iteritems() if v is not None)
roles_query = Role.query.filter_by(location_id=location_id)
# by default, only include active users
if "archived" in args:
roles_query = roles_query.filter_by(archived=args["archived"])
roles = roles_query.all()
response[API_ENVELOPE] = map(lambda role: marshal(role, role_fields),
roles)
if args["recurse"]:
# Show all users in each location role
for datum in response[API_ENVELOPE]:
users_query = RoleToUser.query.filter_by(role_id=datum["id"])
if "archived" in args:
users_query = users_query.filter_by(
archived=args["archived"])
members = users_query.all()
memberships = []
for member in members:
rtu = marshal(member, role_to_user_fields)
rtu.update(marshal(member.user, user_fields))
memberships.append(rtu)
datum.update({"users": memberships})
return response
评论列表
文章目录