74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
import logging
|
||
import sys
|
||
|
||
logging.basicConfig(
|
||
level=logging.INFO,
|
||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||
handlers=[
|
||
logging.FileHandler('app.log', encoding='utf-8'),
|
||
logging.StreamHandler(sys.stdout)
|
||
]
|
||
)
|
||
|
||
|
||
from api import ClockifyAPI, RedmineAPI # noqa: E402
|
||
from config import arg_parser, config, db # noqa: E402
|
||
from utils import format_date, str_to_date, today_start, today_end # noqa: E402
|
||
|
||
|
||
WORKSPACE_ID = config.CLOCKIFY_WORKSPACE_ID
|
||
USER_ID = config.CLOCKIFY_USER_ID
|
||
|
||
|
||
def main():
|
||
args = arg_parser.parse_args()
|
||
|
||
if args.debug:
|
||
logging.getLogger().setLevel(logging.DEBUG)
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
start, end = None, None
|
||
if args.start:
|
||
start = str_to_date(args.start)
|
||
if args.end:
|
||
end = str_to_date(args.end)
|
||
if args.start is None and args.end is None:
|
||
logger.info("Парсим задачи за сегодняшний день")
|
||
start = today_start()
|
||
end = today_end()
|
||
else:
|
||
logger.info("Парсим задачи" + (f" с {start.date()} " if start else " ") + (f"до {end.date()}" if end else ""))
|
||
|
||
clock = ClockifyAPI(
|
||
token=config.CLOCKIFY_TOKEN,
|
||
workspace_id=WORKSPACE_ID,
|
||
user_id=USER_ID
|
||
)
|
||
red = RedmineAPI(config.REDMINE_TOKEN)
|
||
|
||
db.insert_tags(clock.get_tags())
|
||
db.insert_vetro_projects(config.VETRO_PROJECTS)
|
||
activities = clock.get_activities(
|
||
**{
|
||
"start": format_date(start),
|
||
"end": format_date(end),
|
||
"page-size": args.page_size,
|
||
},
|
||
)
|
||
db.insert_activities(activities)
|
||
db.insert_activity_types(red.get_time_entry_activities())
|
||
if args.debug:
|
||
logger.debug("Пропускаем этап загрузки трудочасов")
|
||
return
|
||
try:
|
||
tracked_activities = red.track_activities(activities)
|
||
clock.mark_tracked(tracked_activities)
|
||
db.insert_time_entries(tracked_activities)
|
||
except Exception as e:
|
||
logger.error(e)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|