Добавил отображение ДО
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime
|
||||
import logging
|
||||
|
||||
from colorama import Fore
|
||||
@@ -51,6 +51,7 @@ class ClockifyAPI(ClockifyConfig):
|
||||
task_title=task_title,
|
||||
project_id=activity["projectId"],
|
||||
vetro_project_id=activity["taskId"],
|
||||
vetro_project_title=config.VETRO_PROJECTS.get(activity.get("taskId")),
|
||||
description=activity["description"],
|
||||
time_spent=time_to_hour((end if end else datetime.now()) - start),
|
||||
date_start=start,
|
||||
|
||||
11
classes.py
11
classes.py
@@ -1,23 +1,26 @@
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from enums import ClockifyProjects, VetroProjects
|
||||
|
||||
|
||||
@dataclass
|
||||
class Activity:
|
||||
id: str
|
||||
task_id: int
|
||||
vetro_project_id: str
|
||||
vetro_project_id: VetroProjects
|
||||
vetro_project_title: str
|
||||
task_title: str
|
||||
tag_id: str
|
||||
description: str
|
||||
project_id: str
|
||||
project_id: ClockifyProjects
|
||||
time_spent: float
|
||||
date_start: datetime
|
||||
date_end: datetime = None
|
||||
is_tracked: bool = False
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.date_start}: {self.description} для задачи "{self.task_title}"'
|
||||
return f'{self.date_start + timedelta(hours=3)}|{self.vetro_project_title}|{self.description} для задачи "{self.task_title}"'
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
@@ -14,6 +14,27 @@ class Config(BaseSettings):
|
||||
|
||||
DATETIME_FORMAT: str = "%Y-%m-%dT%H:%M:%SZ"
|
||||
|
||||
VETRO_PROJECTS: dict = {
|
||||
"682c438ca9a5d61a4cc9a405": "Админка",
|
||||
"682c7c1b537d26222fe3cde8": "Чаты Авито",
|
||||
"682c7cc5a4e2fd3c34a5e933": "Звонки",
|
||||
"682b2c2d537d26222fc5671c": "Регистрация гарантии",
|
||||
"682b3cc4f01c6c02e4e765b0": "Клиент",
|
||||
"682b2c1366a3b415535a23fa": "Контрагенты",
|
||||
"682b2c3f24f321560e283cb2": "Урегулирование страховых случаев",
|
||||
"682b2c52d7ce797b226fddef": "Почта",
|
||||
"682c7cd766a3b4155378f8a4": "Товар",
|
||||
"682c7d05d7ce797b228edd06": "Закупка",
|
||||
"682b2bf324f321560e283084": "Страховые направления",
|
||||
"682b2c09f01c6c02e4e49681": "Задачи направлений",
|
||||
"682b2c1bd096503066890985": "Заказ",
|
||||
"682b2c22b417733736a3ae9f": "Задачи заказов",
|
||||
"682b3280560c2445c917951c": "Услуга клиенту",
|
||||
"682b2c7324f321560e284588": "Потерянные трудочасы",
|
||||
"682c7d0ed7ce797b228edf3a": "WhatsApp",
|
||||
"682b2bada9a5d61a4cb1b6e1": "Прочие активности по Ветро",
|
||||
}
|
||||
|
||||
|
||||
def configure_argument_parser():
|
||||
parser = argparse.ArgumentParser(description='Трекер трудочасов с Clockify в Redmine')
|
||||
|
||||
21
enums.py
21
enums.py
@@ -13,3 +13,24 @@ class ClockifyProjects(StrEnum):
|
||||
VETRO3 = "67e266148411754017d0cee5"
|
||||
VETRO_RETAIL = "67e29b8e837a92506f5e86df"
|
||||
SPHERA = "67e5476b1b872e13361e007c"
|
||||
|
||||
|
||||
class VetroProjects(StrEnum):
|
||||
ADMIN = "682c438ca9a5d61a4cc9a405"
|
||||
AVITO_CHAT = "682c7c1b537d26222fe3cde8"
|
||||
CALL = "682c7cc5a4e2fd3c34a5e933"
|
||||
CLAIM_STOA = "682b2c2d537d26222fc5671c"
|
||||
CLIENT = "682b3cc4f01c6c02e4e765b0"
|
||||
CONTRACTOR = "682b2c1366a3b415535a23fa"
|
||||
INS_CLAIM = "682b2c3f24f321560e283cb2"
|
||||
MAIL_GUI = "682b2c52d7ce797b226fddef"
|
||||
PRODUCT = "682c7cd766a3b4155378f8a4"
|
||||
PURCHASE = "682c7d05d7ce797b228edd06"
|
||||
REQUEST = "682b2bf324f321560e283084"
|
||||
REQUEST_TASK = "682b2c09f01c6c02e4e49681"
|
||||
SALE = "682b2c1bd096503066890985"
|
||||
SALE_TASK = "682b2c22b417733736a3ae9f"
|
||||
SERVICE = "682b3280560c2445c917951c"
|
||||
UNDEFINED_TIME = "682b2c7324f321560e284588"
|
||||
WHATSAPP = "682c7d0ed7ce797b228edf3a"
|
||||
OTHER = "682b2bada9a5d61a4cb1b6e1"
|
||||
|
||||
6
track.py
6
track.py
@@ -37,8 +37,10 @@ def main():
|
||||
"page-size": args.page_size,
|
||||
},
|
||||
)
|
||||
tracked_activities = red.track_activities(activities)
|
||||
clock.mark_tracked(tracked_activities)
|
||||
# tracked_activities = red.track_activities(activities)
|
||||
# clock.mark_tracked(tracked_activities)
|
||||
for activity in activities:
|
||||
print(activity)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user