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)
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")
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