refs #62804 Новые задачи.
This commit is contained in:
14
api.py
14
api.py
@@ -39,7 +39,7 @@ class RedmineAPI:
|
|||||||
|
|
||||||
return get(*args, **kwargs).json()
|
return get(*args, **kwargs).json()
|
||||||
|
|
||||||
def post(self, *args, **kwargs) -> dict:
|
def post(self, *args, **kwargs) -> dict | None:
|
||||||
if len(args) > 0:
|
if len(args) > 0:
|
||||||
args = tuple([self._base + list(args)[0]] + list(args)[1:])
|
args = tuple([self._base + list(args)[0]] + list(args)[1:])
|
||||||
|
|
||||||
@@ -48,6 +48,8 @@ class RedmineAPI:
|
|||||||
|
|
||||||
kwargs["headers"] = self._headers
|
kwargs["headers"] = self._headers
|
||||||
|
|
||||||
|
response = post(*args, **kwargs)
|
||||||
|
if response.status_code == 201:
|
||||||
return post(*args, **kwargs).json()
|
return post(*args, **kwargs).json()
|
||||||
|
|
||||||
def get_issue(self, issue_id: int) -> dict:
|
def get_issue(self, issue_id: int) -> dict:
|
||||||
@@ -88,8 +90,18 @@ class RedmineAPI:
|
|||||||
"custom_fields": [{"id": STAND_FIELD_ID, "value": "prod"}]
|
"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:
|
def add_version(self, data: dict) -> dict:
|
||||||
result = self.post(f"/projects/{VETRO_PROJECT_ID}/versions.json", json={"version": data})
|
result = self.post(f"/projects/{VETRO_PROJECT_ID}/versions.json", json={"version": data})
|
||||||
|
if result:
|
||||||
return result["version"]
|
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)
|
api = RedmineAPI(SITE_URL, KEY)
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
RELEASE_STATUS_ID = 9
|
RELEASE_STATUS_ID = 9
|
||||||
CHECK_STATUS_ID = 3
|
CHECK_STATUS_ID = 3
|
||||||
|
WORK_STATUS_ID = 2
|
||||||
|
|
||||||
VETRO_PROJECT_ID = 10
|
VETRO_PROJECT_ID = 10
|
||||||
|
|
||||||
|
PROD_SUPPORT_TRACKER_ID = 3
|
||||||
|
|
||||||
RESPONSIBLE_FIELD_ID = 37
|
RESPONSIBLE_FIELD_ID = 37
|
||||||
STAND_FIELD_ID = 6
|
STAND_FIELD_ID = 6
|
||||||
|
EXECUTOR_FIELD_ID = 34
|
||||||
|
|
||||||
|
NORMAL_PRIORITY_ID = 2
|
||||||
|
|||||||
26
tasks.py
26
tasks.py
@@ -1,5 +1,13 @@
|
|||||||
from api import api
|
from api import api
|
||||||
from datetime import date, timedelta
|
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:
|
def release_current_version() -> None:
|
||||||
@@ -16,3 +24,21 @@ def add_version() -> None:
|
|||||||
"description": today.strftime("Релиз от %d.%m.%y"),
|
"description": today.strftime("Релиз от %d.%m.%y"),
|
||||||
"sharing": "descendants"
|
"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": "Фадеев Виктор"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user