示例#1
0
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,
    )