| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import requests
- import urllib3
- urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
- base_url = 'https://192.168.130.161/taiga/api/v1'
- def close_sprint_tasks():
- try:
- # Authenticate
- auth = requests.post(f'{base_url}/auth', json={'type': 'normal', 'username': 'FrancoisLange', 'password': 'BTSai123'}, verify=False).json()
- headers = {'Authorization': f'Bearer {auth["auth_token"]}', 'Content-Type': 'application/json'}
- proj_id = 21
- # 1. Get Milestone (Sprint 9)
- milestones = requests.get(f'{base_url}/milestones?project={proj_id}', headers=headers, verify=False).json()
- sprint9 = next((m for m in milestones if m['name'] == 'Sprint 9'), None)
-
- if not sprint9:
- print("Sprint 9 not found!")
- return
-
- sprint_id = sprint9['id']
-
- # 2. Get 'Closed' Task Status ID
- statuses = requests.get(f'{base_url}/task-statuses?project={proj_id}', headers=headers, verify=False).json()
- closed_status = next((s for s in statuses if s['is_closed']), None)
- if not closed_status:
- print("Could not find a 'Closed' task status for the project.")
- return
-
- closed_status_id = closed_status['id']
- print(f"Found Closed Status ID: {closed_status_id}")
- # 3. Get all tasks for Sprint 9
- tasks = requests.get(f'{base_url}/tasks?project={proj_id}&milestone={sprint_id}', headers=headers, verify=False).json()
-
- # 4. Close Tasks
- for task in tasks:
- if task['status'] != closed_status_id:
- payload = {
- "status": closed_status_id,
- "version": task['version']
- }
- res = requests.patch(f'{base_url}/tasks/{task["id"]}', json=payload, headers=headers, verify=False).json()
- print(f"Closed Task TG-{task['ref']}: {task['subject']}")
- else:
- print(f"Task TG-{task['ref']} already closed.")
-
- print("Successfully updated all Taiga tasks to Closed!")
-
- except Exception as e:
- print(f"Error updating Taiga: {e}")
- if __name__ == "__main__":
- close_sprint_tasks()
|