Example #1
0
  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
Example #3
0
  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)