def get_schedule(user_id: int): if not user_util.get_from_id(user_id): return api_error_helpers.item_not_found("user", "id", user_id) year = request.args.get("year", default=None, type=int) if not year: return api_error_helpers.missing_url_arg("year") start_week = Week(year, 1) end_week = Week.last_week_of_year(year) user_projects = user_util.get_projects_for_period(user_id=user_id, start_week=start_week, end_week=end_week) project_index = { proj.id: index for index, proj in enumerate(user_projects) } full_schedule = [[0 for project in user_projects] for week in Week.weeks_of_year(year)] schedule_dict = schedule_util.get_user_schedules(user_id, start_week.toordinal(), end_week.toordinal()) print(schedule_dict) for week_project, schedule in schedule_dict.items(): week_index = Week.fromordinal(week_project.week).week - 1 full_schedule[week_index][project_index[ week_project.project_id]] = schedule.hours return jsonify( projects=list(map(lambda x: x.serialize(), user_projects)), schedule=full_schedule, )