def statisticsJSON(should_reload=False): #Retrieved cached value data = memcache.get('statistics') if data is None or should_reload: summary = json.loads(Request.tutorSummaryJSON()) statistics = {} statistics['members'] = len(summary) statistics['sessions'] = sum([entry[1] for entry in summary]) statistics['minutes'] = sum([entry[3] for entry in summary]) last_month = date.today() - timedelta(30) last_week = date.today() - timedelta(7) last_day = date.today() - timedelta(1) query = TutoringSession.all() query.filter('date_tutored >=', last_week) statistics['week'] = query.count(limit=10000) query.filter('date_tutored >=', last_day) statistics['yesterday'] = query.count(limit=10000) tutors = json.loads(Request.tutorsJSON()) emails = [item[2] for item in tutors] statistics['none_month'] = [] for email in emails: query = TutoringSession.all() query.filter('tutor_email =', email) query.filter('date_tutored >=', last_month) if query.count(limit=1) == 0: statistics['none_month'].append(email) statistics['top_tutor'] = [None]*3 minutes_max = 0 for tutor in tutors: email = tutor[2] sessions = json.loads(Request.sessionDataJSON('tutor', email)) minutes = sum([session[7] for session in sessions]) if minutes > minutes_max: minutes_max = minutes statistics['top_tutor'][0] = tutor[1] + ' ' + tutor[0] statistics['top_tutor'][1] = email statistics['top_tutor'][2] = minutes tutees = json.loads(Request.tuteesJSON()) statistics['tutees'] = len(tutees) data = json.dumps(statistics) memcache.add('statistics', data, 3600) return data
def statisticsJSON(should_reload=False): #Retrieved cached value data = memcache.get('statistics') if data is None or should_reload: summary = json.loads(Request.tutorSummaryJSON()) statistics = {} statistics['members'] = len(summary) statistics['sessions'] = sum([entry[1] for entry in summary]) statistics['minutes'] = sum([entry[3] for entry in summary]) last_month = date.today() - timedelta(30) last_week = date.today() - timedelta(7) last_day = date.today() - timedelta(1) query = TutoringSession.all() query.filter('date_tutored >=', last_week) statistics['week'] = query.count(limit=10000) query.filter('date_tutored >=', last_day) statistics['yesterday'] = query.count(limit=10000) tutors = json.loads(Request.tutorsJSON()) emails = [item[2] for item in tutors] statistics['none_month'] = [] for email in emails: query = TutoringSession.all() query.filter('tutor_email =', email) query.filter('date_tutored >=', last_month) if query.count(limit=1) == 0: statistics['none_month'].append(email) statistics['top_tutor'] = [None] * 3 minutes_max = 0 for tutor in tutors: email = tutor[2] sessions = json.loads(Request.sessionDataJSON('tutor', email)) minutes = sum([session[7] for session in sessions]) if minutes > minutes_max: minutes_max = minutes statistics['top_tutor'][0] = tutor[1] + ' ' + tutor[0] statistics['top_tutor'][1] = email statistics['top_tutor'][2] = minutes tutees = json.loads(Request.tuteesJSON()) statistics['tutees'] = len(tutees) data = json.dumps(statistics) memcache.add('statistics', data, 3600) return data
def sessionDataJSON(which, email, should_reload=False): key = which + '_data_' + email data = memcache.get(key) if data is None or should_reload: print 'Reloading "' + key + '"' query = TutoringSession.all() query.filter(which + '_email', email) query.order("date_tutored") sessions = [] for session in query.run(batch_size=2000): sessions.append(session.to_list()) data = json.dumps(sessions) memcache.add(key=key, value=data, time=300) #5 minutes per student return data
def tutorDataJSON(self, email, should_reload=False): key = 'tutor_data_' + email data = memcache.get(key) if data is None or should_reload: print "Reloading... " + key q = TutoringSession.all() q.filter("tutor_email", email) q.order("date_tutored") compiled = {} for p in q.run(limit=2000): session_dict = p.to_dict() for k in session_dict.keys(): if not k in compiled: compiled[k] = [] compiled[k].append(session_dict[k]) data = json.dumps(compiled) memcache.add(key=key, value=data, time=300) #5 minutes per student return data