def fill_in_approved(apps, schema_editor): Translation = apps.get_model('trans', 'Translation') for translation in Translation.objects.all(): stats = translation.unit_set.aggregate( Sum('num_words'), approved__sum=conditional_sum(1, state__gte=STATE_APPROVED), approved_words__sum=conditional_sum('num_words', state__gte=STATE_APPROVED), ) if stats['num_words__sum'] is not None: translation.approved = int(stats['approved__sum']) translation.approved_words = int(stats['approved_words__sum']) translation.save(update_fields=('approved', 'approved_words'))
def fill_in_approved(apps, schema_editor): Translation = apps.get_model('trans', 'Translation') for translation in Translation.objects.all(): stats = translation.unit_set.aggregate( Sum('num_words'), approved__sum=conditional_sum(1, state__gte=STATE_APPROVED), approved_words__sum=conditional_sum( 'num_words', state__gte=STATE_APPROVED ), ) if stats['num_words__sum'] is not None: translation.approved = int(stats['approved__sum']) translation.approved_words = int(stats['approved_words__sum']) translation.save(update_fields=('approved', 'approved_words'))
def fill_in_have_comment(apps, schema_editor): Translation = apps.get_model('trans', 'Translation') for translation in Translation.objects.all(): stats = translation.unit_set.aggregate( Sum('num_words'), has_comment__sum=conditional_sum(1, has_comment=True), ) if stats['num_words__sum'] is not None: translation.have_comment = int(stats['has_comment__sum']) translation.save()
def prefetch_basic(self): stats = self._object.unit_set.aggregate( all=Count("id"), all_words=Sum("num_words"), all_chars=Sum(Length("source")), fuzzy=conditional_sum(1, state=STATE_FUZZY), fuzzy_words=conditional_sum("num_words", state=STATE_FUZZY), fuzzy_chars=conditional_sum(Length("source"), state=STATE_FUZZY), translated=conditional_sum(1, state__gte=STATE_TRANSLATED), translated_words=conditional_sum("num_words", state__gte=STATE_TRANSLATED), translated_chars=conditional_sum(Length("source"), state__gte=STATE_TRANSLATED), todo=conditional_sum(1, state__lt=STATE_TRANSLATED), todo_words=conditional_sum("num_words", state__lt=STATE_TRANSLATED), todo_chars=conditional_sum(Length("source"), state__lt=STATE_TRANSLATED), nottranslated=conditional_sum(1, state=STATE_EMPTY), nottranslated_words=conditional_sum("num_words", state=STATE_EMPTY), nottranslated_chars=conditional_sum(Length("source"), state=STATE_EMPTY), approved=conditional_sum(1, state__gte=STATE_APPROVED), approved_words=conditional_sum("num_words", state__gte=STATE_APPROVED), approved_chars=conditional_sum(Length("source"), state__gte=STATE_APPROVED), allchecks=conditional_sum(1, has_failing_check=True), allchecks_words=conditional_sum("num_words", has_failing_check=True), allchecks_chars=conditional_sum(Length("source"), has_failing_check=True), suggestions=conditional_sum(1, has_suggestion=True), suggestions_words=conditional_sum("num_words", has_suggestion=True), suggestions_chars=conditional_sum(Length("source"), has_suggestion=True), comments=conditional_sum(1, has_comment=True), comments_words=conditional_sum("num_words", has_comment=True), comments_chars=conditional_sum(Length("source"), has_comment=True), approved_suggestions=conditional_sum(1, state__gte=STATE_APPROVED, has_suggestion=True), approved_suggestions_words=conditional_sum( "num_words", state__gte=STATE_APPROVED, has_suggestion=True), approved_suggestions_chars=conditional_sum( Length("source"), state__gte=STATE_APPROVED, has_suggestion=True), ) for key, value in stats.items(): self.store(key, value) # Calculate some values self.store("languages", 1) # Calculate percents self.calculate_basic_percents() # Last change timestamp self.fetch_last_change()
def prefetch_basic(self): stats = self._object.unit_set.aggregate( all=Count('id'), all_words=Sum('num_words'), fuzzy=conditional_sum(1, state=STATE_FUZZY), fuzzy_words=conditional_sum('num_words', state=STATE_FUZZY), translated=conditional_sum(1, state__gte=STATE_TRANSLATED), translated_words=conditional_sum('num_words', state__gte=STATE_TRANSLATED), todo=conditional_sum(1, state__lt=STATE_TRANSLATED), todo_words=conditional_sum('num_words', state__lt=STATE_TRANSLATED), nottranslated=conditional_sum(1, state=STATE_EMPTY), nottranslated_words=conditional_sum('num_words', state=STATE_EMPTY), approved=conditional_sum(1, state__gte=STATE_APPROVED), approved_words=conditional_sum('num_words', state__gte=STATE_APPROVED), allchecks=conditional_sum(1, has_failing_check=True), allchecks_words=conditional_sum('num_words', has_failing_check=True), suggestions=conditional_sum(1, has_suggestion=True), suggestions_words=conditional_sum('num_words', has_suggestion=True), comments=conditional_sum(1, has_comment=True), comments_words=conditional_sum( 'num_words', has_comment=True, ), approved_suggestions=conditional_sum(1, state__gte=STATE_APPROVED, has_suggestion=True), approved_suggestions_words=conditional_sum( 'num_words', state__gte=STATE_APPROVED, has_suggestion=True), ) for key, value in stats.items(): self.store(key, value) # Calculate some values self.store('languages', 1) # Calculate percents self.calculate_basic_percents() # Count recent changes self.count_changes() self.fetch_last_change()
def prefetch_basic(self): stats = self._object.unit_set.aggregate( all=Count('id'), all_words=Sum('num_words'), fuzzy=conditional_sum(1, state=STATE_FUZZY), fuzzy_words=conditional_sum( 'num_words', state=STATE_FUZZY ), translated=conditional_sum(1, state__gte=STATE_TRANSLATED), translated_words=conditional_sum( 'num_words', state__gte=STATE_TRANSLATED ), todo=conditional_sum(1, state__lt=STATE_TRANSLATED), todo_words=conditional_sum( 'num_words', state__lt=STATE_TRANSLATED ), nottranslated=conditional_sum(1, state=STATE_EMPTY), nottranslated_words=conditional_sum( 'num_words', state=STATE_EMPTY ), approved=conditional_sum(1, state__gte=STATE_APPROVED), approved_words=conditional_sum( 'num_words', state__gte=STATE_APPROVED ), allchecks=conditional_sum(1, has_failing_check=True), allchecks_words=conditional_sum( 'num_words', has_failing_check=True ), suggestions=conditional_sum(1, has_suggestion=True), suggestions_words=conditional_sum( 'num_words', has_suggestion=True ), comments=conditional_sum(1, has_comment=True), comments_words=conditional_sum( 'num_words', has_comment=True, ), approved_suggestions=conditional_sum( 1, state__gte=STATE_APPROVED, has_suggestion=True ), approved_suggestions_words=conditional_sum( 'num_words', state__gte=STATE_APPROVED, has_suggestion=True ), ) for key, value in stats.items(): self.store(key, value) # Calculate some values self.store('languages', 1) # Calculate percents self.calculate_basic_percents() # Count recent changes self.count_changes() self.fetch_last_change()
def update_stats(self): """Update translation statistics.""" # Grab stats stats = self.unit_set.aggregate( Sum('num_words'), Count('id'), fuzzy__sum=conditional_sum(1, state=STATE_FUZZY), translated__sum=conditional_sum(1, state__gte=STATE_TRANSLATED), approved__sum=conditional_sum(1, state__gte=STATE_APPROVED), has_failing_check__sum=conditional_sum(1, has_failing_check=True), has_suggestion__sum=conditional_sum(1, has_suggestion=True), has_comment__sum=conditional_sum(1, has_comment=True), translated_words__sum=conditional_sum('num_words', state__gte=STATE_TRANSLATED), approved_words__sum=conditional_sum('num_words', state__gte=STATE_APPROVED), fuzzy_words__sum=conditional_sum('num_words', state=STATE_FUZZY), check_words__sum=conditional_sum('num_words', has_failing_check=True), approved_suggestions__sum=conditional_sum( 1, state__gte=STATE_APPROVED, has_suggestion=True), approved_suggestions_words__sum=conditional_sum( 'num_words', state__gte=STATE_APPROVED, has_suggestion=True), ) # Check if we have any units if stats['num_words__sum'] is None: self.total_words = 0 self.total = 0 self.fuzzy = 0 self.translated = 0 self.failing_checks = 0 self.have_suggestion = 0 self.have_comment = 0 self.translated_words = 0 self.fuzzy_words = 0 self.failing_checks_words = 0 self.approved = 0 self.approved_words = 0 self.approved_suggestions = 0 self.approved_suggestions_words = 0 else: self.total_words = stats['num_words__sum'] self.total = stats['id__count'] self.fuzzy = int(stats['fuzzy__sum']) self.translated = int(stats['translated__sum']) self.failing_checks = int(stats['has_failing_check__sum']) self.have_suggestion = int(stats['has_suggestion__sum']) self.have_comment = int(stats['has_comment__sum']) self.translated_words = int(stats['translated_words__sum']) self.fuzzy_words = int(stats['fuzzy_words__sum']) self.failing_checks_words = int(stats['check_words__sum']) self.approved = int(stats['approved__sum']) self.approved_words = int(stats['approved_words__sum']) self.approved_suggestions = int(stats['approved_suggestions__sum']) self.approved_suggestions_words = int( stats['approved_suggestions_words__sum']) self.save()