diff --git a/api.py b/api.py index 3ebab58..74155ea 100644 --- a/api.py +++ b/api.py @@ -1,7 +1,7 @@ import os from dotenv import load_dotenv -from requests import get, put +from requests import get, put, post from constants import RELEASE_STATUS_ID, VETRO_PROJECT_ID, STAND_FIELD_ID, CHECK_STATUS_ID from utils import get_current_tuesday, date_from_iso, get_responsible @@ -39,6 +39,17 @@ class RedmineAPI: return get(*args, **kwargs).json() + def post(self, *args, **kwargs) -> dict: + if len(args) > 0: + args = tuple([self._base + list(args)[0]] + list(args)[1:]) + + elif "url" in kwargs: + kwargs["url"] = self._base + kwargs["url"] + + kwargs["headers"] = self._headers + + return post(*args, **kwargs).json() + def get_issue(self, issue_id: int) -> dict: result = self.get(f"/issues/{issue_id}.json") return result["issue"] @@ -77,4 +88,8 @@ class RedmineAPI: "custom_fields": [{"id": STAND_FIELD_ID, "value": "prod"}] }) + def add_version(self, data: dict) -> dict: + result = self.post(f"/projects/{VETRO_PROJECT_ID}/versions.json", json={"version": data}) + return result["version"] + api = RedmineAPI(SITE_URL, KEY) diff --git a/tasks.py b/tasks.py index 363d0e2..7110109 100644 --- a/tasks.py +++ b/tasks.py @@ -1,4 +1,5 @@ from api import api +from datetime import date, timedelta def release_current_version() -> None: @@ -6,3 +7,12 @@ def release_current_version() -> None: issues = api.get_release_issues(version["id"]) for issue in issues: api.release_issue(issue["id"]) + +def add_version() -> None: + today = date.today() + api.add_version({ + "name": today.strftime("RELEASE-%d%m%y"), + "due_date": (today + timedelta(weeks=1)).isoformat(), + "description": today.strftime("Релиз от %d.%m.%y"), + "sharing": "descendants" + })