예제 #1
0
def group_list(request, domain=None, project=None, user=None, filters=None):
    manager = keystoneclient(request, admin=True).groups
    groups = []
    kwargs = {
        "domain": domain,
        "user": user,
        "name": None
    }
    if filters is not None:
        kwargs.update(filters)
    if 'id' in kwargs:
        try:
            groups = [manager.get(kwargs['id'])]
        except keystone_exceptions.NotFound:
            raise exceptions.NotFound()
    else:
        groups = manager.list(**kwargs)

    if project:
        project_groups = []
        for group in groups:
            roles = roles_for_group(request, group=group.id, project=project)
            if roles:
                project_groups.append(group)
        groups = project_groups
    return groups
예제 #2
0
    def get_context_data(self, **kwargs):

        context = super(BannerView, self).get_context_data(**kwargs)

        if not self.request.is_ajax():
            raise exceptions.NotFound()

        if (not self.request.user.is_authenticated
                or not self.request.user.is_superuser):
            context["alarmbanner"] = False
        elif 'dc_admin' in self.request.META.get('HTTP_REFERER'):
            summaries = self.get_subcloud_data()
            central_summary = self.get_data()
            summaries.append(central_summary)
            context["dc_admin"] = True
            context["alarmbanner"] = True
            context["OK"] = len([s for s in summaries if s.status == 'OK'])
            context["degraded"] = len(
                [s for s in summaries if s.status == 'degraded'])
            context["critical"] = len(
                [s for s in summaries if s.status == 'critical'])
            context["disabled"] = len(
                [s for s in summaries if s.status == 'disabled'])
        elif is_service_enabled(self.request, 'platform'):
            context["summary"] = self.get_data()
            context["alarmbanner"] = True

        return context
예제 #3
0
    def __init__(self, request, *args, **kwargs):
        super(UpdateProjectMembersAction,
              self).__init__(request, *args, **kwargs)
        err_msg = _('Unable to retrieve user list. Please try again later.')
        project_id = ''
        if 'project_id' in args[0]:
            project_id = args[0]['project_id']

        # Get the default role
        try:
            default_role = api.keystone.get_default_role(self.request)
            # Default role is necessary to add members to a project
            if default_role is None:
                default = getattr(settings, "OPENSTACK_KEYSTONE_DEFAULT_ROLE",
                                  None)
                msg = _('Could not find default role "%s" in Keystone') % \
                        default
                raise exceptions.NotFound(msg)
        except:
            exceptions.handle(self.request,
                              err_msg,
                              redirect=reverse(INDEX_URL))
        self.fields['default_role'].initial = default_role.id

        # Get list of available users
        all_users = []
        domain_context = request.session.get('domain_context', None)
        try:
            all_users = api.keystone.user_list(request, domain=domain_context)
        except:
            exceptions.handle(request, err_msg)
        users_list = [(user.id, user.name) for user in all_users]

        # Get list of roles
        role_list = []
        try:
            role_list = api.keystone.role_list(request)
        except:
            exceptions.handle(request, err_msg, redirect=reverse(INDEX_URL))
        for role in role_list:
            field_name = "role_" + role.id
            label = _(role.name)
            self.fields[field_name] = forms.MultipleChoiceField(required=False,
                                                                label=label)
            self.fields[field_name].choices = users_list
            self.fields[field_name].initial = []

        # Figure out users & roles
        if project_id:
            for user in all_users:
                try:
                    roles = api.keystone.roles_for_user(
                        self.request, user.id, project_id)
                except:
                    exceptions.handle(request,
                                      err_msg,
                                      redirect=reverse(INDEX_URL))
                for role in roles:
                    self.fields["role_" + role.id].initial.append(user.id)
예제 #4
0
 def get_initial(self):
     share = self.get_object()
     if not share or isinstance(share, Exception):
         raise exceptions.NotFound()
     return {
         'share_id': self.kwargs["share_id"],
         'name': share.name or share.id,
     }
예제 #5
0
    def get_context_data(self, **kwargs):
        context = super(ResetPasswordView, self).get_context_data(**kwargs)
        user_id = self.request.REQUEST.get('uid')
        email = self.request.REQUEST.get('email')
        key = self.request.REQUEST.get('tid')

        if any((not user_id, not email, not key)):
            raise exceptions.NotFound()

        params = self.request.session.get(key, None)
        LOG.error("Params from session: %s", str(params))

        if params is None or params['uid'] != user_id or \
                params['email'] != email:
            #messages.error(self.request, _("Request expired."))
            raise exceptions.NotFound(_("Request expired."))

        return context
