refs #62804 Новые задачи.

This commit is contained in:
2026-07-28 17:37:32 +03:00
parent 7cdd5010a2
commit 65053c3d17
3 changed files with 47 additions and 3 deletions

18
api.py
View File

@@ -39,7 +39,7 @@ class RedmineAPI:
return get(*args, **kwargs).json()
def post(self, *args, **kwargs) -> dict:
def post(self, *args, **kwargs) -> dict | None:
if len(args) > 0:
args = tuple([self._base + list(args)[0]] + list(args)[1:])
@@ -48,7 +48,9 @@ class RedmineAPI:
kwargs["headers"] = self._headers
return post(*args, **kwargs).json()
response = post(*args, **kwargs)
if response.status_code == 201:
return post(*args, **kwargs).json()
def get_issue(self, issue_id: int) -> dict:
result = self.get(f"/issues/{issue_id}.json")
@@ -88,8 +90,18 @@ class RedmineAPI:
"custom_fields": [{"id": STAND_FIELD_ID, "value": "prod"}]
})
def get_current_user(self) -> dict:
result = self.get("/users/current.json")
return result["user"]
def add_version(self, data: dict) -> dict:
result = self.post(f"/projects/{VETRO_PROJECT_ID}/versions.json", json={"version": data})
return result["version"]
if result:
return result["version"]
def add_issue(self, data: dict) -> dict | None:
result = self.post("/issues.json", json={"issue": data})
if result:
return result["issue"]
api = RedmineAPI(SITE_URL, KEY)

View File

@@ -1,7 +1,13 @@
RELEASE_STATUS_ID = 9
CHECK_STATUS_ID = 3
WORK_STATUS_ID = 2
VETRO_PROJECT_ID = 10
PROD_SUPPORT_TRACKER_ID = 3
RESPONSIBLE_FIELD_ID = 37
STAND_FIELD_ID = 6
EXECUTOR_FIELD_ID = 34
NORMAL_PRIORITY_ID = 2

View File

@@ -1,5 +1,13 @@
from api import api
from datetime import date, timedelta
from constants import (
VETRO_PROJECT_ID,
PROD_SUPPORT_TRACKER_ID,
WORK_STATUS_ID,
NORMAL_PRIORITY_ID,
EXECUTOR_FIELD_ID,
RESPONSIBLE_FIELD_ID
)
def release_current_version() -> None:
@@ -16,3 +24,21 @@ def add_version() -> None:
"description": today.strftime("Релиз от %d.%m.%y"),
"sharing": "descendants"
})
def add_release_issue() -> None:
today = date.today()
user = api.get_current_user()
api.add_issue(
{
"project_id": VETRO_PROJECT_ID,
"tracker_id": PROD_SUPPORT_TRACKER_ID,
"status_id": WORK_STATUS_ID,
"priority_id": NORMAL_PRIORITY_ID,
"subject": today.strftime("Релиз (%d.%m.%Y)"),
"description": "Выложить задачи со статусом Ожидает релиз в production.",
"assigned_to_id": "me",
"custom_fields": [
{"id": EXECUTOR_FIELD_ID, "value": user["id"]}, {"id": RESPONSIBLE_FIELD_ID, "value": "Фадеев Виктор"}
]
}
)