def friends_trending():
    friends, cusfriends = utilities.get_friends(session.user_id)

    # The Original IDs of duplicate custom_friends
    custom_friends = []
    for cus_id in cusfriends:
        if cus_id[1] is None:
            custom_friends.append(cus_id[0])
        else:
            custom_friends.append(cus_id[1])

    friends, custom_friends = set(friends), set(custom_friends)
    stable = db.submission
    today = datetime.datetime.today()
    # Consider submissions only after PAST_DAYS(customizable)
    # for trending problems
    start_date = str(today - datetime.timedelta(days=current.PAST_DAYS))
    query = (stable.time_stamp >= start_date) & \
            (stable.user_id.belongs(friends) | \
             stable.custom_user_id.belongs(custom_friends))
    last_submissions = db(query).select(stable.problem_name,
                                        stable.problem_link, stable.user_id,
                                        stable.custom_user_id)

    return utilities.compute_trending_table(last_submissions, "friends",
                                            session.user_id)
Esempio n. 2
0
def global_trending():
    stable = db.submission
    today = datetime.datetime.today()
    # Consider submissions only after PAST_DAYS(customizable)
    # for trending problems
    start_date = str(today - datetime.timedelta(days=current.PAST_DAYS))
    query = (stable.time_stamp >= start_date)
    last_submissions = db(query).select(stable.problem_name,
                                        stable.problem_link, stable.user_id,
                                        stable.custom_user_id)
    return utilities.compute_trending_table(last_submissions, "global")
Esempio n. 3
0
def global_trending():
    trending_table = current.REDIS_CLIENT.get("global_trending_table_cache")
    if trending_table:
        return trending_table

    stable = db.submission
    today = datetime.datetime.today()
    # Consider submissions only after PAST_DAYS(customizable)
    # for trending problems
    start_date = str(today - datetime.timedelta(days=current.PAST_DAYS))
    query = (stable.time_stamp >= start_date)
    last_submissions = db(query).select(stable.problem_id, stable.user_id,
                                        stable.custom_user_id)
    trending_table = utilities.compute_trending_table(last_submissions,
                                                      "global")
    current.REDIS_CLIENT.set("global_trending_table_cache",
                             trending_table,
                             ex=60 * 60)
    return trending_table