Изменил формат Номера задачи

This commit is contained in:
2025-05-22 17:29:53 +03:00
parent 217f3a184f
commit 08ca8d1b4d
5 changed files with 12 additions and 5 deletions

View File

@@ -11,7 +11,10 @@
|Описание задачи (Description)|Комментарий|Уточнение у аналитика| |Описание задачи (Description)|Комментарий|Уточнение у аналитика|
|Теги (Tags)|<Задача> - <Название задачи>|28882 - Прочие активности по Ветро| |Теги (Tags)|<Задача> - <Название задачи>|28882 - Прочие активности по Ветро|
|Трекать/Не трекать (Billable/Non-billable)|<Занесена в Redmine или нет>|Если выбрано, то активность будет перенесена |Трекать/Не трекать (Billable/Non-billable)|<Занесена в Redmine или нет>|Если выбрано, то активность будет перенесена
Тег обязательно должен содержать номер задачи (5 цифр) в начале.<br>
28882 - Прочие активности<br>
28882<br>
28882 Прочие активности<br>
### Запуск: ### Запуск:
Клонируйте [репозиторий](https://git.sbps.ru/e.vlasov/redmine_tracker) и перейдите в него в командной строке: Клонируйте [репозиторий](https://git.sbps.ru/e.vlasov/redmine_tracker) и перейдите в него в командной строке:

View File

@@ -8,7 +8,7 @@ from tqdm import tqdm
from config import ClockifyConfig, config from config import ClockifyConfig, config
from classes import Activity, Tag, VetroProject from classes import Activity, Tag, VetroProject
from exceptions import InvalidToken from exceptions import InvalidToken
from utils import time_to_hour from utils import parse_task_id, time_to_hour
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -42,7 +42,7 @@ class ClockifyAPI(ClockifyConfig):
time_worked_out_total += time_to_hour((end if end else datetime.utcnow()) - start) time_worked_out_total += time_to_hour((end if end else datetime.utcnow()) - start)
tag = [tag for tag in self.get_tags() if tag.id == tag_id][0] tag = [tag for tag in self.get_tags() if tag.id == tag_id][0]
try: try:
task_id, _ = tag.title.split(" - ") task_id = parse_task_id(tag.title)
except ValueError: except ValueError:
logger.info(f'{activity["timeInterval"]["start"]}: {activity["description"]} - Неправильный формат тега {tag}') logger.info(f'{activity["timeInterval"]["start"]}: {activity["description"]} - Неправильный формат тега {tag}')
continue continue

View File

@@ -18,7 +18,7 @@ class Activity:
is_tracked: bool = False is_tracked: bool = False
def __str__(self): def __str__(self):
return f'{self.date_start + timedelta(hours=3)}|{self.description} для задачи #{self.task_id}' return f'|{self.date_start + timedelta(hours=3)}| {self.description} для задачи #{self.task_id}'
@dataclass @dataclass

View File

@@ -23,6 +23,7 @@ class Database:
logger.error("Ошибка при инициализации БД:", e) logger.error("Ошибка при инициализации БД:", e)
self.con.rollback() self.con.rollback()
# Сделать изменение поля is_tracked при IntegrityError
def insert_activities(self, activities: list[Activity]): def insert_activities(self, activities: list[Activity]):
cur = self.con.cursor() cur = self.con.cursor()
is_updated = True is_updated = True
@@ -53,7 +54,6 @@ class Database:
if not is_updated: if not is_updated:
logging.info("База данных устарела. Рекомендуем обновить с помощью флага -i [--init-db]") logging.info("База данных устарела. Рекомендуем обновить с помощью флага -i [--init-db]")
# Доделать
def insert_time_entries(self, activities: list[Activity]): def insert_time_entries(self, activities: list[Activity]):
cur = self.con.cursor() cur = self.con.cursor()
for act in activities: for act in activities:

View File

@@ -1,4 +1,5 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
import re
from typing import Optional from typing import Optional
from config import config from config import config
@@ -28,3 +29,6 @@ def str_to_date(date: str) -> Optional[datetime]:
def format_date(date: datetime) -> datetime: def format_date(date: datetime) -> datetime:
if date: if date:
return date.strftime(config.DATETIME_FORMAT) return date.strftime(config.DATETIME_FORMAT)
def parse_task_id(tag: str) -> int:
return int(re.search(r"^(?P<task_id>\d{5})", tag).group("task_id"))