예제 #6
0
 def _get_default_object(self, request):
     default_role = fiware_api.keystone.get_member_role(request)
     # Default role is necessary to add members to a project
     if default_role is None:
         default = getattr(settings, "OPENSTACK_KEYSTONE_DEFAULT_ROLE",
                           None)
         msg = (('Could not find default role "%s" in Keystone') % default)
         raise exceptions.NotFound(msg)
     return default_role
예제 #7
0
파일: tests.py 프로젝트: somya51p/manila-ui
 def test_detail_view_with_exception(self):
     message = test_data.fake_message_1
     url = reverse('horizon:admin:user_messages:user_messages_detail',
                   args=[message.id])
     self.mock_object(
         api_manila, "messages_get",
         mock.Mock(side_effect=horizon_exceptions.NotFound(404)))
     res = self.client.get(url)
     self.assertRedirectsNoFollow(res, INDEX_URL)
     api_manila.messages_get.assert_called_once_with(mock.ANY, message.id)
예제 #8
0
파일: tests.py 프로젝트: akinsWin/manila-ui
    def test_detail_view_with_exception(self):
        url = reverse('horizon:project:shares:security_service_detail',
                      args=[test_data.sec_service.id])
        self.mock_object(
            api_manila, "security_service_get",
            mock.Mock(side_effect=horizon_exceptions.NotFound(404)))

        res = self.client.get(url)

        self.assertRedirectsNoFollow(res, SHARE_INDEX_URL)
        api_manila.security_service_get.assert_called_once_with(
            mock.ANY, test_data.sec_service.id)
예제 #9
0
파일: tests.py 프로젝트: somya51p/manila-ui
    def test_detail_view_with_exception(self):
        url = reverse('horizon:admin:share_snapshots:share_snapshot_detail',
                      args=[test_data.snapshot.id])
        self.mock_object(
            api_manila, "share_snapshot_get",
            mock.Mock(side_effect=horizon_exceptions.NotFound(404)))

        res = self.client.get(url)

        self.assertRedirectsNoFollow(res, INDEX_URL)
        api_manila.share_snapshot_get.assert_called_once_with(
            mock.ANY, test_data.snapshot.id)
예제 #10
0
def user_list(request, project=None, domain=None, group=None, filters=None):
    users = []
    kwargs = {"project": project, "domain": domain, "group": group}
    if filters is not None:
        kwargs.update(filters)
    if 'id' in kwargs:
        try:
            users = [user_get(request, kwargs['id'])]
        except keystone_exceptions.NotFound:
            raise exceptions.NotFound()
    else:
        users = keystoneclient(request, admin=True).users.list(**kwargs)
    return [VERSIONS.upgrade_v2_user(user) for user in users]
예제 #11
0
def get_account_id(request, domain_id=None):
    if domain_id is None:
        ref = request.user.user_domain_id
    else:
        ref = domain_id
    query = [{
        "field": "account.ref_resource",
        "op": "eq",
        "value": ref,
        "type": "string",
    }]
    params = [
        "pagation.number=1", "pagation.count=1", "q.orderby=account.id",
        "q.sort=asc"
    ]
    try:
        account = chakra.account_list(request, query, params)
        account = [a.to_dict() for a in account]
        if len(account) == 0:
            raise exceptions.NotFound("Can't find account of current user")
        return account[0].get('id')
    except:
        raise exceptions.NotFound("Can't find account of current user")
예제 #12
0
 def post(self, request, query):
     data = request.DATA
     project_id = request.user.project_id
     domain_id = request.user.user_domain_id
     _account_id = get_account_id(request)
     if _account_id == None:
         raise exceptions.NotFound("Your User has no billing account")
     data.update({
         'project_id': project_id,
         'domain_id': domain_id,
         'account_id': _account_id,
         'provider': 'openstack'
     })
     product = billing.product_create(request, data).to_dict()
     return product
