def matchmaker_delete(request, institute_id, case_name): """Delete all affected samples for a case from MatchMaker Args: request(werkzeug.local.LocalProxy) institute_id(str): _id of an institute case_name(str): display name of a case """ # Check that general MME request requirements are fulfilled matchmaker_check_requirements(request) _, case_obj = institute_and_case(store, institute_id, case_name) # Delete each patient submitted for this case for patient in case_obj.get("mme_submission", {}).get("patients", []): # Send delete request to server and capture server's response patient_id = patient["id"] resp = matchmaker.patient_delete(patient_id) category = "warning" if resp["status_code"] == 200: category = "success" # update case by removing mme submission # and create events for patients deletion from MME user_obj = store.user(current_user.email) store.case_mme_delete(case_obj=case_obj, user_obj=user_obj) flash( f"Deleted patient '{patient_id}', case '{case_name}' from MatchMaker", "success", ) continue flash(f"An error occurred while deleting patient from MatchMaker", "danger")
def matchmaker_delete(institute_id, case_name): """Remove a case from MatchMaker""" # check that only authorized users can delete patients from MME user_obj = store.user(current_user.email) if 'mme_submitter' not in user_obj['roles']: flash('unauthorized request', 'warning') return redirect(request.referrer) institute_obj, case_obj = institute_and_case(store, institute_id, case_name) # Required params for sending a delete request to MME: mme_base_url = current_app.config.get('MME_URL') mme_token = current_app.config.get('MME_TOKEN') if not mme_base_url or not mme_token: flash('An error occurred reading matchmaker connection parameters. Please check config file!', 'danger') return redirect(request.referrer) delete_result = controllers.mme_delete(case_obj, mme_base_url, mme_token) n_deleted = 0 category = 'warning' for resp in delete_result: if resp['status_code'] == 200: n_deleted += 1 else: flash(resp['message'], category) if n_deleted: category = 'success' # update case by removing mme submission # and create events for patients deletion from MME user_obj = store.user(current_user.email) store.case_mme_delete(case_obj=case_obj, user_obj=user_obj) flash('Number of patients deleted from Matchmaker: {} out of {}'.format(n_deleted, len(delete_result)), category) return redirect(request.referrer)
def matchmaker_delete(institute_id, case_name): """Remove a case from MatchMaker""" # check that only authorized users can delete patients from MME user_obj = store.user(current_user.email) if "mme_submitter" not in user_obj["roles"]: flash("unauthorized request", "warning") return redirect(request.referrer) institute_obj, case_obj = institute_and_case(store, institute_id, case_name) # Required params for sending a delete request to MME: mme_base_url = current_app.config.get("MME_URL") mme_token = current_app.config.get("MME_TOKEN") if not mme_base_url or not mme_token: flash( "An error occurred reading matchmaker connection parameters. Please check config file!", "danger", ) return redirect(request.referrer) delete_result = controllers.mme_delete(case_obj, mme_base_url, mme_token) n_deleted = 0 category = "warning" for resp in delete_result: if resp["status_code"] == 200: n_deleted += 1 else: flash(resp["message"], category) if n_deleted: category = "success" # update case by removing mme submission # and create events for patients deletion from MME user_obj = store.user(current_user.email) store.case_mme_delete(case_obj=case_obj, user_obj=user_obj) flash( "Number of patients deleted from Matchmaker: {} out of {}".format( n_deleted, len(delete_result)), category, ) return redirect(request.referrer)