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