예제 #13
0
def get_balance(request):
    domain_id = request.user.user_domain_id
    query = [{
        "field": "account.ref_resource",
        "op": "eq",
        "value": domain_id,
        "type": "string",
    }]
    param = [
        "pagation.number=1", "pagation.count=1", "q.orderby=account.id",
        "q.sort=asc"
    ]
    try:
        items = chakra.account_list(request, query, param)
        items = [i.to_dict() for i in items]
        if len(items):
            return items[0].get('balance')
    except:
        raise exceptions.NotFound("Can't find account of current user")
예제 #14
0
def get_expertid_from_keystone_user(request, redirect=None):
    expertid = None
    try:
        user = api.keystone.user_get(request, request.user.id, admin=False)
        expertid = getattr(user, 'expertid', None)
    except Exception:
        if redirect:
            exceptions.handle(request,
                              _('Unable to retrieve user information.'),
                              redirect=redirect)
            return None

    if not expertid and redirect:
        try:
            raise exceptions.NotFound(
                _('Can not find index in the expert table for the current user'
                  ))
        except Exception:
            exceptions.handle(request, u"非法用户", redirect=redirect)
    return expertid
예제 #15
0
 def post(self, request, payment_id):
     requestData = request.DATA
     _account_id = get_account_id(request)
     if _account_id == None:
         raise exceptions.NotFound("Your User has no billing account.")
     if requestData.get("type") == "invcode":
         return create_invcode_payment(request, requestData.get('invcode'),
                                       float(requestData.get('value')),
                                       _account_id)
     body = {
         'ptype': requestData.get('type'),
         'amount': float(requestData.get('value')),
         'account_id': _account_id
     }
     new_payment = chakra.payment_create(request, **body)
     items = new_payment.to_dict()
     tn = items.get('trade_num')
     pay_instance = OnlinePayFactory.get_instance(requestData.get("type"))
     pay_url = pay_instance.get_pay_url(tn, requestData.get('value'),
                                        getattr(settings, 'ALIPAY_SUBJECT'),
                                        None)
     return pay_url, items.get('id')
예제 #16
0
    def get_by_node(cls, request, node):
        """Return the specified Heat Resource given a Node

        :param request: request object
        :type  request: django.http.HttpRequest

        :param node: node to match
        :type  node: tuskar_ui.api.node.Node

        :return: matching Resource, or None if no Resource matches
                 the Node
        :rtype:  tuskar_ui.api.heat.Resource
        """
        # TODO(tzumainn): this is terribly inefficient, but I don't see a
        # better way.  Maybe if Heat set some node metadata. . . ?
        if node.instance_uuid:
            for stack in Stack.list(request):
                for resource in stack.resources(with_joins=False):
                    if resource.physical_resource_id == node.instance_uuid:
                        return resource
        msg = _('Could not find resource matching node "%s"') % node.uuid
        raise exceptions.NotFound(msg)
예제 #17
0
    def __init__(self, request, *args, **kwargs):
        super(UpdateProjectMembersAction,
              self).__init__(request, *args, **kwargs)
        err_msg = _('Unable to retrieve user list. Please try again later.')
        # Use the domain_id from the project
        domain_id = self.initial.get("domain_id", None)
        project_id = ''
        if 'project_id' in self.initial:
            project_id = self.initial['project_id']

        # Get the default role
        try:
            default_role = api.keystone.get_default_support_role(self.request)
            # Default role is necessary to add members to a project
            if default_role is None:
                default = getattr(settings,
                                  "OPENSTACK_KEYSTONE_DEFAULT_SUPPORT_ROLE",
                                  None)
                msg = (_('Could not find default role "%s" in Keystone') %
                       default)
                raise exceptions.NotFound(msg)
        except Exception:
            LOG.warn(traceback.format_exc())
            exceptions.handle(self.request,
                              err_msg,
                              redirect=reverse(INDEX_URL))
        default_role_name = self.get_default_role_field_name()
        self.fields[default_role_name] = forms.CharField(required=False)
        self.fields[default_role_name].initial = default_role.id

        # Get list of available users
        # only list user have support role
        all_users = []
        try:
            if policy.check((("identity", "admin_required"),), request) or\
               policy.check((("identity", "support_required"),), request):
                all_users = api.keystone.user_list(
                    request,
                    domain=domain_id,
                    filters={'default_role_id': default_role.id})
            else:
                parent_id = self.request.user.id
                all_users = api.keystone.user_list(
                    self.request,
                    domain=domain_id,
                    filters={
                        "parent_id": parent_id,
                        'default_role_id': default_role.id
                    },
                )
        except Exception:
            exceptions.handle(request, err_msg)
        users_list = [(user.id, user.name) for user in all_users]

        # Get list of roles
        role_list = [default_role]
        # try:
        #     role_list = api.keystone.role_list(request)
        #     for role in role_list[:]:
        #         if not request.user.is_superuser and role.name != default_role.name:
        #             role_list.remove(role)
        # except Exception:
        #     exceptions.handle(request,
        #                       err_msg,
        #                       redirect=reverse(INDEX_URL))
        for role in role_list:
            field_name = self.get_member_field_name(role.id)
            label = role.name
            self.fields[field_name] = forms.MultipleChoiceField(required=False,
                                                                label=label)
            self.fields[field_name].choices = users_list
            self.fields[field_name].initial = []

        # Figure out users & roles
        if project_id:
            try:
                users_roles = api.keystone.get_project_users_roles(
                    request, project_id)
            except Exception:
                exceptions.handle(request,
                                  err_msg,
                                  redirect=reverse(INDEX_URL))

            for user_id in users_roles:
                roles_ids = users_roles[user_id]
                for role_id in roles_ids:
                    if role_id == default_role.id:
                        field_name = self.get_member_field_name(role_id)
                        self.fields[field_name].initial.append(user_id)
