1
0

close_sprint12.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import requests
  2. import urllib3
  3. urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
  4. base_url = 'https://192.168.130.161/taiga/api/v1'
  5. auth = requests.post(f'{base_url}/auth', json={'type': 'normal', 'username': 'FrancoisLange', 'password': 'BTSai123'}, verify=False).json()
  6. headers = {'Authorization': f'Bearer {auth["auth_token"]}', 'Content-Type': 'application/json'}
  7. proj_id = 21
  8. print("Fetching Sprints...")
  9. milestones = requests.get(f'{base_url}/milestones?project={proj_id}', headers=headers, verify=False).json()
  10. sprint12 = next((m for m in milestones if m['name'] == 'Sprint 12'), None)
  11. if not sprint12:
  12. print("Sprint 12 not found! Exiting.")
  13. exit(1)
  14. sprint_id = sprint12['id']
  15. # Get Closed status IDs
  16. us_statuses = requests.get(f'{base_url}/userstory-statuses?project={proj_id}', headers=headers, verify=False).json()
  17. task_statuses = requests.get(f'{base_url}/task-statuses?project={proj_id}', headers=headers, verify=False).json()
  18. closed_us_status = next((s['id'] for s in us_statuses if s['is_closed']), None)
  19. closed_task_status = next((s['id'] for s in task_statuses if s['is_closed']), None)
  20. # Update User Stories
  21. us_list = requests.get(f'{base_url}/userstories?project={proj_id}&milestone={sprint_id}', headers=headers, verify=False).json()
  22. for us in us_list:
  23. if us['status'] != closed_us_status:
  24. payload = {"status": closed_us_status, "version": us['version']}
  25. requests.patch(f'{base_url}/userstories/{us["id"]}', json=payload, headers=headers, verify=False)
  26. print(f"Closed User Story: {us['subject']}")
  27. # Update Tasks
  28. tasks = requests.get(f'{base_url}/tasks?project={proj_id}&milestone={sprint_id}', headers=headers, verify=False).json()
  29. for task in tasks:
  30. if task['status'] != closed_task_status:
  31. payload = {"status": closed_task_status, "version": task['version']}
  32. requests.patch(f'{base_url}/tasks/{task["id"]}', json=payload, headers=headers, verify=False)
  33. print(f"Closed Task: {task['subject']}")
  34. print("Sprint 12 successfully closed!")