Пример #1
0
    def _dispatch_search_instance(self, request, data, request_id):
        options = self._get_options(request)

        filter_obj = get_filter_obj(data.get("filter"), ["parent", "keyword"])

        if filter_obj.keyword is None or len(filter_obj.keyword) < 2:
            raise KeywordTooShortException(
                "the length of keyword should be greater than or equals to 2")

        page_obj = get_page_obj(data.get("page"))

        provider = self._provider[data["type"]]

        pre_process = getattr(provider, "pre_search_instance", None)
        if pre_process and callable(pre_process):
            pre_process(filter_obj, page_obj, **options)

        search_function = getattr(provider, "search_instance", None)
        if not (search_function and callable(search_function)):
            return fail_response(
                404, "resource type: {} not support search instance".format(
                    data["type"]), request_id)

        result = provider.search_instance(filter_obj, page_obj, **options)

        return success_response(result.to_dict(), request_id)
Пример #2
0
def test_gen_page_obj():
    page_data = {"limit": 1, "offset": 2}

    page_obj = utils.get_page_obj(page_data)

    assert page_obj.limit == 1
    assert page_obj.offset == 2

    page_data = {
        "limit": 1,
    }

    page_obj = utils.get_page_obj(page_data)

    assert page_obj.limit == 1
    assert page_obj.offset == 0

    # test slice property

    page_data = {"limit": 4, "offset": 0}

    page_obj = utils.get_page_obj(page_data)

    assert page_obj.slice_from == 0
    assert page_obj.slice_to == 4

    page_data = {"limit": 4, "offset": 3}

    page_obj = utils.get_page_obj(page_data)

    assert page_obj.slice_from == 3
    assert page_obj.slice_to == 7

    page_data = {"limit": 0, "offset": 0}

    page_obj = utils.get_page_obj(page_data)

    assert page_obj.slice_from == 0
    assert page_obj.slice_to is None
Пример #3
0
    def _dispatch_list_instance_by_policy(self, request, data, request_id):
        options = self._get_options(request)

        filter_obj = get_filter_obj(data.get("filter"), ["expression"])
        page_obj = get_page_obj(data.get("page"))

        provider = self._provider[data["type"]]

        pre_process = getattr(provider, "pre_list_instance_by_policy", None)
        if pre_process and callable(pre_process):
            pre_process(filter_obj, page_obj, **options)

        result = provider.list_instance_by_policy(filter_obj, page_obj,
                                                  **options)

        return success_response(result.to_list(), request_id)
Пример #4
0
    def _dispatch_list_instance(self, request, data, request_id):
        options = self._get_options(request)

        filter_obj = get_filter_obj(
            data.get("filter"), ["parent", "search", "resource_type_chain"])
        page_obj = get_page_obj(data.get("page"))

        provider = self._provider[data["type"]]

        pre_process = getattr(provider, "pre_list_instance", None)
        if pre_process and callable(pre_process):
            pre_process(filter_obj, page_obj, **options)

        result = provider.list_instance(filter_obj, page_obj, **options)

        return success_response(result.to_dict(), request_id)
Пример #5
0
    def _dispatch_list_attr_value(self, request, data, request_id):
        options = self._get_options(request)

        filter_obj = get_filter_obj(data.get("filter"),
                                    ["attr", "keyword", "ids"])
        page_obj = get_page_obj(data.get("page"))

        provider = self._provider[data["type"]]

        pre_process = getattr(provider, "pre_list_attr_value", None)
        if pre_process and callable(pre_process):
            pre_process(filter_obj, page_obj, **options)

        result = provider.list_attr_value(filter_obj, page_obj, **options)

        return success_response(result.to_dict(), request_id)
Пример #6
0
 def _parse_filter_and_page(self, data: Dict) -> (FancyDict, Page):
     filter_obj = get_filter_obj(
         data["filter"],
         ["ids", "parent", "search", "resource_type_chain", "keyword"])
     page_obj = get_page_obj(data.get("page"))
     return filter_obj, page_obj
Пример #7
0
 def _parse_filter_and_page(self, data):
     filter_obj = get_filter_obj(
         data["filter"], ["ids", "parent", "search", "resource_type_chain"])
     page_obj = get_page_obj(data.get("page"))
     return filter_obj, page_obj