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)
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
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
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)