def simple_summary(self, request): user = endpoints.get_current_user() if not user: raise endpoints.UnauthorizedException('Authorization required') user_email = user.email() user_key = ndb.Key(GaeUser, user_email) start_date_time = datetime_util.date_to_datetime( datetime_util.parse_date(request.start_date)) end_date_time = datetime_util.date_to_datetime( datetime_util.one_day_later(datetime_util.parse_date(request.end_date))) work_total = 0 sleep_total = 0 play_total = 0 events = TimelogEvent.query( TimelogEvent.start_date_time >= start_date_time, TimelogEvent.start_date_time < end_date_time, ancestor = user_key).fetch() diff_days = (end_date_time - start_date_time).days category_dict = { 'Sleep': 'sleep', 'Google Eng': 'work', 'Self Learning': 'work', 'Affair': 'work', 'Game & Manga': 'play'} for event in events: duration = (event.end_date_time - event.start_date_time).total_seconds() duration_in_hours = duration / 60 / 60 category = category_dict.get(event.name, 'unknown'); if category == 'work': work_total += duration_in_hours elif category == 'sleep': sleep_total += duration_in_hours elif category == 'play': play_total += duration_in_hours #summary to summary form profile = ProfileForm(firstName = 'Zero', lastName = 'Liu', birthday='1987-12-24') work_report = AverageTimeReportForm( name = 'work', unit = 'h/day', duration = float(work_total / diff_days)) sleep_report = AverageTimeReportForm( name = 'sleep', unit = 'h/day', duration = float(sleep_total / diff_days)) play_report = AverageTimeReportForm( name = 'play', unit = 'h/day', duration = float(play_total / diff_days)) report = SimpleReportForm(startDate = request.start_date, endDate = request.end_date, reports = [play_report, work_report, sleep_report]) summary_form = SimpleSummaryForm(profile = profile, report = report) return summary_form
def _fetch_history(self, date_text): history_key = ndb.Key(FetchHistory, date_text, parent = self.user_key) history = history_key.get() if not history: date = datetime_util.parse_date(date_text) history = FetchHistory(key = history_key, date = date, isSuccess = False) return history
def get(self): user_id = users.get_current_user().user_id() user_email = users.get_current_user().email() user_key = ndb.Key(GaeUser, user_email) if not user_key.get(): GaeUser(key = user_key, id = user_id, email = user_email).put() if self.request.get('start_date'): start_date = datetime_util.parse_date(self.request.get('start_date')) else: start_date = datetime_util.yesterday() today = datetime_util.today() while start_date < today: taskqueue.add(url='/calendar_fetch_worker', params={'user_email': user_email, 'date': datetime_util.date_to_str(start_date)}) self.response.write('<p>Launched fetch with user_email: %s on %s</p>' % (user_email, start_date.isoformat())) start_date = datetime_util.one_day_later(start_date)