def timeline(records): # find start and end dates release_name = flask.request.args.get('release') if not release_name: release_name = DEFAULT_RELEASE else: release_name = release_name.lower() releases = get_vault()['releases'] if release_name not in releases: flask.abort(404) release = releases[release_name] start_date = release_start_date = user_utils.timestamp_to_week( user_utils.date_to_timestamp(release['start_date'])) end_date = release_end_date = user_utils.timestamp_to_week( user_utils.date_to_timestamp(release['end_date'])) now = user_utils.timestamp_to_week(int(time.time())) # expand start-end to year if needed if release_end_date - release_start_date < 52: expansion = (52 - (release_end_date - release_start_date)) // 2 if release_end_date + expansion < now: end_date += expansion else: end_date = now start_date = end_date - 52 # empty stats for all weeks in range weeks = range(start_date, end_date) week_stat_loc = dict((c, 0) for c in weeks) week_stat_commits = dict((c, 0) for c in weeks) # fill stats with the data for record in records: week = record['week'] if week in weeks: week_stat_loc[week] += record['loc'] week_stat_commits[week] += 1 # form arrays in format acceptable to timeline plugin array_loc = [] array_commits = [] array_commits_hl = [] for week in weeks: week_str = user_utils.week_to_date(week) array_loc.append([week_str, week_stat_loc[week]]) if release_start_date <= week <= release_end_date: array_commits_hl.append([week_str, week_stat_commits[week]]) array_commits.append([week_str, week_stat_commits[week]]) return json.dumps([array_commits, array_commits_hl, array_loc])
def index(self, record): self._add_to_index(self.company_index, record, 'company_name') self._add_to_index(self.module_index, record, 'module') self._add_to_index(self.launchpad_id_index, record, 'launchpad_id') self._add_to_index(self.release_index, record, 'release') self._add_to_index(self.date_index, record, 'date') record['week'] = user_utils.timestamp_to_week(record['date']) record['loc'] = record['lines_added'] + record['lines_deleted']