diff --git a/README.MD b/README.MD
index 59c1e97..5a5e66e 100644
--- a/README.MD
+++ b/README.MD
@@ -11,7 +11,10 @@
|Описание задачи (Description)|Комментарий|Уточнение у аналитика|
|Теги (Tags)|<Задача> - <Название задачи>|28882 - Прочие активности по Ветро|
|Трекать/Не трекать (Billable/Non-billable)|<Занесена в Redmine или нет>|Если выбрано, то активность будет перенесена
-
+Тег обязательно должен содержать номер задачи (5 цифр) в начале.
+28882 - Прочие активности
+28882
+28882 Прочие активности
### Запуск:
Клонируйте [репозиторий](https://git.sbps.ru/e.vlasov/redmine_tracker) и перейдите в него в командной строке:
diff --git a/api/clockify.py b/api/clockify.py
index 56b2b6b..e6d8e5c 100644
--- a/api/clockify.py
+++ b/api/clockify.py
@@ -8,7 +8,7 @@ from tqdm import tqdm
from config import ClockifyConfig, config
from classes import Activity, Tag, VetroProject
from exceptions import InvalidToken
-from utils import time_to_hour
+from utils import parse_task_id, time_to_hour
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)
tag = [tag for tag in self.get_tags() if tag.id == tag_id][0]
try:
- task_id, _ = tag.title.split(" - ")
+ task_id = parse_task_id(tag.title)
except ValueError:
logger.info(f'{activity["timeInterval"]["start"]}: {activity["description"]} - Неправильный формат тега {tag}')
continue
diff --git a/classes/classes.py b/classes/classes.py
index 82dcc76..dab665d 100644
--- a/classes/classes.py
+++ b/classes/classes.py
@@ -18,7 +18,7 @@ class Activity:
is_tracked: bool = False
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
diff --git a/db/db.py b/db/db.py
index 0d865d8..8de11ec 100644
--- a/db/db.py
+++ b/db/db.py
@@ -23,6 +23,7 @@ class Database:
logger.error("Ошибка при инициализации БД:", e)
self.con.rollback()
+ # Сделать изменение поля is_tracked при IntegrityError
def insert_activities(self, activities: list[Activity]):
cur = self.con.cursor()
is_updated = True
@@ -53,7 +54,6 @@ class Database:
if not is_updated:
logging.info("База данных устарела. Рекомендуем обновить с помощью флага -i [--init-db]")
- # Доделать
def insert_time_entries(self, activities: list[Activity]):
cur = self.con.cursor()
for act in activities:
diff --git a/utils.py b/utils.py
index 04b37d2..3ae614e 100644
--- a/utils.py
+++ b/utils.py
@@ -1,4 +1,5 @@
from datetime import datetime, timedelta
+import re
from typing import Optional
from config import config
@@ -28,3 +29,6 @@ def str_to_date(date: str) -> Optional[datetime]:
def format_date(date: datetime) -> datetime:
if date:
return date.strftime(config.DATETIME_FORMAT)
+
+def parse_task_id(tag: str) -> int:
+ return int(re.search(r"^(?P\d{5})", tag).group("task_id"))