예제 #18
0
    def __init__(self, request, *args, **kwargs):
        super(UpdateProjectGroupsAction, self).__init__(request,
                                                        *args,
                                                        **kwargs)
        err_msg = _('Unable to retrieve group list. Please try again later.')
        # Use the domain_id from the project
        domain_id = self.initial.get("domain_id", None)
        project_id = ''
        if 'project_id' in self.initial:
            project_id = self.initial['project_id']

        # Get the default role
        try:
            default_role = api.keystone.get_default_role(self.request)
            # Default role is necessary to add members to a project
            if default_role is None:
                default = getattr(settings,
                                  "OPENSTACK_KEYSTONE_DEFAULT_ROLE", None)
                msg = (_('Could not find default role "%s" in Keystone') %
                       default)
                raise exceptions.NotFound(msg)
        except Exception:
            exceptions.handle(self.request,
                              err_msg,
                              redirect=reverse(INDEX_URL))
        default_role_name = self.get_default_role_field_name()
        self.fields[default_role_name] = forms.CharField(required=False)
        self.fields[default_role_name].initial = default_role.id

        # Get list of available groups
        all_groups = []
        try:
            all_groups = api.keystone.group_list(request,
                                                 domain=domain_id)
        except Exception:
            exceptions.handle(request, err_msg)
        groups_list = [(group.id, group.name) for group in all_groups]

        # Get list of roles
        role_list = []
        try:
            role_list = api.keystone.role_list(request)
        except Exception:
            exceptions.handle(request,
                              err_msg,
                              redirect=reverse(INDEX_URL))
        for role in role_list:
            field_name = self.get_member_field_name(role.id)
            label = role.name
            self.fields[field_name] = forms.MultipleChoiceField(required=False,
                                                                label=label)
            self.fields[field_name].choices = groups_list
            self.fields[field_name].initial = []

        # Figure out groups & roles
        if project_id:
            try:
                groups_roles = api.keystone.get_project_groups_roles(
                    request, project_id)
            except Exception:
                exceptions.handle(request,
                                  err_msg,
                                  redirect=reverse(INDEX_URL))

            for group_id in groups_roles:
                roles_ids = groups_roles[group_id]
                for role_id in roles_ids:
                    field_name = self.get_member_field_name(role_id)
                    self.fields[field_name].initial.append(group_id)
