diff --git a/README.MD b/README.MD
index ff64844..e5b1826 100644
--- a/README.MD
+++ b/README.MD
@@ -10,8 +10,8 @@
|--------|-------|------|
|Описание задачи (Description)|Комментарий|Уточнение у аналитика|
|Теги (Tags)|<Задача> - <Название задачи>|28882 - Прочие активности по Ветро|
-|Трекать/Не трекать (Billable/Non-billable)|<Занесена в Redmine или нет>|Если выбрано, то активность будет перенесена
-
+|Трекать/Не трекать (Billable/Non-billable)|<Занесена в Redmine или нет>|Если выбрано, то активность будет перенесена|
+
Тег обязательно должен содержать номер задачи (5 цифр) в начале.
28882 - Прочие активности
28882
@@ -50,7 +50,7 @@ pip install -r requirements.txt
```
Создайте файл .env и добавьте в него переменные:
```bash
-touch .env
+nano .env
```
```env
*REDMINE_TOKEN=
@@ -78,14 +78,13 @@ python track.py
```
## Аргументы запуска
-| Аргумент | Описание | Пример использования |
-|-------------------|--------------------------------------------------------------|--------------------------------------|
-| `-h [--help]` | Показать справку | `python track.py --help` |
-| `-s [--start]` | Дата начала парсинга активностей в формате гггг-мм-дд | `python track.py --start 2025-05-19` |
-| `-e [--end]` | Дата окончания парсинга активностей в формате гггг-мм-дд | `python track.py -e 2025-05-19` |
-| `-p [--page-size]`| Количество задач для вывода. Выведет последние n записей | `python track.py --page-size 15` |
-| `-d [--debug]` | Режим отладки. Не загружает трудочасы в Redmine | `python track.py -d` |
-| `-i [--init-db]` | Режим инициализации бд. | `python track.py -init-db` |
-| | Подгружает с серверов теги, виды деятельности и проекты Ветро| |
+| Аргумент | Описание | Пример использования |
+|-------------------|----------------------------------------------------------------------------------------------|--------------------------------------|
+| `-h [--help]` | Показать справку | `python track.py --help` |
+| `-s [--start]` | Дата начала парсинга активностей в формате гггг-мм-дд | `python track.py --start 2025-05-19` |
+| `-e [--end]` | Дата окончания парсинга активностей в формате гггг-мм-дд | `python track.py -e 2025-05-19` |
+| `-p [--page-size]`| Количество задач для вывода. Выведет последние n записей | `python track.py --page-size 15` |
+| `-d [--debug]` | Режим отладки. Не загружает трудочасы в Redmine | `python track.py -d` |
+| `-i [--init-db]` | Режим инициализации бд.
Подгружает с серверов теги, виды деятельности и Проекты (ДО) Ветро| `python track.py -init-db` |
[Власов Эдуард](https://github.com/QuickLike)
\ No newline at end of file
diff --git a/api/redmine.py b/api/redmine.py
index d1a4c13..c5b9c57 100644
--- a/api/redmine.py
+++ b/api/redmine.py
@@ -27,31 +27,32 @@ class RedmineAPI(RedmineConfig):
return
tracked = []
for activity in tqdm(activities, desc="Занесение трудочасов"):
- if not activity.is_tracked:
- try:
- resp = requests.post(
- self.base_url + self.time_entries_url,
- headers={"X-Redmine-Api-Key": self.token},
- json={
- "time_entry": {
- "issue_id": activity.task_id,
- "hours": activity.time_spent,
- "activity_id": ActivityTypes.DEVELOPMENT,
- "comments": activity.description,
- "spent_on": activity.date_start.strftime(self.datetime_format)
- }
+ if not(not activity.is_tracked and activity.date_end):
+ continue
+ try:
+ resp = requests.post(
+ self.base_url + self.time_entries_url,
+ headers={"X-Redmine-Api-Key": self.token},
+ json={
+ "time_entry": {
+ "issue_id": activity.task_id,
+ "hours": activity.time_spent,
+ "activity_id": ActivityTypes.DEVELOPMENT,
+ "comments": activity.description,
+ "spent_on": activity.date_start.strftime(self.datetime_format)
}
- )
- if resp.ok:
- activity.is_tracked = True
- tracked.append(activity)
- logger.debug(activity)
- else:
- logger.error(Fore.RED + f"{activity} Не была затрекана" + Fore.RED)
- logger.error(f"{resp.json()['errors']} {resp.status_code}")
- except Exception as e:
- logger.error(e)
- continue
+ }
+ )
+ if resp.ok:
+ activity.is_tracked = True
+ tracked.append(activity)
+ logger.debug(activity)
+ else:
+ logger.error(Fore.RED + f"{activity} Не была затрекана" + Fore.RED)
+ logger.error(f"{resp.json()['errors']} {resp.status_code}")
+ except Exception as e:
+ logger.error(e)
+ continue
if len(activities) == len(tracked):
logger.info("Все задачи были успешно занесены в Redmine")
else: