Пример #1
0
    def delete(self, path, int_list):
        """
        To delete multiple objects
        :param path: endpoints
        :param int_list: Optional String containing ',' separated ID's
        :return:
        """
        auth_response = check_authentication_response()
        if isinstance(auth_response, Response):
            return auth_response
        class_type = get_doc().collections[path]["collection"].class_.title

        if checkClassOp(class_type, "DELETE"):
            # Check if class_type supports PUT operation
            try:
                # Delete the Item with ID == id_
                crud.delete_multiple(int_list,
                                     class_type,
                                     session=get_session())
                response = {
                    "message":
                    "Object with ID %s successfully deleted" %
                    (int_list.split(','))
                }
                return set_response_headers(jsonify(response))

            except (ClassNotFound, InstanceNotFound) as e:
                status_code, message = e.get_HTTP()
                return set_response_headers(jsonify(message),
                                            status_code=status_code)

        abort(405)
Пример #2
0
    def test_delete_ids(self):
        objects = list()
        ids = "1,2,3"
        for index in range(len(ids.split(','))):
            object = gen_dummy_object(
                random.choice(self.doc_collection_classes), self.doc)
            objects.append(object)
        insert_response = crud.insert_multiple(objects_=objects,
                                               session=self.session,
                                               id_=ids)
        delete_response = crud.delete_multiple(id_=ids,
                                               type_=objects[0]["@type"],
                                               session=self.session)

        response_code = None
        id_list = ids.split(',')
        try:
            for index in range(len(id_list)):
                get_response = crud.get(id_=id_list[index],
                                        type_=objects[index]["@type"],
                                        session=self.session,
                                        api_name="api")
        except Exception as e:
            response_code, message = e.get_HTTP()
        assert 404 == response_code
Пример #3
0
def test_delete_multiple_id(drone_doc_parsed_classes, drone_doc, session):
    """Test CRUD insert when multiple ID's are given """
    objects = list()
    ids = '{},{}'.format(str(uuid.uuid4()), str(uuid.uuid4()))
    random_class = random.choice(drone_doc_parsed_classes)
    for index in range(len(ids.split(','))):
        object = gen_dummy_object(random_class, drone_doc)
        objects.append(object)
    insert_response = crud.insert_multiple(objects_=objects,
                                           session=session,
                                           id_=ids)
    delete_response = crud.delete_multiple(id_=ids,
                                           type_=random_class,
                                           session=session)

    response_code = None
    id_list = ids.split(',')
    try:
        for index in range(len(id_list)):
            get_response = crud.get(id_=id_list[index],
                                    type_=objects[index]['@type'],
                                    session=session,
                                    api_name='api')
    except Exception as e:
        error = e.get_HTTP()
        response_code = error.code
    assert 404 == response_code
Пример #4
0
def items_delete_response(path: str, int_list="") -> Response:
    """
    Handles DELETE operation to insert multiple items.

    :param path: Path for Item Collection
    :type path: str
    :param int_list: Optional String containing ',' separated ID's
    :type int_list: List
    :return: Appropriate response for the DELETE operation on multiple items.
    :rtype: Response
    """
    _, parsed_classes = get_collections_and_parsed_classes()
    if path in parsed_classes:
        class_type = getType(path, "DELETE")

    if checkClassOp(class_type, "DELETE"):
        # Check if class_type supports PUT operation
        try:
            # Delete the Item with ID == id_
            crud.delete_multiple(int_list, class_type, session=get_session())
            method = "DELETE"
            path_url = f"{get_hydrus_server_url()}{get_api_name()}/{path}"
            last_job_id = crud.get_last_modification_job_id(session=get_session())
            id_list = int_list.split(',')
            for item in id_list:
                resource_url = path_url + item
                new_job_id = crud.insert_modification_record(method,
                                                             resource_url,
                                                             session=get_session())
                send_sync_update(socketio=socketio, new_job_id=new_job_id,
                                 last_job_id=last_job_id, method=method,
                                 resource_url=resource_url)
                last_job_id = new_job_id
            status_description = f"Objects with ID {id_list} successfully deleted"
            status = HydraStatus(code=200,
                                 title="Objects successfully deleted",
                                 desc=status_description)
            return set_response_headers(jsonify(status.generate()))

        except (ClassNotFound, InstanceNotFound) as e:
            error = e.get_HTTP()
            return error_response(error)

    abort(405)