Compare commits
3 Commits
task_62274
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 682b3c60ff | |||
| 65053c3d17 | |||
| 7cdd5010a2 |
29
api.py
29
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,19 @@ class RedmineAPI:
|
||||
|
||||
return get(*args, **kwargs).json()
|
||||
|
||||
def post(self, *args, **kwargs) -> dict | None:
|
||||
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
|
||||
|
||||
response = post(*args, **kwargs)
|
||||
if response.status_code == 201:
|
||||
return response.json()
|
||||
|
||||
def get_issue(self, issue_id: int) -> dict:
|
||||
result = self.get(f"/issues/{issue_id}.json")
|
||||
return result["issue"]
|
||||
@@ -77,4 +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})
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
|
||||
36
tasks.py
36
tasks.py
@@ -1,4 +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:
|
||||
@@ -6,3 +15,30 @@ 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"
|
||||
})
|
||||
|
||||
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