I've collected the requested numbers in the spreadsheet: https://docs.google.com/spreadsheets/d/1kJzAS6cLXUSdaPm7a_oAnG-8zSBHQUbMpsil4rLqIJs/edit?usp=sharing I used the scripts below. Let me know if you have more data requests. ```python # New User Registrations users = User.objects.all() \ .annotate(period=TruncMonth("date_joined")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in users: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Translation Submissions translations = Translation.objects.filter(user__isnull=False) \ .annotate(period=TruncMonth("date")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in translations: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # Active Users translations = Translation.objects.filter(user__isnull=False) \ .annotate(period=TruncMonth("date")) \ .values("period", "user_id") \ .annotate(count=Count("user_id")) \ .values('period', 'count') \ .order_by("period") translations_dict = defaultdict(list) for x in translations: translations_dict[x["period"]].append(x["count"]) for y in translations_dict.items(): date = y[0] count = len(y[1]) print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) ```
Bug 1629968 Comment 1 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
I've collected the requested numbers in the spreadsheet: https://docs.google.com/spreadsheets/d/1kJzAS6cLXUSdaPm7a_oAnG-8zSBHQUbMpsil4rLqIJs/edit?usp=sharing I used the scripts below. Let me know if you have more data requests. ```python # New User Registrations users = User.objects.all() \ .annotate(period=TruncMonth("date_joined")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in users: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Translation Submissions translations = Translation.objects.filter(user__isnull=False) \ .annotate(period=TruncMonth("date")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in translations: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # Active Users translations = Translation.objects.filter(user__isnull=False) \ .annotate(period=TruncMonth("date")) \ .values("period", "user_id") \ .annotate(count=Count("user_id")) \ .values('period', 'count') \ .order_by("period") translations_dict = defaultdict(list) for x in translations: translations_dict[x["period"]].append(x["count"]) for y in translations_dict.items(): date = y[0] count = len(y[1]) print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Translation Submissions per Locale import datetime from pontoon.base.models import * from django.db.models.functions import TruncMonth locales = Locale.objects.available().order_by("code") data = {} for year in range(2017, datetime.datetime.now().year + 1): for month in range(1, 13): if year == datetime.datetime.now().year and month > datetime.datetime.now().month: continue data["{}/{}".format(month, year)] = {} for locale in locales: translations = Translation.objects.filter( date__gte=datetime.datetime(2017,1,1), locale=locale, user__isnull=False, ) \ .annotate(period=TruncMonth("date")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in translations: date = x["period"] date = "{}/{}".format(date.month, date.year) count = x["count"] data[date][locale.code] = count print("," + ",".join(locales.values_list("code", flat=True))) for date, values in data.items(): line = date for l in locales: line = line + "," + str(values.get(l.code, 0)) print(line) ```
I've collected the requested numbers in the spreadsheet: https://docs.google.com/spreadsheets/d/1kJzAS6cLXUSdaPm7a_oAnG-8zSBHQUbMpsil4rLqIJs/edit?usp=sharing I used the scripts below. Let me know if you have more data requests. ```python import datetime from pontoon.base.models import * from django.db.models.functions import TruncMonth # New User Registrations users = User.objects.all() \ .annotate(period=TruncMonth("date_joined")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in users: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Translation Submissions translations = Translation.objects.filter(user__isnull=False) \ .annotate(period=TruncMonth("date")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in translations: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # Active Users translations = Translation.objects.filter(user__isnull=False) \ .annotate(period=TruncMonth("date")) \ .values("period", "user_id") \ .annotate(count=Count("user_id")) \ .values('period', 'count') \ .order_by("period") translations_dict = defaultdict(list) for x in translations: translations_dict[x["period"]].append(x["count"]) for y in translations_dict.items(): date = y[0] count = len(y[1]) print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Translation Submissions per Locale locales = Locale.objects.available().order_by("code") data = {} for year in range(2017, datetime.datetime.now().year + 1): for month in range(1, 13): if year == datetime.datetime.now().year and month > datetime.datetime.now().month: continue data["{}/{}".format(month, year)] = {} for locale in locales: translations = Translation.objects.filter( date__gte=datetime.datetime(2017,1,1), locale=locale, user__isnull=False, ) \ .annotate(period=TruncMonth("date")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in translations: date = x["period"] date = "{}/{}".format(date.month, date.year) count = x["count"] data[date][locale.code] = count print("," + ",".join(locales.values_list("code", flat=True))) for date, values in data.items(): line = date for l in locales: line = line + "," + str(values.get(l.code, 0)) print(line) ```
I've collected the requested numbers in the spreadsheet: https://docs.google.com/spreadsheets/d/1kJzAS6cLXUSdaPm7a_oAnG-8zSBHQUbMpsil4rLqIJs/edit?usp=sharing I used the scripts below. Let me know if you have more data requests. ```python import datetime from pontoon.base.models import * from django.db.models.functions import TruncMonth # New User Registrations users = User.objects.all() \ .annotate(period=TruncMonth("date_joined")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in users: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Translation Submissions translations = Translation.objects.filter(user__isnull=False) \ .annotate(period=TruncMonth("date")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in translations: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Entities created entities = Entity.objects \ .annotate(period=TruncMonth("date_created")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in entities: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # Active Users translations = Translation.objects.filter(user__isnull=False) \ .annotate(period=TruncMonth("date")) \ .values("period", "user_id") \ .annotate(count=Count("user_id")) \ .values('period', 'count') \ .order_by("period") translations_dict = defaultdict(list) for x in translations: translations_dict[x["period"]].append(x["count"]) for y in translations_dict.items(): date = y[0] count = len(y[1]) print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Translation Submissions per Locale locales = Locale.objects.available().order_by("code") data = {} for year in range(2017, datetime.datetime.now().year + 1): for month in range(1, 13): if year == datetime.datetime.now().year and month > datetime.datetime.now().month: continue data["{}/{}".format(month, year)] = {} for locale in locales: translations = Translation.objects.filter( date__gte=datetime.datetime(2017,1,1), locale=locale, user__isnull=False, ) \ .annotate(period=TruncMonth("date")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in translations: date = x["period"] date = "{}/{}".format(date.month, date.year) count = x["count"] data[date][locale.code] = count print("," + ",".join(locales.values_list("code", flat=True))) for date, values in data.items(): line = date for l in locales: line = line + "," + str(values.get(l.code, 0)) print(line) ```
I've collected the requested numbers in the spreadsheet: https://docs.google.com/spreadsheets/d/1kJzAS6cLXUSdaPm7a_oAnG-8zSBHQUbMpsil4rLqIJs/edit?usp=sharing I used the scripts below. Let me know if you have more data requests. ```python import datetime from pontoon.base.models import * from django.db.models.functions import TruncMonth # New User Registrations users = User.objects.all() \ .annotate(period=TruncMonth("date_joined")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in users: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Translation Submissions translations = Translation.objects.filter(user__isnull=False) \ .annotate(period=TruncMonth("date")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in translations: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Entity Creations entities = Entity.objects \ .annotate(period=TruncMonth("date_created")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in entities: date = x["period"] count = x["count"] print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # Active Users translations = Translation.objects.filter(user__isnull=False) \ .annotate(period=TruncMonth("date")) \ .values("period", "user_id") \ .annotate(count=Count("user_id")) \ .values('period', 'count') \ .order_by("period") translations_dict = defaultdict(list) for x in translations: translations_dict[x["period"]].append(x["count"]) for y in translations_dict.items(): date = y[0] count = len(y[1]) print("{month}/{year},{count}".format(month=date.month, year=date.year, count=count)) # New Translation Submissions per Locale locales = Locale.objects.available().order_by("code") data = {} for year in range(2017, datetime.datetime.now().year + 1): for month in range(1, 13): if year == datetime.datetime.now().year and month > datetime.datetime.now().month: continue data["{}/{}".format(month, year)] = {} for locale in locales: translations = Translation.objects.filter( date__gte=datetime.datetime(2017,1,1), locale=locale, user__isnull=False, ) \ .annotate(period=TruncMonth("date")) \ .values("period") \ .annotate(count=Count("id")) \ .order_by("period") for x in translations: date = x["period"] date = "{}/{}".format(date.month, date.year) count = x["count"] data[date][locale.code] = count print("," + ",".join(locales.values_list("code", flat=True))) for date, values in data.items(): line = date for l in locales: line = line + "," + str(values.get(l.code, 0)) print(line) ```