73
track.py
Normal file
73
track.py
Normal file
@@ -0,0 +1,73 @@
|
||||
import logging
|
||||
import sys
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s %(name)s:%(lineno)d %(levelname)s %(message)s',
|
||||
handlers=[
|
||||
logging.FileHandler('app.log', encoding='utf-8'),
|
||||
logging.StreamHandler(sys.stdout)
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
from colorama import Fore # noqa: E402
|
||||
|
||||
from config import arg_parser, clock, config, db, red # noqa: E402
|
||||
from utils import check_envs, db_update, format_date, get_start_end_dates # noqa: E402
|
||||
|
||||
|
||||
def main():
|
||||
args = arg_parser.parse_args()
|
||||
|
||||
if is_debug := args.debug:
|
||||
config.MODE = "debug"
|
||||
logging.getLogger().setLevel(logging.DEBUG)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
start, end = get_start_end_dates(args)
|
||||
|
||||
if not check_envs():
|
||||
return
|
||||
|
||||
user = clock.get_user()
|
||||
clock_user = {
|
||||
"clockify_user_id": user["id"],
|
||||
"clockify_email": user["email"],
|
||||
"clockify_username": user["username"],
|
||||
}
|
||||
user = red.get_user()
|
||||
red_user = {
|
||||
"redmine_user_id": user["id"],
|
||||
"redmine_email": user["email"],
|
||||
"first_name": user["first_name"],
|
||||
"last_name": user["last_name"],
|
||||
"redmine_username": user["username"]
|
||||
}
|
||||
db.insert_user(**clock_user, **red_user)
|
||||
if args.init_db:
|
||||
db_update()
|
||||
|
||||
activities = sorted(clock.get_activities(
|
||||
**{
|
||||
"start": format_date(start),
|
||||
"end": format_date(end),
|
||||
"page-size": args.page_size,
|
||||
},
|
||||
), key=lambda x: x.date_start)
|
||||
if not activities:
|
||||
logger.info(Fore.YELLOW + "Нет задач для занесения трудочасов" + Fore.RESET)
|
||||
return
|
||||
db.insert_activities(activities)
|
||||
try:
|
||||
tracked_activities = red.track_activities(activities)
|
||||
clock.mark_tracked(tracked_activities)
|
||||
if not is_debug:
|
||||
db.insert_time_entries(tracked_activities)
|
||||
db.insert_activities(tracked_activities)
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user