Example #1
0
def rss_completion(request, percentage_gap=5):
    repo, commit = repos.repo_from_request(request)
    # Return cached if found.
    cache_key = 'rss_completion commit={0} percentage_gap={1}'.format(commit.hexsha, percentage_gap)
    content, mtime = cache.get_cached_content(cache_key)
    if content is None or request.GET.has_key('nocache'):
        mtime = commit.authored_date
        tree = commit.tree
        percent_reviewed_to_report = set(xrange(percentage_gap, 100, percentage_gap))
        percent_reviewed_to_report.add(100)
        percent_transcribed_to_report = set(xrange(percentage_gap, 100, percentage_gap))
        percent_transcribed_to_report.add(100)
        transcription_info, _ = repos.json_file_at_commit(
            repo, 'transcription.json', commit, required=True)
        duration = transcription_info['duration']
        snippet_ms = _snippet_ms()
        snippets_total = duration / snippet_ms
        if duration % snippet_ms:
            snippets_total += 1
        reviews_total = snippets_total - 1
        completions = []
        now_url = 'http://{host}/?src=rc'.format(**dict(
            host=request.host,
        ))
        for c in reversed(list(repo.iter_commits(commit, ['remaining_reviews.json', 'remaining_snippets.json']))):
            this_url = 'http://{host}/?rev={rev}&src=rc'.format(**dict(
                host=request.host,
                rev=c.hexsha,
            ))
            snippets_remaining = len(repos.get_remaining_snippets(c.tree))
            snippets_completed = snippets_total - snippets_remaining
            snippets_percent = snippets_completed * 100 / snippets_total
            reviews_remaining = len(repos.get_remaining_reviews(c.tree))
            reviews_completed = reviews_total - reviews_remaining
            reviews_percent = reviews_completed * 100 / reviews_total
            if snippets_percent in percent_transcribed_to_report:
                completions.append((
                    snippets_percent, None, this_url, c.authored_date,
                ))
                percent_transcribed_to_report.remove(snippets_percent)
            elif reviews_percent in percent_reviewed_to_report:
                completions.append((
                    None, reviews_percent, this_url, c.authored_date,
                ))
                percent_reviewed_to_report.remove(reviews_percent)
        # Report completion in chrono order.
        completions.reverse()
        pub_date = commit.authored_date
        data = dict(
            _standard_response(repo, commit),
            completions=completions,
            now_url=now_url,
            pub_date=pub_date,
            request=request,
            rfc822_from_time=rfc822_from_time,
        )
        content = render('fanscribed:templates/rss_completion.xml.mako', data, request=request)
        cache.cache_content(cache_key, content, mtime)
    return Response(content, content_type='application/rss+xml', date=mtime)
Example #2
0
def _progress_dicts(tree, transcription_info):
    if 'duration' in transcription_info:
        duration = transcription_info['duration']
        snippet_ms = _snippet_ms()
        snippets_total = duration / snippet_ms
        if duration % snippet_ms:
            snippets_total += 1
        snippets_remaining = len(repos.get_remaining_snippets(tree))
        snippets_completed = snippets_total - snippets_remaining
        snippets_percent = snippets_completed * 100 / snippets_total
        reviews_total = snippets_total - 1
        reviews_remaining = len(repos.get_remaining_reviews(tree))
        reviews_completed = reviews_total - reviews_remaining
        reviews_percent = reviews_completed * 100 / reviews_total
    else:
        snippets_total = 0
        snippets_remaining = 0
        snippets_completed = 0
        snippets_percent = 0
        reviews_total = 0
        reviews_remaining = 0
        reviews_completed = 0
        reviews_percent = 0
    return dict(
        snippets_progress=dict(
            total=snippets_total,
            completed=snippets_completed,
            percent=snippets_percent,
        ),
        reviews_progress=dict(
            total=reviews_total,
            completed=reviews_completed,
            percent=reviews_percent,
        ),
        # Support for embedding in mediawiki
        mediawiki=dict(
            snippets_percent=snippets_percent,
            reviews_percent=reviews_percent,
        ),
    )