Source code for magpie.api.management.user.user_views

from magpie.api import exception as ax, requests as ar, schemas as s
from magpie.api.management.user import user_utils as uu, user_formats as uf
from magpie.api.management.service.service_formats import format_service_resources
from magpie.constants import get_constant
from magpie.definitions.pyramid_definitions import (
    asbool,
    view_config,
    HTTPOk,
    HTTPCreated,
    HTTPMovedPermanently,
    HTTPBadRequest,
    HTTPForbidden,
    HTTPNotFound,
    HTTPConflict,
    NO_PERMISSION_REQUIRED,
)
from magpie.definitions.ziggurat_definitions import UserService, GroupService, ResourceService
from magpie.utils import get_logger
from magpie import models
[docs]LOGGER = get_logger(__name__)
@s.UsersAPI.get(tags=[s.UsersTag], response_schemas=s.Users_GET_responses) @view_config(route_name=s.UsersAPI.name, request_method="GET")
[docs]def get_users_view(request): """ List all registered user names. """ user_name_list = ax.evaluate_call(lambda: [user.user_name for user in UserService.all(models.User, db_session=request.db)], fallback=lambda: request.db.rollback(), httpError=HTTPForbidden, msgOnFail=s.Users_GET_ForbiddenResponseSchema.description) return ax.valid_http(httpSuccess=HTTPOk, content={u"user_names": sorted(user_name_list)}, detail=s.Users_GET_OkResponseSchema.description)
@s.UsersAPI.post(schema=s.Users_POST_RequestSchema(), tags=[s.UsersTag], response_schemas=s.Users_POST_responses) @view_config(route_name=s.UsersAPI.name, request_method="POST")
[docs]def create_user_view(request): """ Create a new user. """ user_name = ar.get_multiformat_post(request, "user_name") email = ar.get_multiformat_post(request, "email") password = ar.get_multiformat_post(request, "password") group_name = ar.get_multiformat_post(request, "group_name") uu.check_user_info(user_name, email, password, group_name) return uu.create_user(user_name, password, email, group_name, db_session=request.db)
@s.UserAPI.put(schema=s.User_PUT_RequestSchema(), tags=[s.UsersTag], response_schemas=s.User_PUT_responses) @s.LoggedUserAPI.put(schema=s.User_PUT_RequestSchema(), tags=[s.LoggedUserTag], response_schemas=s.LoggedUser_PUT_responses) @view_config(route_name=s.UserAPI.name, request_method="PUT")
[docs]def update_user_view(request): """ Update user information by user name. """ user_name = ar.get_value_matchdict_checked(request, key="user_name") ax.verify_param(user_name, paramCompare=get_constant("MAGPIE_LOGGED_USER"), notEqual=True, httpError=HTTPBadRequest, paramName="user_name", content={u"user_name": user_name}, msgOnFail=s.Service_PUT_BadRequestResponseSchema_ReservedKeyword.description) user = ar.get_user_matchdict_checked(request, user_name_key="user_name") new_user_name = ar.get_multiformat_post(request, "user_name", default=user.user_name) new_email = ar.get_multiformat_post(request, "email", default=user.email) new_password = ar.get_multiformat_post(request, "password", default=user.user_password) uu.check_user_info(new_user_name, new_email, new_password, group_name=new_user_name) update_username = user.user_name != new_user_name update_password = user.user_password != new_password update_email = user.email != new_email ax.verify_param(any([update_username, update_password, update_email]), isTrue=True, httpError=HTTPBadRequest, content={u"user_name": user.user_name}, msgOnFail=s.User_PUT_BadRequestResponseSchema.description) if user.user_name != new_user_name: existing_user = ax.evaluate_call(lambda: UserService.by_user_name(new_user_name, db_session=request.db), fallback=lambda: request.db.rollback(), httpError=HTTPForbidden, msgOnFail=s.User_PUT_ForbiddenResponseSchema.description) ax.verify_param(existing_user, isNone=True, httpError=HTTPConflict, msgOnFail=s.User_PUT_ConflictResponseSchema.description) user.user_name = new_user_name if user.email != new_email: user.email = new_email if user.user_password != new_password and new_password is not None: UserService.set_password(user, new_password) UserService.regenerate_security_code(user) return ax.valid_http(httpSuccess=HTTPOk, detail=s.Users_PUT_OkResponseSchema.description)
@s.UserAPI.get(tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.User_GET_responses) @s.LoggedUserAPI.get(tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUser_GET_responses) @view_config(route_name=s.UserAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_view(request): """ Get user information by name. """ user = ar.get_user_matchdict_checked_or_logged(request) return ax.valid_http(httpSuccess=HTTPOk, content={u"user": uf.format_user(user)}, detail=s.User_GET_OkResponseSchema.description)
@s.UserAPI.delete(schema=s.User_DELETE_RequestSchema(), tags=[s.UsersTag], response_schemas=s.User_DELETE_responses) @s.LoggedUserAPI.delete(schema=s.User_DELETE_RequestSchema(), tags=[s.LoggedUserTag], response_schemas=s.LoggedUser_DELETE_responses) @view_config(route_name=s.UserAPI.name, request_method="DELETE")
[docs]def delete_user_view(request): """ Delete a user by name. """ user = ar.get_user_matchdict_checked_or_logged(request) ax.evaluate_call(lambda: request.db.delete(user), fallback=lambda: request.db.rollback(), httpError=HTTPForbidden, msgOnFail=s.User_DELETE_ForbiddenResponseSchema.description) return ax.valid_http(httpSuccess=HTTPOk, detail=s.User_DELETE_OkResponseSchema.description)
@s.UserGroupsAPI.get(tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.UserGroups_GET_responses) @s.LoggedUserGroupsAPI.get(tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserGroups_GET_responses) @view_config(route_name=s.UserGroupsAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_groups_view(request): """ List all groups a user belongs to. """ user = ar.get_user_matchdict_checked_or_logged(request) group_names = uu.get_user_groups_checked(request, user) return ax.valid_http(httpSuccess=HTTPOk, content={u"group_names": group_names}, detail=s.UserGroups_GET_OkResponseSchema.description)
@s.UserGroupsAPI.post(schema=s.UserGroups_POST_RequestSchema(), tags=[s.UsersTag], response_schemas=s.UserGroups_POST_responses) @s.LoggedUserGroupsAPI.post(schema=s.UserGroups_POST_RequestSchema(), tags=[s.LoggedUserTag], response_schemas=s.LoggedUserGroups_POST_responses) @view_config(route_name=s.UserGroupsAPI.name, request_method="POST")
[docs]def assign_user_group_view(request): """ Assign a user to a group. """ user = ar.get_user_matchdict_checked_or_logged(request) group_name = ar.get_value_multiformat_post_checked(request, "group_name") group = ax.evaluate_call(lambda: GroupService.by_group_name(group_name, db_session=request.db), fallback=lambda: request.db.rollback(), httpError=HTTPForbidden, msgOnFail=s.UserGroups_POST_ForbiddenResponseSchema.description) ax.verify_param(group, notNone=True, httpError=HTTPNotFound, msgOnFail=s.UserGroups_POST_GroupNotFoundResponseSchema.description) ax.verify_param(user.id, paramCompare=[usr.id for usr in group.users], notIn=True, httpError=HTTPConflict, content={u"user_name": user.user_name, u"group_name": group.group_name}, msgOnFail=s.UserGroups_POST_ConflictResponseSchema.description) # noinspection PyArgumentList ax.evaluate_call(lambda: request.db.add(models.UserGroup(group_id=group.id, user_id=user.id)), fallback=lambda: request.db.rollback(), httpError=HTTPForbidden, msgOnFail=s.UserGroups_POST_RelationshipForbiddenResponseSchema.description, content={u"user_name": user.user_name, u"group_name": group.group_name}) return ax.valid_http(httpSuccess=HTTPCreated, detail=s.UserGroups_POST_CreatedResponseSchema.description, content={u"user_name": user.user_name, u"group_name": group.group_name})
@s.UserGroupAPI.delete(schema=s.UserGroup_DELETE_RequestSchema(), tags=[s.UsersTag], response_schemas=s.UserGroup_DELETE_responses) @s.LoggedUserGroupAPI.delete(schema=s.UserGroup_DELETE_RequestSchema(), tags=[s.LoggedUserTag], response_schemas=s.LoggedUserGroup_DELETE_responses) @view_config(route_name=s.UserGroupAPI.name, request_method="DELETE")
[docs]def delete_user_group_view(request): """ Remove a user from a group. """ db = request.db user = ar.get_user_matchdict_checked_or_logged(request) group = ar.get_group_matchdict_checked(request) def del_usr_grp(usr, grp): db.query(models.UserGroup) \ .filter(models.UserGroup.user_id == usr.id) \ .filter(models.UserGroup.group_id == grp.id) \ .delete() ax.evaluate_call(lambda: del_usr_grp(user, group), fallback=lambda: db.rollback(), httpError=HTTPNotFound, msgOnFail=s.UserGroup_DELETE_NotFoundResponseSchema.description, content={u"user_name": user.user_name, u"group_name": group.group_name}) return ax.valid_http(httpSuccess=HTTPOk, detail=s.UserGroup_DELETE_OkResponseSchema.description)
@s.UserResourcesAPI.get(schema=s.UserResources_GET_RequestSchema(), tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.UserResources_GET_responses) @s.LoggedUserResourcesAPI.get(schema=s.UserResources_GET_RequestSchema(), tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserResources_GET_responses) @view_config(route_name=s.UserResourcesAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_resources_view(request): """ List all resources a user has permissions on. """ inherit_groups_perms = asbool(ar.get_query_param(request, "inherit")) user = ar.get_user_matchdict_checked_or_logged(request) db = request.db def build_json_user_resource_tree(usr): json_res = {} services = ResourceService.all(models.Service, db_session=db) for svc in services: svc_perms = uu.get_user_service_permissions( user=usr, service=svc, request=request, inherit_groups_permissions=inherit_groups_perms) if svc.type not in json_res: json_res[svc.type] = {} res_perms_dict = uu.get_user_service_resources_permissions_dict( user=usr, service=svc, request=request, inherit_groups_permissions=inherit_groups_perms) json_res[svc.type][svc.resource_name] = format_service_resources( svc, db_session=db, service_perms=svc_perms, resources_perms_dict=res_perms_dict, show_all_children=False, show_private_url=False, ) return json_res usr_res_dict = ax.evaluate_call(lambda: build_json_user_resource_tree(user), fallback=lambda: db.rollback(), httpError=HTTPNotFound, msgOnFail=s.UserResources_GET_NotFoundResponseSchema.description, content={u"user_name": user.user_name, u"resource_types": [models.Service.resource_type_name]}) return ax.valid_http(httpSuccess=HTTPOk, content={u"resources": usr_res_dict}, detail=s.UserResources_GET_OkResponseSchema.description)
@s.UserInheritedResourcesAPI.get(tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.UserResources_GET_responses) @s.LoggedUserInheritedResourcesAPI.get(tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserResources_GET_responses) @view_config(route_name=s.UserInheritedResourcesAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_inherited_resources_view(request): """[DEPRECATED: use '/users/{user_name}/resources?inherit=true'] List all resources a user has permissions on with his inherited user and groups permissions.""" LOGGER.warning("Route deprecated: [{0}], Instead Use: [{1}]" .format(s.UserInheritedResourcesAPI.path, s.UserResourcesAPI.path + "?inherit=true")) return HTTPMovedPermanently(location=request.path.replace("/inherited_resources", "/resources?inherit=true"))
@s.UserResourcePermissionsAPI.get(schema=s.UserResourcePermissions_GET_RequestSchema(), tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.UserResourcePermissions_GET_responses) @s.LoggedUserResourcePermissionsAPI.get(schema=s.UserResourcePermissions_GET_RequestSchema(), tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserResourcePermissions_GET_responses) @view_config(route_name=s.UserResourcePermissionsAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_resource_permissions_view(request): """ List all permissions a user has on a specific resource. """ user = ar.get_user_matchdict_checked_or_logged(request) resource = ar.get_resource_matchdict_checked(request, "resource_id") inherit_groups_perms = asbool(ar.get_query_param(request, "inherit")) effective_perms = asbool(ar.get_query_param(request, "effective")) return uu.get_user_resource_permissions_response(user, resource, request, inherit_groups_permissions=inherit_groups_perms, effective_permissions=effective_perms)
@s.UserResourceInheritedPermissionsAPI.get(tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.UserResourcePermissions_GET_responses) @s.LoggedUserResourceInheritedPermissionsAPI.get(tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserResourcePermissions_GET_responses) @view_config(route_name=s.UserResourceInheritedPermissionsAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_resource_inherit_groups_permissions_view(request): """[DEPRECATED: use '/users/{user_name}/resources/{resource_id}/permissions?inherit=true'] List all permissions a user has on a specific resource with his inherited user and groups permissions.""" LOGGER.warning("Route deprecated: [{0}], Instead Use: [{1}]" .format(s.UserResourceInheritedPermissionsAPI.path, s.UserResourcePermissionsAPI.path + "?inherit=true")) return HTTPMovedPermanently(location=request.path.replace("/inherited_permissions", "/permissions?inherit=true"))
@s.UserResourcePermissionsAPI.post(schema=s.UserResourcePermissions_POST_RequestSchema(), tags=[s.UsersTag], response_schemas=s.UserResourcePermissions_POST_responses) @s.LoggedUserResourcePermissionsAPI.post(schema=s.UserResourcePermissions_POST_RequestSchema(), tags=[s.LoggedUserTag], response_schemas=s.LoggedUserResourcePermissions_POST_responses) @view_config(route_name=s.UserResourcePermissionsAPI.name, request_method="POST")
[docs]def create_user_resource_permission_view(request): """ Create a permission on specific resource for a user. """ user = ar.get_user_matchdict_checked_or_logged(request) resource = ar.get_resource_matchdict_checked(request) permission = ar.get_permission_multiformat_post_checked(request, resource) return uu.create_user_resource_permission_response(user, resource, permission, request.db)
@s.UserResourcePermissionAPI.delete(schema=s.UserResourcePermission_DELETE_RequestSchema(), tags=[s.UsersTag], response_schemas=s.UserResourcePermission_DELETE_responses) @s.LoggedUserResourcePermissionAPI.delete(schema=s.UserResourcePermission_DELETE_RequestSchema(), tags=[s.LoggedUserTag], response_schemas=s.LoggedUserResourcePermission_DELETE_responses) @view_config(route_name=s.UserResourcePermissionAPI.name, request_method="DELETE")
[docs]def delete_user_resource_permission_view(request): """ Delete a direct permission on a resource for a user (not including his groups permissions). """ user = ar.get_user_matchdict_checked_or_logged(request) resource = ar.get_resource_matchdict_checked(request) permission = ar.get_permission_matchdict_checked(request, resource) return uu.delete_user_resource_permission_response(user, resource, permission, request.db)
@s.UserServicesAPI.get(tags=[s.UsersTag], schema=s.UserServices_GET_RequestSchema, api_security=s.SecurityEveryoneAPI, response_schemas=s.UserServices_GET_responses) @s.LoggedUserServicesAPI.get(tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserServices_GET_responses) @view_config(route_name=s.UserServicesAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_services_view(request): """ List all services a user has permissions on. """ user = ar.get_user_matchdict_checked_or_logged(request) cascade_resources = asbool(ar.get_query_param(request, "cascade")) inherit_groups_perms = asbool(ar.get_query_param(request, "inherit")) format_as_list = asbool(ar.get_query_param(request, "list")) svc_json = uu.get_user_services(user, request=request, cascade_resources=cascade_resources, inherit_groups_permissions=inherit_groups_perms, format_as_list=format_as_list) return ax.valid_http(httpSuccess=HTTPOk, content={u"services": svc_json}, detail=s.UserServices_GET_OkResponseSchema.description)
@s.UserInheritedServicesAPI.get(tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.UserServices_GET_responses) @s.LoggedUserInheritedServicesAPI.get(tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserServices_GET_responses) @view_config(route_name=s.UserInheritedServicesAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_inherited_services_view(request): """[DEPRECATED: use '/users/{user_name}/services?inherit=true'] List all services a user has permissions on with his inherited user and groups permissions.""" LOGGER.warning("Route deprecated: [{0}], Instead Use: [{1}]" .format(s.LoggedUserInheritedServicesAPI.path, s.LoggedUserServicesAPI.path + "?inherit=true")) return HTTPMovedPermanently(location=request.path.replace("/inherited_services", "/services?inherit=true"))
@s.UserServiceInheritedPermissionsAPI.get(schema=s.UserServicePermissions_GET_RequestSchema, tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.UserServicePermissions_GET_responses) @s.LoggedUserServiceInheritedPermissionsAPI.get(schema=s.UserServicePermissions_GET_RequestSchema, tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserServicePermissions_GET_responses) @view_config(route_name=s.UserServiceInheritedPermissionsAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_service_inherited_permissions_view(request): """[DEPRECATED: use '/users/{user_name}/services/{service_name}/permissions?inherit=true'] List all permissions a user has on a service using all his inherited user and groups permissions.""" LOGGER.warning("Route deprecated: [{0}], Instead Use: [{1}]" .format(s.UserServiceInheritedPermissionsAPI.path, s.UserServicePermissionsAPI.path + "?inherit=true")) return HTTPMovedPermanently(location=request.path.replace("/inherited_permissions", "/permissions?inherit=true"))
@s.UserServicePermissionsAPI.get(schema=s.UserServicePermissions_GET_RequestSchema, tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.UserServicePermissions_GET_responses) @s.LoggedUserServicePermissionsAPI.get(schema=s.UserServicePermissions_GET_RequestSchema, tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserServicePermissions_GET_responses) @view_config(route_name=s.UserServicePermissionsAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_service_permissions_view(request): """ List all permissions a user has on a service. """ user = ar.get_user_matchdict_checked_or_logged(request) service = ar.get_service_matchdict_checked(request) inherit_groups_perms = asbool(ar.get_query_param(request, "inherit")) perms = ax.evaluate_call(lambda: uu.get_user_service_permissions(service=service, user=user, request=request, inherit_groups_permissions=inherit_groups_perms), fallback=lambda: request.db.rollback(), httpError=HTTPNotFound, msgOnFail=s.UserServicePermissions_GET_NotFoundResponseSchema.description, content={u"service_name": str(service.resource_name), u"user_name": str(user.user_name)}) return ax.valid_http(httpSuccess=HTTPOk, detail=s.UserServicePermissions_GET_OkResponseSchema.description, content={u"permission_names": sorted(p.value for p in perms)})
@s.UserServicePermissionsAPI.post(schema=s.UserServicePermissions_POST_RequestSchema, tags=[s.UsersTag], response_schemas=s.UserServicePermissions_POST_responses) @s.LoggedUserServicePermissionsAPI.post(schema=s.UserServicePermissions_POST_RequestSchema, tags=[s.LoggedUserTag], response_schemas=s.LoggedUserServicePermissions_POST_responses) @view_config(route_name=s.UserServicePermissionsAPI.name, request_method="POST")
[docs]def create_user_service_permission_view(request): """ Create a permission on a service for a user. """ user = ar.get_user_matchdict_checked_or_logged(request) service = ar.get_service_matchdict_checked(request) permission = ar.get_permission_multiformat_post_checked(request, service) return uu.create_user_resource_permission_response(user, service, permission, request.db)
@s.UserServicePermissionAPI.delete(schema=s.UserServicePermission_DELETE_RequestSchema, tags=[s.UsersTag], response_schemas=s.UserServicePermission_DELETE_responses) @s.LoggedUserServicePermissionAPI.delete(schema=s.UserServicePermission_DELETE_RequestSchema, tags=[s.LoggedUserTag], response_schemas=s.LoggedUserServicePermission_DELETE_responses) @view_config(route_name=s.UserServicePermissionAPI.name, request_method="DELETE")
[docs]def delete_user_service_permission_view(request): """ Delete a direct permission on a service for a user (not including his groups permissions). """ user = ar.get_user_matchdict_checked_or_logged(request) service = ar.get_service_matchdict_checked(request) permission = ar.get_permission_matchdict_checked(request, service) return uu.delete_user_resource_permission_response(user, service, permission, request.db)
@s.UserServiceResourcesAPI.get(schema=s.UserServiceResources_GET_RequestSchema, tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.UserServiceResources_GET_responses) @s.LoggedUserServiceResourcesAPI.get(schema=s.UserServiceResources_GET_RequestSchema, tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserServiceResources_GET_responses) @view_config(route_name=s.UserServiceResourcesAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_service_resources_view(request): """ List all resources under a service a user has permission on. """ inherit_groups_perms = asbool(ar.get_query_param(request, "inherit")) user = ar.get_user_matchdict_checked_or_logged(request) service = ar.get_service_matchdict_checked(request) service_perms = uu.get_user_service_permissions( user, service, request=request, inherit_groups_permissions=inherit_groups_perms) resources_perms_dict = uu.get_user_service_resources_permissions_dict( user, service, request=request, inherit_groups_permissions=inherit_groups_perms) user_svc_res_json = format_service_resources( service=service, db_session=request.db, service_perms=service_perms, resources_perms_dict=resources_perms_dict, show_all_children=False, show_private_url=False, ) return ax.valid_http(httpSuccess=HTTPOk, detail=s.UserServiceResources_GET_OkResponseSchema.description, content={u"service": user_svc_res_json})
@s.UserServiceInheritedResourcesAPI.get(tags=[s.UsersTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.UserServiceResources_GET_responses) @s.LoggedUserServiceInheritedResourcesAPI.get(tags=[s.LoggedUserTag], api_security=s.SecurityEveryoneAPI, response_schemas=s.LoggedUserServiceResources_GET_responses) @view_config(route_name=s.UserServiceInheritedResourcesAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs]def get_user_service_inherited_resources_view(request): """[DEPRECATED: use '/users/{user_name}/services/{service_name}/resources?inherit=true'] List all resources under a service a user has permission on using all his inherited user and groups permissions.""" LOGGER.warning("Route deprecated: [{0}], Instead Use: [{1}]" .format(s.UserServiceInheritedResourcesAPI.path, s.UserServiceResourcesAPI.path + "?inherit=true")) return HTTPMovedPermanently(location=request.path.replace("/inherited_resources", "/resources?inherit=true"))