'Return a tuple: (the correct value of based_on, whether the old
value was correct).
based_on must be an approved revision of the English version of the
document if there are any such revisions, any revision if no
approved revision exists, and None otherwise. If based_on is not
already set when this is called, the return value defaults to the
current_revision of the English document.'

def _based_on_is_clean(self):

    original = self.document.original
    base = original.current_or_latest_revision()
    has_approved = original.revisions.filter(is_approved=True).exists()
    if (original.current_revision or (not has_approved)):
        if (self.based_on and (self.based_on.document != original)):
            return (base, False)
    elif self.based_on:
        return (None, False)
    return (self.based_on, True)
