Merge pull request 'Добавил деление трудочасов пополам для новичков' (#4) from dev into master

Reviewed-on: #4
This commit was merged in pull request #4.
This commit is contained in:
2025-06-19 17:20:51 +03:00
4 changed files with 19 additions and 2 deletions

View File

@@ -60,6 +60,7 @@ nano .env
*CLOCKIFY_TOKEN=<api_ключ_clockify>
?USER_ID=<user_id_clockify>
?WORKSPACE_ID=<workspace_id_clockify>
?TRIAL_END_DATE=<дата_середины_испытательного_срока>
```
\* - Обязательные.<br>
? - Опциональные. Могут быть пустыми, но не должны отсутствовать вовсе.
@@ -74,6 +75,10 @@ nano .env
В теле ответа вы получите нужные переменные:<br>
id - это `USER_ID`<br>
activeWorkspace - это `WORKSPACE_ID`
<br>
## TRIAL_END_DATE
Это дата, после которой ваши трудочасы должны заноситься в Redmine в полном количестве. Данная переменная больше актуальна для новичков, которым нужно делить трудочасы пополам.<br>
До указанной даты трудочасы будут заноситься в Redmine наполовину. После этой даты - целиком.<br>
## Запуск.
```

View File

@@ -28,6 +28,9 @@ class RedmineAPI(RedmineConfig):
def track_activities(self, activities: list[Activity]) -> list[Activity]:
"""Заносит трудочасы на сервер Redmine"""
is_beginner = config.is_beginner
if is_beginner:
logging.info(f"{Fore.YELLOW}Делим трудочасы пополам{Fore.RESET}")
if len(activities) == 0:
logger.info(Fore.YELLOW + "Нет задач для занесения трудочасов" + Fore.RESET)
return
@@ -42,7 +45,7 @@ class RedmineAPI(RedmineConfig):
json={
"time_entry": {
"issue_id": activity.task_id,
"hours": activity.time_spent,
"hours": activity.time_spent / (2 if is_beginner else 1),
"activity_id": ActivityTypes.DEVELOPMENT,
"comments": activity.description,
"spent_on": activity.date_start.strftime(self.datetime_format)

View File

@@ -1,4 +1,5 @@
import argparse
from datetime import datetime
from pydantic_settings import BaseSettings
from dotenv import load_dotenv
@@ -16,6 +17,8 @@ class Config(BaseSettings):
USER_ID: str = None
WORKSPACE_ID: str = None
TRIAL_END_DATE: str = datetime.today().strftime("%Y-%m-%d")
ENV_TXT: str = ".env.txt"
DB_NAME: str = "db/RedmineTracker.db"
SQL_PATH: str = "config/RedmineTracker.sql"
@@ -37,6 +40,11 @@ class Config(BaseSettings):
12: "декабря"
}
@property
def is_beginner(self):
from utils import str_to_date
return datetime.today() < str_to_date(self.TRIAL_END_DATE)
def configure_argument_parser():
parser = argparse.ArgumentParser(description='Трекер трудочасов с Clockify в Redmine')

View File

@@ -1,4 +1,5 @@
REDMINE_TOKEN=
CLOCKIFY_TOKEN=
USER_ID=
WORKSPACE_ID=
WORKSPACE_ID=
TRIAL_END_DATE=