Пример #1
0
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']