예제 #19
0
    def __init__(self, request, *args, **kwargs):
        super(UpdateDomainUsersAction, self).__init__(request, *args, **kwargs)
        domain_id = self.initial.get("domain_id", '')

        # Get the default role
        try:
            default_role = api.keystone.get_default_role(self.request)
            # Default role is necessary to add members to a domain
            if default_role is None:
                default = getattr(settings, "OPENSTACK_KEYSTONE_DEFAULT_ROLE",
                                  None)
                msg = (_('Could not find default role "%s" in Keystone') %
                       default)
                raise exceptions.NotFound(msg)
        except Exception:
            exceptions.handle(self.request,
                              _('Unable to find default role.'),
                              redirect=reverse(constants.DOMAINS_INDEX_URL))
        default_role_name = self.get_default_role_field_name()
        self.fields[default_role_name] = forms.CharField(required=False)
        self.fields[default_role_name].initial = default_role.id

        # Get list of available users
        all_users = []
        try:
            all_users = api.keystone.user_list(request, domain=domain_id)
        except Exception:
            exceptions.handle(request, _('Unable to retrieve user list.'))
        users_list = [(user.id, user.name) for user in all_users]

        # Get list of roles
        role_list = []
        try:
            role_list = api.keystone.role_list(request)
        except Exception:
            exceptions.handle(request,
                              _('Unable to retrieve role list.'),
                              redirect=reverse(constants.DOMAINS_INDEX_URL))
        for role in role_list:
            field_name = self.get_member_field_name(role.id)
            label = role.name
            self.fields[field_name] = forms.MultipleChoiceField(required=False,
                                                                label=label)
            self.fields[field_name].choices = users_list
            self.fields[field_name].initial = []

        # Figure out users & roles
        if domain_id:
            try:
                users_roles = api.keystone.get_domain_users_roles(
                    request, domain_id)
            except Exception:
                exceptions.handle(request,
                                  _('Unable to retrieve user domain role '
                                    'assignments.'),
                                  redirect=reverse(
                                      constants.DOMAINS_INDEX_URL))

            for user_id in users_roles:
                roles_ids = users_roles[user_id]
                for role_id in roles_ids:
                    field_name = self.get_member_field_name(role_id)
                    self.fields[field_name].initial.append(user_id)
예제 #20
0
    def __init__(self, request, *args, **kwargs):
        super(UpdateProjectMembersAction,
              self).__init__(request, *args, **kwargs)
        err_msg = _('Unable to retrieve user list. Please try again later.')
        # Use the domain_id from the project
        domain_id = self.initial.get("domain_id", None)

        project_id = ''
        if 'project_id' in self.initial:
            project_id = self.initial['project_id']

        # Get the default role
        try:
            default_role = keystone.get_default_role(self.request)
            # Default role is necessary to add members to a project
            if default_role is None:
                default = getattr(settings, "OPENSTACK_KEYSTONE_DEFAULT_ROLE",
                                  None)
                msg = (_('Could not find default role "%s" in Keystone') %
                       default)
                raise exceptions.NotFound(msg)
        except Exception:
            exceptions.handle(self.request,
                              err_msg,
                              redirect=reverse(INDEX_URL))
        default_role_name = self.get_default_role_field_name()
        self.fields[default_role_name] = forms.CharField(required=False)
        self.fields[default_role_name].initial = default_role.id

        # Get list of available users
        all_users = []
        try:
            all_users = api.keystone.user_list(request, domain=domain_id)
        except Exception:
            exceptions.handle(request, err_msg)
        users_list = [(user.id, user.name) for user in all_users]

        users_list = []
        for user in all_users:
            tenants = []
            has_more = False
            services_user = False
            tenants, has_more = api.keystone.tenant_list(request, user=user.id)
            for tenant in tenants:
                if (getattr(user, 'tenantId', '') == tenant.id) and \
                        (tenant.name == 'services'):
                    services_user = True
            if services_user is False:
                users_list.append((user.id, user.name))

        # Get list of roles
        role_list = []
        try:
            role_list = api.keystone.role_list(request)
        except Exception:
            exceptions.handle(request, err_msg, redirect=reverse(INDEX_URL))
        for role in role_list:
            field_name = self.get_member_field_name(role.id)
            label = role.name
            self.fields[field_name] = forms.MultipleChoiceField(required=False,
                                                                label=label)
            self.fields[field_name].choices = users_list
            self.fields[field_name].initial = []

        # Figure out users & roles
        if project_id:
            try:
                users_roles = api.keystone.get_project_users_roles(
                    request, project_id)
            except Exception:
                exceptions.handle(request,
                                  err_msg,
                                  redirect=reverse(INDEX_URL))

            for user_id in users_roles:
                roles_ids = users_roles[user_id]
                for role_id in roles_ids:
                    field_name = self.get_member_field_name(role_id)
                    self.fields[field_name].initial.append(user_id)
