in kitsune/kpi/management/utils.py [0:0]
def _get_up_to_date_count(top_60_docs, locale):
up_to_date_docs = 0
num_docs = 0
for doc in top_60_docs:
if num_docs == MAX_DOCS_UP_TO_DATE:
break
if not doc.is_localizable:
# Skip non localizable documents.
continue
num_docs += 1
cur_rev_id = doc.latest_localizable_revision_id
translation = doc.translated_to(locale)
if not translation or not translation.current_revision_id:
continue
if translation.current_revision.based_on_id >= cur_rev_id:
# The latest translation is based on the latest revision
# that is ready for localization or a newer one.
up_to_date_docs += 1
else:
# Check if the approved revisions that happened between
# the last approved translation and the latest revision
# that is ready for localization are all minor (significance =
# TYPO_SIGNIFICANCE). If so, the translation is still
# considered up to date.
revs = doc.revisions.filter(
id__gt=translation.current_revision.based_on_id,
is_approved=True,
id__lte=cur_rev_id,
).exclude(significance=TYPO_SIGNIFICANCE)
if not revs.exists():
up_to_date_docs += 1
# If there is only 1 revision of MEDIUM_SIGNIFICANCE, then we
# count that as half-up-to-date (see bug 790797).
elif len(revs) == 1 and revs[0].significance == MEDIUM_SIGNIFICANCE:
up_to_date_docs += 0.5
return up_to_date_docs, num_docs