import requests
import concurrent.futures

def delete_defect(api_token, project_code, defect_id):
    base_url = "https://api.qase.io/v1/defect"
    url = f"{base_url}/{project_code}/{defect_id}"

    headers = {
        "accept": "application/json",
        "Token": api_token
    }

    response = requests.delete(url, headers=headers)
    return (defect_id, response.text)

def delete_defects(api_token, project_code, defect_ids):
    defect_ids = parse_defect_ids(defect_ids)

    with concurrent.futures.ThreadPoolExecutor() as executor:
        futures = [executor.submit(delete_defect, api_token, project_code, defect_id) for defect_id in defect_ids]

        for future in concurrent.futures.as_completed(futures):
            defect_id, response_text = future.result()
            print(f"Deleted defect with ID {defect_id}. Response: {response_text}")

def parse_defect_ids(defect_ids):
    result = set()
    for part in defect_ids.split(','):
        if '-' in part:
            start, end = map(int, part.split('-'))
            result.update(range(start, end + 1))
        else:
            result.add(int(part))
    return result

def main():
    api_token = input("Enter your Qase API token (get it from: https://app.qase.io/user/api/token): ")
    project_code = input("Enter the project code: ")
    defect_ids = input("Enter defect IDs to delete (Eg: 1,5,9-16,24-29,32): ")

    delete_defects(api_token, project_code, defect_ids)

if __name__ == "__main__":
    main()
Edit
Pub: 09 Aug 2024 07:40 UTC
Views: 28