예제 #21
0
    def __init__(self, request, *args, **kwargs):
        super(UpdateDomainGroupsAction, self).__init__(request, *args,
                                                       **kwargs)
        err_msg = _('Unable to retrieve group list. Please try again later.')
        domain_id = ''
        if 'domain_id' in args[0]:
            domain_id = args[0]['domain_id']

        # Get the default role
        try:
            default_role = api.keystone.get_default_role(self.request)
            # Default role is necessary to add members to a domain
            if default_role is None:
                default = getattr(settings, "OPENSTACK_KEYSTONE_DEFAULT_ROLE",
                                  None)
                msg = _('Could not find default role "%s" in Keystone') % \
                        default
                raise exceptions.NotFound(msg)
        except Exception:
            exceptions.handle(self.request,
                              err_msg,
                              redirect=reverse(constants.DOMAINS_INDEX_URL))
        default_role_name = self.get_default_role_field_name()
        self.fields[default_role_name] = forms.CharField(required=False)
        self.fields[default_role_name].initial = default_role.id

        # Get list of available groups
        all_groups = []
        try:
            all_groups = api.keystone.group_list(request, domain=domain_id)
        except Exception:
            exceptions.handle(request, err_msg)
        groups_list = [(group.id, group.name) for group in all_groups]

        # Get list of roles
        role_list = []
        try:
            role_list = api.keystone.role_list(request)
        except Exception:
            exceptions.handle(request,
                              err_msg,
                              redirect=reverse(constants.DOMAINS_INDEX_URL))
        for role in role_list:
            field_name = self.get_member_field_name(role.id)
            label = _(role.name)
            self.fields[field_name] = forms.MultipleChoiceField(required=False,
                                                                label=label)
            self.fields[field_name].choices = groups_list
            self.fields[field_name].initial = []

        # Figure out groups & roles
        if domain_id:
            for group in all_groups:
                try:
                    roles = api.keystone.roles_for_group(self.request,
                                                         group=group.id,
                                                         domain=domain_id)
                except Exception:
                    exceptions.handle(request,
                                      err_msg,
                                      redirect=reverse(
                                          constants.DOMAINS_INDEX_URL))
                for role in roles:
                    field_name = self.get_member_field_name(role.id)
                    self.fields[field_name].initial.append(group.id)
예제 #22
0
    def handle(self, request, data):
        # Create organization
        default_domain = api.keystone.get_default_domain(request)
        try:
            self.object = fiware_api.keystone.project_create(
                request,
                name=data['name'],
                description=data['description'],
                enabled=True,
                domain=default_domain,
                website='')

        except Exception:
            exceptions.handle(request, GENERIC_ERROR_MESSAGE, ignore=True)
            return False

        # Set organization and user id
        organization_id = self.object.id
        user_id = request.user.id

        LOG.debug('Organization %s created', organization_id)

        # Grant purchaser in all default apps
        default_apps = fiware_api.keystone.get_fiware_default_apps(
            self.request)
        purchaser_role = fiware_api.keystone.get_purchaser_role(self.request)
        try:
            for app in default_apps:
                fiware_api.keystone.add_role_to_organization(
                    self.request,
                    purchaser_role.id,
                    organization_id,
                    app.id,
                    use_idm_account=True)
                LOG.debug('Granted role %s in app %s', purchaser_role.name,
                          app.name)
        except Exception as e:
            exceptions.handle(
                self.request,
                redirect=reverse('horizon:idm:organizations:index'))
            return False

        # Find owner role id
        try:
            owner_role = fiware_api.keystone.get_owner_role(self.request)
            if owner_role is None:
                msg = ('Could not find owner role in Keystone')
                LOG.debug(msg)
                raise exceptions.NotFound(msg)
        except Exception as e:
            exceptions.handle(
                self.request,
                redirect=reverse('horizon:idm:organizations:index'))
            return False
        try:
            api.keystone.add_tenant_user_role(request,
                                              project=organization_id,
                                              user=user_id,
                                              role=owner_role.id)
            LOG.debug('Added user %s and organization %s to role %s', user_id,
                      organization_id, owner_role.id)
        except Exception:
            exceptions.handle(
                request, ('Failed to add {0} organization to list').format(
                    data['name']))
            return False

        response = shortcuts.redirect('switch_tenants', organization_id)
        return response