Пример #1
0
def focus_graph_context(user_data_student, dt_start_utc, dt_end_utc):

    if not user_data_student:
        return {}

    # We have to expand by 1 day on each side to be sure we grab proper 'day' in client's time zone,
    # then we filter for proper time zone daily boundaries
    dt_start_utc_expanded = dt_start_utc - datetime.timedelta(days=1)
    dt_end_utc_expanded = dt_end_utc + datetime.timedelta(days=1)
    daily_activity_logs = models.DailyActivityLog.get_for_user_data_between_dts(user_data_student, dt_start_utc_expanded, dt_end_utc_expanded).fetch(1000)
    daily_activity_logs = activity_summary.fill_realtime_recent_daily_activity_summaries(daily_activity_logs, user_data_student, dt_end_utc_expanded)

    playlist_focus_data = get_playlist_focus_data(daily_activity_logs, dt_start_utc, dt_end_utc)
    exercise_focus_data = get_exercise_focus_data(user_data_student, daily_activity_logs, dt_start_utc, dt_end_utc)

    total_playlist_seconds = playlist_focus_data[0]
    dict_playlist_seconds = playlist_focus_data[1]

    total_exercise_seconds = exercise_focus_data[0]
    dict_exercise_seconds = exercise_focus_data[1]

    return {
            "student_email": user_data_student.email,
            "total_playlist_seconds": total_playlist_seconds,
            "dict_playlist_seconds": dict_playlist_seconds,
            "total_exercise_seconds": total_exercise_seconds,
            "dict_exercise_seconds": dict_exercise_seconds,
            "is_graph_empty": (total_playlist_seconds + total_exercise_seconds <= 0),
            }
Пример #2
0
def activity_graph_context(user_data_student, dt_start_utc, dt_end_utc, tz_offset):

    if not user_data_student:
        return {}

    # We have to expand by 1 day on each side to be sure we grab proper 'day' in client's time zone,
    # then we filter for proper time zone daily boundaries
    dt_start_utc_expanded = dt_start_utc - datetime.timedelta(days=1)
    dt_end_utc_expanded = dt_end_utc + datetime.timedelta(days=1)
    daily_activity_logs = models.DailyActivityLog.get_for_user_data_between_dts(user_data_student, dt_start_utc_expanded, dt_end_utc_expanded).fetch(1000)
    daily_activity_logs = activity_summary.fill_realtime_recent_daily_activity_summaries(daily_activity_logs, user_data_student, dt_end_utc_expanded)

    bucket_type = get_bucket_type(dt_start_utc, dt_end_utc)
    bucket_list = get_bucket_list(dt_start_utc, dt_end_utc, tz_offset, bucket_type)

    dict_topic_buckets = get_topic_activity_data(user_data_student, bucket_list, bucket_type, daily_activity_logs, dt_start_utc, dt_end_utc, tz_offset)
    dict_exercise_buckets = get_exercise_activity_data(user_data_student, bucket_list, bucket_type, daily_activity_logs, dt_start_utc, dt_end_utc, tz_offset)
    dict_badge_buckets = get_badge_activity_data(user_data_student, bucket_list, bucket_type, dt_start_utc, dt_end_utc, tz_offset)
    dict_proficiency_buckets = get_proficiency_activity_data(user_data_student, bucket_list, bucket_type, dt_start_utc, dt_end_utc, tz_offset)
    dict_points_buckets = get_points_activity_data(bucket_list, dict_topic_buckets, dict_exercise_buckets, dict_badge_buckets)

    map_scatter_y_values(dict_badge_buckets, dict_topic_buckets, dict_exercise_buckets)
    map_scatter_y_values(dict_proficiency_buckets, dict_topic_buckets, dict_exercise_buckets)

    has_activity = False
    for bucket in bucket_list:
        if (has_activity_type(dict_topic_buckets, bucket, "minutes") or
            has_activity_type(dict_exercise_buckets, bucket, "minutes") or
            has_activity_type(dict_badge_buckets, bucket, "badge_category")):
                has_activity = True
                break

    graph_title = ""
    if bucket_type == ActivityBucketType.HOUR:
        graph_title = str(get_bucket_value(dt_start_utc, tz_offset, ActivityBucketType.DAY))

    return {
            "context": {
                "is_graph_empty": not has_activity,
                "bucket_list": bucket_list,
                "enable_drill_down": (bucket_type != ActivityBucketType.HOUR),
                "dict_topic_buckets": dict_topic_buckets,
                "dict_exercise_buckets": dict_exercise_buckets,
                "dict_badge_buckets": dict_badge_buckets,
                "dict_proficiency_buckets": dict_proficiency_buckets,
                "dict_points_buckets": dict_points_buckets,
                "student_email": user_data_student.email,
                "profile_root": user_data_student.profile_root,
                "tz_offset": tz_offset,
                "graph_title": graph_title,
            },
        }