def calculate_stats(units): """calculate translation statistics for given unit queryset""" total = sum_column(units, ['source_wordcount'], count=True) untranslated = sum_column(units.filter(state=UNTRANSLATED), ['source_wordcount'], count=True) fuzzy = sum_column(units.filter(state=FUZZY), ['source_wordcount'], count=True) translated = sum_column(units.filter(state=TRANSLATED), ['source_wordcount', 'target_wordcount'], count=True) result = {'errors': 0} result['total'] = total['count'] if result['total'] == 0: result['totalsourcewords'] = 0 else: result['totalsourcewords'] = total['source_wordcount'] result['fuzzy'] = fuzzy['count'] if result['fuzzy'] == 0: result['fuzzysourcewords'] = 0 else: result['fuzzysourcewords'] = fuzzy['source_wordcount'] result['untranslated'] = untranslated['count'] if result['untranslated'] == 0: result['untranslatedsourcewords'] = 0 else: result['untranslatedsourcewords'] = untranslated['source_wordcount'] result['translated'] = translated['count'] if result['translated'] == 0: result['translatedsourcewords'] = 0 result['translatedtargetwords'] = 0 else: result['translatedsourcewords'] = translated['source_wordcount'] result['translatedtargetwords'] = translated['target_wordcount'] return result
def calculate_stats(units): """calculate translation statistics for given unit queryset""" total = sum_column(units, ['source_wordcount'], count=True) untranslated = sum_column(units.filter(state=UNTRANSLATED), ['source_wordcount'], count=True) fuzzy = sum_column(units.filter(state=FUZZY), ['source_wordcount'], count=True) translated = sum_column(units.filter(state=TRANSLATED), ['source_wordcount', 'target_wordcount'], count=True) result = {} result['total'] = total['count'] if result['total'] == 0: result['totalsourcewords'] = 0 else: result['totalsourcewords'] = total['source_wordcount'] result['fuzzy'] = fuzzy['count'] if result['fuzzy'] == 0: result['fuzzysourcewords'] = 0 else: result['fuzzysourcewords'] = fuzzy['source_wordcount'] result['untranslated'] = untranslated['count'] if result['untranslated'] == 0: result['untranslatedsourcewords'] = 0 else: result['untranslatedsourcewords'] = untranslated['source_wordcount'] result['translated'] = translated['count'] if result['translated'] == 0: result['translatedsourcewords'] = 0 result['translatedtargetwords'] = 0 else: result['translatedsourcewords'] = translated['source_wordcount'] result['translatedtargetwords'] = translated['target_wordcount'] return result
def server_stats_more(request): result = cache.get("server_stats_more") if result is None: result = {} unit_query = Unit.objects.filter(state__gte=TRANSLATED).exclude( store__translation_project__project__code__in=('pootle', 'tutorial', 'terminology')).exclude( store__translation_project__language__code='templates').order_by() result['store_count'] = unit_query.values('store').distinct().count() result['project_count'] = unit_query.values('store__translation_project__project').distinct().count() result['language_count'] = unit_query.values('store__translation_project__language').distinct().count() sums = sum_column(unit_query, ('source_wordcount',), count=True) result['string_count'] = sums['count'] result['word_count'] = sums['source_wordcount'] or 0 result['user_active_count'] = (PootleProfile.objects.exclude(submission=None) |\ PootleProfile.objects.exclude(suggestion=None) |\ PootleProfile.objects.exclude(suggester=None)).order_by().count() cache.set("server_stats_more", result, 86400) _format_numbers(result) stat_strings = { 'store_count': _('Files'), 'project_count': _('Active projects'), 'language_count': _('Active languages'), 'string_count': _('Translated strings'), 'word_count': _('Translated words'), 'user_active_count': _('Active users') } response = [] for k in result.keys(): response.append((stat_strings[k], result[k])) response = json.dumps(response) return HttpResponse(response, mimetype="application/json")
def calculate_stats(units): """Calculate translation statistics for a given `units` queryset.""" total = sum_column(units, ["source_wordcount"], count=True) untranslated = sum_column(units.filter(state=UNTRANSLATED), ["source_wordcount"], count=True) fuzzy = sum_column(units.filter(state=FUZZY), ["source_wordcount"], count=True) translated = sum_column(units.filter(state=TRANSLATED), ["source_wordcount", "target_wordcount"], count=True) result = {"errors": 0} result["total"] = total["count"] if result["total"] == 0: result["totalsourcewords"] = 0 else: result["totalsourcewords"] = total["source_wordcount"] result["fuzzy"] = fuzzy["count"] if result["fuzzy"] == 0: result["fuzzysourcewords"] = 0 else: result["fuzzysourcewords"] = fuzzy["source_wordcount"] result["untranslated"] = untranslated["count"] if result["untranslated"] == 0: result["untranslatedsourcewords"] = 0 else: result["untranslatedsourcewords"] = untranslated["source_wordcount"] result["translated"] = translated["count"] if result["translated"] == 0: result["translatedsourcewords"] = 0 result["translatedtargetwords"] = 0 else: result["translatedsourcewords"] = translated["source_wordcount"] result["translatedtargetwords"] = translated["target_wordcount"] return result
def server_stats(): result = cache.get("server_stats") if result is None: result = {} unit_query = Unit.objects.filter(state__gte=TRANSLATED).exclude( store__translation_project__project__code__in=('pootle', 'tutorial', 'terminology')).exclude( store__translation_project__language__code='templates').order_by() result['store_count'] = unit_query.values('store').distinct().count() result['project_count'] = unit_query.values('store__translation_project__project').distinct().count() result['language_count'] = unit_query.values('store__translation_project__language').distinct().count() sums = sum_column(unit_query, ('target_wordcount',), count=True) result['string_count'] = sums['count'] result['word_count'] = sums['target_wordcount'] result['submission_count'] = Submission.objects.count() result['pending_count'] = Suggestion.objects.count() result['user_count'] = User.objects.count() cache.set("server_stats", result, settings.CACHE_MIDDLEWARE_SECONDS * 10) return result
def server_stats_more(request): result = cache.get("server_stats_more") if result is None: result = {} unit_query = ( Unit.objects.filter(state__gte=TRANSLATED) .exclude(store__translation_project__project__code__in=("pootle", "tutorial", "terminology")) .exclude(store__translation_project__language__code="templates") .order_by() ) result["store_count"] = unit_query.values("store").distinct().count() result["project_count"] = unit_query.values("store__translation_project__project").distinct().count() result["language_count"] = unit_query.values("store__translation_project__language").distinct().count() sums = sum_column(unit_query, ("source_wordcount",), count=True) result["string_count"] = sums["count"] result["word_count"] = sums["source_wordcount"] or 0 result["user_active_count"] = ( ( PootleProfile.objects.exclude(submission=None) | PootleProfile.objects.exclude(suggestion=None) | PootleProfile.objects.exclude(suggester=None) ) .order_by() .count() ) cache.set("server_stats_more", result, 86400) _format_numbers(result) stat_strings = { "store_count": _("Files"), "project_count": _("Active projects"), "language_count": _("Active languages"), "string_count": _("Translated strings"), "word_count": _("Translated words"), "user_active_count": _("Active users"), } response = [] for k in result.keys(): response.append((stat_strings[k], result[k])) response = simplejson.dumps(response) return HttpResponse(response, mimetype="application/json")
def calc_translated_wordcount(units): translated = sum_column(units.filter(state=TRANSLATED), ['source_wordcount'], count=False) return translated['source_wordcount'] or 0
def calc_fuzzy_wordcount(units): fuzzy = sum_column(units.filter(state=FUZZY), ['source_wordcount'], count=False) return fuzzy['source_wordcount'] or 0
def calc_total_wordcount(units): total = sum_column(units, ['source_wordcount'], count=False) return total['source_wordcount'] or 0
def calc_untranslated_wordcount(units): untranslated = sum_column(units.filter(state=UNTRANSLATED), ["source_wordcount"], count=False) return untranslated["source_wordcount"] or 0