diff --git a/metrics/migrations/0009_metric_boolean_type.py b/metrics/migrations/0009_metric_boolean_type.py new file mode 100644 index 0000000..2b743e9 --- /dev/null +++ b/metrics/migrations/0009_metric_boolean_type.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.7 on 2023-10-20 03:07 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('metrics', '0008_metric_number_of_organizers_retained_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='metric', + name='boolean_type', + field=models.BooleanField(default=False), + ), + ] diff --git a/metrics/models.py b/metrics/models.py index c7858d4..5a1189e 100644 --- a/metrics/models.py +++ b/metrics/models.py @@ -116,6 +116,7 @@ class Metric(models.Model): number_of_events = models.IntegerField(null=True, default=0) number_of_people_reached_through_social_media = models.IntegerField(null=True, default=0) + boolean_type = models.BooleanField(default=False) other_type = models.CharField(null=True, blank=True, max_length=420) observation = models.CharField(null=True, blank=True, max_length=420) diff --git a/metrics/views.py b/metrics/views.py index 82da7dd..779a29f 100644 --- a/metrics/views.py +++ b/metrics/views.py @@ -95,6 +95,7 @@ def get_metrics_and_aggregate_per_project(): "Number of partnerships": metric.number_of_partnerships, "Number of organizers": metric.number_of_organizers, "Number of people reached through social media": metric.number_of_people_reached_through_social_media, + "Is complete": metric.boolean_type, } done = { "Wikipedia": reports.aggregate(total=Sum(F("wikipedia_created") + F("wikipedia_edited")))["total"] or 0, @@ -120,6 +121,7 @@ def get_metrics_and_aggregate_per_project(): "Number of partnerships": Partner.objects.filter(partners__in=reports).distinct().count() or 0, "Number of organizers": Organizer.objects.filter(organizers__in=reports).distinct().count() or 0, "Number of people reached through social media": reports.aggregate(total=Sum(F("number_of_people_reached_through_social_media")))["total"] or 0, + "Is complete": reports.filter(metrics_related__boolean_type=True).exists() or False, } result_metrics = {key: {"goal": value, "done": done[key]} for key, value in goal.items() if value != 0}