def get_entries_by_date(uid): """Given a user, get the user's entries by date.""" from ec import et entries = get_entries_for_user(uid) by_date = {} for entry in entries: by_date.setdefault(entry.date, []) by_date[entry.date].append(entry) entry['exercise_type'] = et.get_exercise_type(entry.exercise_type_id) entry['data_points'] = get_data_points_for_entry(entry.id) for data_point in entry['data_points']: data_point['measure'] = et.get_measure(data_point.measure_id) return sorted(by_date.items(), reverse=True)
def _on_get_user(self, user, error=None): if error: self.render("templates/error-page.html", error=error) return exercise_type = et.get_exercise_type( int(self.get_argument("et"))) date = datetime.datetime.strptime( self.get_argument('date'), "%Y-%m-%d") comment = self.get_argument("comment","") share = self.get_argument("share", None) == "share" self.entry_id = ec.entries.create_entry( self.current_user.id, date, exercise_type.id, comment) measures = et.get_measures_for_exercise_type(exercise_type.id) txt = [] for measure in measures: value = self.get_argument("measure-%s-value" % measure.id, None) if value: ec.entries.create_data_point( self.entry_id, measure.id, value) txt.append('%s %s' % (value, measure.unit)) description = '{0[first_name]} just did some {1.name}'.format(user, exercise_type) description += ' (%s) for the Exercise Challenge!' % ', '.join(txt) if share: link = "http://www.exercisechallenge.org/users/%s/entries/%s" % ( self.current_user.fbid, self.entry_id) fb.publish(self.current_user.fbid, self.current_user, self.async_callback(self._on_share), message=comment, link=link, description=description, name="Exercise Challenge") else: self.redirect('/home')
def render(self, date, entries, can_delete=False): if entries: user = ec.users.get_user(entries[0].user_id) else: user = None for entry in entries: if 'exercise_type' not in entry: entry['exercise_type'] = et.get_exercise_type(entry.exercise_type_id) if 'data_points' not in entry: entry['data_points'] = ec.entries.get_data_points_for_entry(entry.id) for data_point in entry['data_points']: if 'measure' not in data_point: data_point['measure'] = et.get_measure(data_point.measure_id) return super(EntriesBox, self).render( legend=date.strftime("%B %d"), content=self.render_string( "templates/ui/entries-list.html", entries=entries, user=user, can_delete=can_delete))