diff --git a/metrics/tests.py b/metrics/tests.py index 6fba4dc..1c377bc 100644 --- a/metrics/tests.py +++ b/metrics/tests.py @@ -5,7 +5,7 @@ from report.models import Report, Editor from users.models import User, UserProfile, TeamArea from strategy.models import StrategicAxis -from .views import get_metrics_and_aggregate_per_project, get_aggregated_metrics_data, get_aggregated_metrics_data_done, get_activities, get_chart_data, get_chart_data_many_to_many +from .views import get_metrics_and_aggregate_per_project, get_aggregated_metrics_data, get_aggregated_metrics_data_done from django.urls import reverse from django.contrib.auth.models import Permission from datetime import datetime, timedelta @@ -73,7 +73,7 @@ class ProjectModelTests(TestCase): def setUp(self): self.text = "text" self.status = True - self.project = Project.objects.create(text=self.text, status=self.status) + self.project = Project.objects.create(text=self.text, active=self.status) def test_project_str_returns_text(self): self.assertEqual(str(self.project), self.text) @@ -138,33 +138,10 @@ def test_about_view(self): self.assertTemplateUsed(response, "metrics/about.html") def test_show_activities_plan_view(self): - project = Project.objects.create(text="Plano de atividades") - area = Area.objects.create(text="Area") - area.project.add(project) - Activity.objects.create(text="Activity", area=area) url = reverse("metrics:show_activities") response = self.client.get(url) - self.assertEqual(response.status_code, 200) - self.assertTemplateUsed(response, "metrics/activities_plan.html") - self.assertContains(response, "Activity") - self.assertContains(response, "Area") - - def test_show_metrics_is_only_visible_for_users_with_permission(self): - self.user.user_permissions.remove(self.view_metrics_permission) - self.client.login(username=self.username, password=self.password) - url = reverse("metrics:metrics") - response = self.client.get(url) - self.assertEqual(response.status_code, 302) - self.assertRedirects(response, f"{reverse('login')}?next={reverse('metrics:metrics')}") - - def test_show_metrics_get_is_shown(self): - self.client.login(username=self.username, password=self.password) - url = reverse("metrics:metrics") - response = self.client.get(url) - - self.assertEqual(response.status_code, 200) - self.assertTemplateUsed(response, "metrics/list_metrics.html") + self.assertEqual(response.url, "https://meta.wikimedia.org/wiki/Wiki_Movement_Brazil_User_Group/Plan_of_Activities") def test_show_metrics_per_project(self): self.client.login(username=self.username, password=self.password) @@ -174,53 +151,6 @@ def test_show_metrics_per_project(self): response = self.client.get(url) self.assertIn("dataset", str(response.context)) - def test_show_metrics_shows_metrics_charts(self): - self.client.login(username=self.username, password=self.password) - - area = Area.objects.create(text="Area") - activity = Activity.objects.create(text="Activity", area=area) - metric = Metric.objects.create(text="Metric 1", activity=activity, wikipedia_created=4) - - url = reverse("metrics:metrics") - response = self.client.get(url) - - self.assertIn("wikipedia_created", str(response.context["total_sum"])) - self.assertIn("", str(response.content)) - self.assertIn("", str(response.content)) - self.assertNotIn("", str(response.content)) - - def test_show_metrics_shows_metrics_charts_with_more_than_one_activity(self): - self.client.login(username=self.username, password=self.password) - - area = Area.objects.create(text="Area") - activity_1 = Activity.objects.create(text="Activity 1", area=area) - activity_2 = Activity.objects.create(text="Activity 2", area=area) - metric = Metric.objects.create(text="Metric 1", activity=activity_2, wikipedia_created=4) - - url = reverse("metrics:metrics") - response = self.client.get(url) - - self.assertIn("wikipedia_created", str(response.context["total_sum"])) - self.assertIn("", str(response.content)) - self.assertIn("", str(response.content)) - self.assertNotIn("", str(response.content)) - - def test_show_metrics_shows_projects_metrics_as_charts(self): - self.client.login(username=self.username, password=self.password) - - area = Area.objects.create(text="Area") - activity = Activity.objects.create(text="Activity", area=area) - project_1 = Project.objects.create(text="Project 1") - project_2 = Project.objects.create(text="Project 2") - metric = Metric.objects.create(text="Metric 1", activity=activity, wikipedia_created=4) - metric.project.add(project_2) - metric.save() - - url = reverse("metrics:metrics") - response = self.client.get(url) - - self.assertIn(project_2.text, str(response.context["projects_metrics"])) - def test_update_metrics(self): self.client.login(username=self.username, password=self.password) area = Area.objects.create(text="Area") @@ -507,88 +437,6 @@ def test_get_metrics_and_aggregate_per_project_without_data(self): aggregated_metrics = get_metrics_and_aggregate_per_project() self.assertEqual(aggregated_metrics, {}) - def test_get_activities_with_data(self): - self.report_1.wikipedia_created = 1 - self.report_2.editors.add(self.editor_1) - self.report_1.save() - self.report_2.save() - - chart_data = get_activities() - self.assertEqual(chart_data, {"wikipedia": [{"x": str(datetime.now().date() + timedelta(days=1)), - "y": self.report_1.wikipedia_created, - "label": self.report_1.description}], - "commons": [], - "wikidata": [], - "wikiversity": [], - "wikibooks": [], - "wikisource": [], - "wikinews": [], - "wikiquote": [], - "wiktionary": [], - "wikivoyage": [], - "wikispecies": [], - "metawiki": [], - "mediawiki": [], - "participants": [], - "resources": [], - "feedbacks": [], - "editors": [{"x": str(datetime.now().date() + timedelta(days=2)), - "y": self.report_2.editors.count(), - "label": self.report_2.description}], - "organizers": [], - "partnerships": []}) - - def test_get_activities_without_data(self): - chart_data = get_activities() - self.assertEqual(chart_data, {"wikipedia": [], "commons": [], "wikidata": [], "wikiversity": [], "wikibooks": [], "wikisource": [], "wikinews": [], "wikiquote": [], "wiktionary": [], "wikivoyage": [], "wikispecies": [], "metawiki": [], "mediawiki": [], "participants": [], "resources": [], "feedbacks": [], "editors": [], "organizers": [], "partnerships": []}) - - def test_get_chart_data_with_data(self): - self.report_1.wikipedia_created = 1 - self.report_2.wikipedia_edited = 2 - self.report_3.wikipedia_created = 3 - self.report_3.wikipedia_edited = 4 - self.report_1.save() - self.report_2.save() - self.report_3.save() - - activities = Report.objects.all().order_by("end_date") - chart_data = get_chart_data(activities, "wikipedia_created", "wikipedia_edited") - self.assertEqual(chart_data, [{"x": str(datetime.now().date() + timedelta(days=1)), - "y": self.report_1.wikipedia_created + self.report_1.wikipedia_edited, - "label": self.report_1.description}, - {"x": str(datetime.now().date() + timedelta(days=2)), - "y": self.report_1.wikipedia_created + self.report_1.wikipedia_edited + self.report_2.wikipedia_created + self.report_2.wikipedia_edited, - "label": self.report_2.description}, - {"x": str(datetime.now().date() + timedelta(days=2)), - "y": self.report_1.wikipedia_created + self.report_1.wikipedia_edited + self.report_2.wikipedia_created + self.report_2.wikipedia_edited + self.report_3.wikipedia_created + self.report_3.wikipedia_edited, - "label": self.report_3.description}]) - - def test_get_chart_data_without_data(self): - activities = Report.objects.all().order_by("end_date") - chart_data = get_chart_data(activities, "wikipedia_created", "wikipedia_edited") - self.assertEqual(chart_data, []) - - def test_get_chart_data_many_to_many_with_data(self): - self.report_1.editors.add(self.editor_1) - self.report_1.editors.add(self.editor_2) - self.report_2.editors.add(self.editor_3) - self.report_1.save() - self.report_2.save() - - activities = Report.objects.all().order_by("end_date") - chart_data = get_chart_data_many_to_many(activities, "editors") - self.assertEqual(chart_data, [{"x": str(datetime.now().date() + timedelta(days=1)), - "y": self.report_1.editors.count(), - "label": self.report_1.description}, - {"x": str(datetime.now().date() + timedelta(days=2)), - "y": self.report_1.editors.count() + self.report_2.editors.count(), - "label": self.report_2.description}]) - - def test_get_chart_data_many_to_many_without_data(self): - activities = Report.objects.all().order_by("end_date") - chart_data = get_chart_data_many_to_many(activities, "editors") - self.assertEqual(chart_data, []) - class TagsTests(TestCase): def test_categorize_for_0(self): diff --git a/metrics/urls.py b/metrics/urls.py index fc475de..d465f50 100644 --- a/metrics/urls.py +++ b/metrics/urls.py @@ -8,7 +8,6 @@ path('', views.index, name='index'), path('about', views.about, name='about'), path('activities_plan', views.show_activities_plan, name='show_activities'), - path('metrics', views.show_metrics, name='metrics'), path('metrics_per_project', views.show_metrics_per_project, name='per_project'), path('update_metrics', views.update_metrics_relations, name='update_metrics'), path('metrics_reports/', views.metrics_reports, name='metrics_reports'), diff --git a/metrics/views.py b/metrics/views.py index b81672e..7b75555 100644 --- a/metrics/views.py +++ b/metrics/views.py @@ -36,24 +36,6 @@ def show_activities_plan(request): return redirect(settings.POA_URL) -@login_required -@permission_required("metrics.view_metric") -def show_metrics(request): - total_sum = get_aggregated_metrics_data() - total_done = get_aggregated_metrics_data_done() - timeline_activites = get_activities() - - projects = Project.objects.filter(pk__in=list(Metric.objects.filter(project__isnull=False).values_list("project__pk", flat=True))).exclude(pk=1) - projects_metrics_sum = [] - - if projects.count(): - for project in projects: - projects_metrics_sum.append({"funding": project.text, "total_sum": get_aggregated_metrics_data(project=project)}) - - context = {"total_sum": total_sum, "total_done": total_done, "timeline": timeline_activites, "projects_metrics": projects_metrics_sum, "title": _("Show general metrics")} - return render(request, "metrics/list_metrics.html", context) - - @login_required @permission_required("metrics.view_metric") def show_metrics_per_project(request): @@ -150,7 +132,7 @@ def get_done_for_report(reports): "MetaWiki": reports.aggregate(total=Sum(F("metawiki_created") + F("metawiki_edited")))["total"] or 0, "MediaWiki": reports.aggregate(total=Sum(F("mediawiki_created") + F("mediawiki_edited")))["total"] or 0, "Number of participants": reports.aggregate(total=Sum("participants"))["total"] or 0, - "Number of resources": reports.aggregate(total=Sum("resources"))["total"] or 0, + # "Number of resources": reports.aggregate(total=Sum("resources"))["total"] or 0, "Number of feedbacks": reports.aggregate(total=Sum("feedbacks"))["total"] or 0, "Number of events": reports.count() or 0, "Number of editors": Editor.objects.filter(editors__in=reports).distinct().count() or 0, @@ -159,7 +141,7 @@ def get_done_for_report(reports): "Number of partnerships activated": 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 organizers retained": Organizer.objects.filter(retained=True, 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, + # "Number of people reached through social media": reports.aggregate(total=Sum(F("number_of_people_reached_through_social_media")))["total"] or 0, "Occurence": reports.filter(metrics_related__boolean_type=True).exists() or False, } @@ -282,7 +264,7 @@ def get_aggregated_metrics_data_done(): mediawiki_edited = Report.objects.aggregate(Sum('mediawiki_edited'))['mediawiki_edited__sum'] number_of_participants = Report.objects.aggregate(Sum('participants'))['participants__sum'] - number_of_resources = Report.objects.aggregate(Sum('resources'))['resources__sum'] + # number_of_resources = Report.objects.aggregate(Sum('resources'))['resources__sum'] number_of_feedbacks = Report.objects.aggregate(Sum('feedbacks'))['feedbacks__sum'] number_of_editors = Report.objects.annotate(num_editors=Count('editors')).aggregate(Sum('num_editors'))['num_editors__sum'] number_of_organizers = Report.objects.annotate(num_organizers=Count('organizers')).aggregate(Sum('num_organizers'))['num_organizers__sum'] @@ -321,7 +303,7 @@ def get_aggregated_metrics_data_done(): total_sum["mediawiki_edited"] = mediawiki_edited total_sum["participants"] = number_of_participants - total_sum["resources"] = number_of_resources + # total_sum["resources"] = number_of_resources total_sum["feedbacks"] = number_of_feedbacks total_sum["editors"] = number_of_editors total_sum["organizers"] = number_of_organizers @@ -334,57 +316,6 @@ def get_aggregated_metrics_data_done(): return total_sum -def get_activities(): - activities = Report.objects.all().order_by("end_date") - chart_data = {} - chart_data["wikipedia"] = get_chart_data(activities, "wikipedia_created", "wikipedia_edited") - chart_data["commons"] = get_chart_data(activities, "commons_created", "commons_edited") - chart_data["wikidata"] = get_chart_data(activities, "wikidata_created", "wikidata_edited") - chart_data["wikiversity"] = get_chart_data(activities, "wikiversity_created", "wikiversity_edited") - chart_data["wikibooks"] = get_chart_data(activities, "wikibooks_created", "wikibooks_edited") - chart_data["wikisource"] = get_chart_data(activities, "wikisource_created", "wikisource_edited") - chart_data["wikinews"] = get_chart_data(activities, "wikinews_created", "wikinews_edited") - chart_data["wikiquote"] = get_chart_data(activities, "wikiquote_created", "wikiquote_edited") - chart_data["wiktionary"] = get_chart_data(activities, "wiktionary_created", "wiktionary_edited") - chart_data["wikivoyage"] = get_chart_data(activities, "wikivoyage_created", "wikivoyage_edited") - chart_data["wikispecies"] = get_chart_data(activities, "wikispecies_created", "wikispecies_edited") - chart_data["metawiki"] = get_chart_data(activities, "metawiki_created", "metawiki_edited") - chart_data["mediawiki"] = get_chart_data(activities, "mediawiki_created", "mediawiki_edited") - - chart_data["participants"] = get_chart_data(activities, "participants") - chart_data["resources"] = get_chart_data(activities, "resources") - chart_data["feedbacks"] = get_chart_data(activities, "feedbacks") - chart_data["editors"] = get_chart_data_many_to_many(activities, "editors") - chart_data["organizers"] = get_chart_data_many_to_many(activities, "organizers") - chart_data["partnerships"] = get_chart_data_many_to_many(activities, "partners_activated") - - return chart_data - - -def get_chart_data(activities, created_field=None, edited_field=None): - created_filter = Q(**{created_field + '__gt': 0}) if created_field else Q() - edited_filter = Q(**{edited_field + '__gt': 0}) if edited_field else Q() - filtered_activities = activities.filter(created_filter | edited_filter).order_by("end_date") - chart_data = [] - total_ = 0 - for activity in filtered_activities: - total_created = getattr(activity, created_field) if created_field else 0 - total_edited = getattr(activity, edited_field) if edited_field else 0 - total_ += total_created + total_edited - chart_data.append({"x": activity.end_date.isoformat(), "y": total_, "label": activity.description}) - return chart_data - - -def get_chart_data_many_to_many(activities, field): - filtered_activities = Report.objects.filter(Q(**{field + '__isnull': False})).distinct().order_by("end_date") - chart_data = [] - total_ = 0 - for activity in filtered_activities: - total_ += getattr(activity, field).count() - chart_data.append({"x": activity.end_date.isoformat(), "y": total_, "label": activity.description}) - return chart_data - - def update_metrics_relations(request): main_funding = Project.objects.get(text="Wikimedia Community Fund") editors_metrics = Metric.objects.filter(project=main_funding).filter(Q(number_of_editors__gt=0) | Q(number_of_editors_retained__gt=0) | Q(number_of_new_editors__gt=0)) diff --git a/report/forms.py b/report/forms.py index 6bf31b7..0486537 100644 --- a/report/forms.py +++ b/report/forms.py @@ -84,7 +84,7 @@ def clean_initial_date(self): def clean_metrics_related(self): metrics_related = self.cleaned_data.get('metrics_related') - main_funding = Project.objects.get(text="Wikimedia Community Fund") + main_funding = Project.objects.get(main_funding=True) metrics_main_funding = Metric.objects.filter(project=main_funding) for metric in metrics_related: field_names = [metric_field.name for metric_field in metric._meta.fields if isinstance(metric_field, fields.IntegerField) and metric_field.name != "id" and getattr(metric, metric_field.name) > 0] @@ -269,6 +269,9 @@ def clean_number_of_resources(self): def clean_number_of_partnerships_activated(self): number_of_partnerships_activated = self.cleaned_data.get("number_of_partnerships_activated", 0) return number_of_partnerships_activated if number_of_partnerships_activated else 0 + def clean_number_of_new_partnerships(self): + number_of_new_partnerships = self.cleaned_data.get("number_of_new_partnerships", 0) + return number_of_new_partnerships if number_of_new_partnerships else 0 OperationFormSet = inlineformset_factory( @@ -282,7 +285,8 @@ def clean_number_of_partnerships_activated(self): 'number_of_community_communications', 'number_of_events', 'number_of_resources', - 'number_of_partnerships_activated'), extra=Metric.objects.filter(is_operation=True).count(), + 'number_of_partnerships_activated', + 'number_of_new_partnerships'), extra=Metric.objects.filter(is_operation=True).count(), can_delete=False) OperationUpdateFormSet = inlineformset_factory( Report, @@ -295,7 +299,8 @@ def clean_number_of_partnerships_activated(self): 'number_of_community_communications', 'number_of_events', 'number_of_resources', - 'number_of_partnerships_activated'), extra=0, + 'number_of_partnerships_activated', + 'number_of_new_partnerships'), extra=0, can_delete=False) class AreaActivatedForm(forms.ModelForm): diff --git a/report/tests_models.py b/report/tests_models.py index 63ffbca..c41bd1d 100644 --- a/report/tests_models.py +++ b/report/tests_models.py @@ -169,7 +169,6 @@ def test_report_creation(self): description="Report", links="https://testlink.com", participants=10, - resources=5, feedbacks=3, learning="Learning"*60, ) @@ -185,7 +184,6 @@ def test_report_end_date_default(self): description="Report", links="https://testlink.com", participants=10, - resources=5, feedbacks=3, learning="Learning", ) @@ -202,7 +200,6 @@ def test_report_string_representation(self): description="Report", links="https://testlink.com", participants=10, - resources=5, feedbacks=3, learning="Learning", ) diff --git a/report/tests_views.py b/report/tests_views.py index df8c36a..cb4a53e 100644 --- a/report/tests_views.py +++ b/report/tests_views.py @@ -15,7 +15,7 @@ from strategy.models import Direction from datetime import datetime from django.contrib.auth.models import Permission -from .forms import NewReportForm, AreaActivatedForm, FundingForm, PartnerForm, TechnologyForm, activities_associated_as_choices, learning_areas_as_choices +from .forms import NewReportForm, AreaActivatedForm, FundingForm, PartnerForm, TechnologyForm, OperationForm, activities_associated_as_choices, learning_areas_as_choices from .views import export_report_instance, export_metrics, export_user_profile, export_area_activated, export_directions_related, export_editors, export_learning_questions_related, export_organizers, export_partners_activated, export_technologies_used, get_or_create_editors, get_or_create_organizers @@ -49,11 +49,11 @@ def test_add_report_view_get(self): self.assertEqual(response.context["directions_related_set"], []) self.assertEqual(response.context["learning_questions_related_set"], []) - def test_add_report_view_post(self): + def test_add_report_view_post_associates_metrics_based_on_values(self): self.client.login(username=self.username, password=self.password) url = reverse("report:add_report") - Project.objects.create(text="Wikimedia Community Fund") + project = Project.objects.create(text="Wikimedia Community Fund", main_funding=True) strategic_axis = StrategicAxis.objects.create(text="Strategic Axis") direction = Direction.objects.create(text="Direction", strategic_axis=strategic_axis) learning_area = LearningArea.objects.create(text="Learning area") @@ -61,9 +61,16 @@ def test_add_report_view_post(self): activity_associated = Activity.objects.create(text="Activity") area_reponsible = TeamArea.objects.create(text="Area") metric = Metric.objects.create(text="Metric", activity=activity_associated, number_of_editors=10) + metric_2 = Metric.objects.create(text="Metric 2", activity=activity_associated, wikipedia_edited=2) + metric_2.project.add(project) + metric_2.save() + metric_3 = Metric.objects.create(text="Metric 3", activity=activity_associated, number_of_editors=23) + metric_3.project.add(project) + metric_3.save() + Editor.objects.create(username="Editor") data = { - "wikipedia_created": 0, "wikipedia_edited": 0, + "wikipedia_created": 0, "wikipedia_edited": 5, "commons_created": 0, "commons_edited": 0, "wikidata_created": 0, "wikidata_edited": 0, "wikiversity_created": 0, "wikiversity_edited": 0, @@ -76,11 +83,12 @@ def test_add_report_view_post(self): "wikispecies_created": 0, "wikispecies_edited": 0, "metawiki_created": 0, "metawiki_edited": 0, "mediawiki_created": 0, "mediawiki_edited": 0, - "participants": 0, "resources": 0, "feedbacks": 0, + "participants": 10, "resources": 0, "feedbacks": 0, "number_of_people_reached_through_social_media": 0, "description": "Report", "initial_date": datetime.now().date().strftime("%Y-%m-%d"), "directions_related": [direction.id], + "editors_string": "Editor", "learning": "Learnings!"*51, "learning_questions_related": [slq.id], "activity_associated": activity_associated.id, @@ -88,38 +96,42 @@ def test_add_report_view_post(self): "links": "Links", "metrics_related": [metric.id] } - form = NewReportForm(data, user=self.user) - self.assertTrue(form.is_valid()) - - response = self.client.post(url, data=data) - report = Report.objects.get(description=data["description"]) - self.assertRedirects(response, reverse("report:detail_report", kwargs={"report_id": report.id}), target_status_code=302) - + operation_data = { + "Operation-TOTAL_FORMS": 1, + "Operation-INITIAL_FORMS": 0, + "Operation-MIN_NUM_FORMS": 0, + "Operation-MAX_NUM_FORMS": 1000, + "Operation-0-metric": metric.id, + "Operation-0-number_of_people_reached_through_social_media": 1, + "Operation-0-number_of_new_followers": 2, + "Operation-0-number_of_mentions": 3, + "Operation-0-number_of_community_communications": 0, + "Operation-0-number_of_events": 4, + "Operation-0-number_of_resources": 5, + "Operation-0-number_of_partnerships_activated": 6, + "Operation-0-number_of_new_partnerships": 0 + } + data.update(operation_data) + self.client.post(url, data=data) report = Report.objects.get(id=1) - self.assertEqual(report.description, "Report") + self.assertIn(metric_2, report.metrics_related.all()) + self.assertIn(metric_3, report.metrics_related.all()) - def test_add_report_view_post_associates_metrics_based_on_values(self): + def test_add_report_view_post(self): self.client.login(username=self.username, password=self.password) url = reverse("report:add_report") - project = Project.objects.create(text="Wikimedia Community Fund") + Project.objects.create(text="Wikimedia Community Fund", main_funding=True) strategic_axis = StrategicAxis.objects.create(text="Strategic Axis") direction = Direction.objects.create(text="Direction", strategic_axis=strategic_axis) learning_area = LearningArea.objects.create(text="Learning area") slq = StrategicLearningQuestion.objects.create(text="SLQ", learning_area=learning_area) activity_associated = Activity.objects.create(text="Activity") area_reponsible = TeamArea.objects.create(text="Area") - metric = Metric.objects.create(text="Metric", activity=activity_associated, number_of_editors=10) - metric_2 = Metric.objects.create(text="Metric 2", activity=activity_associated, wikipedia_edited=2) - metric_2.project.add(project) - metric_2.save() - metric_3 = Metric.objects.create(text="Metric 3", activity=activity_associated, number_of_editors=23) - metric_3.project.add(project) - metric_3.save() - Editor.objects.create(username="Editor") + metric = Metric.objects.create(text="Metric", activity=activity_associated, number_of_editors=10, is_operation=True) data = { - "wikipedia_created": 0, "wikipedia_edited": 5, + "wikipedia_created": 0, "wikipedia_edited": 0, "commons_created": 0, "commons_edited": 0, "wikidata_created": 0, "wikidata_edited": 0, "wikiversity_created": 0, "wikiversity_edited": 0, @@ -132,12 +144,11 @@ def test_add_report_view_post_associates_metrics_based_on_values(self): "wikispecies_created": 0, "wikispecies_edited": 0, "metawiki_created": 0, "metawiki_edited": 0, "mediawiki_created": 0, "mediawiki_edited": 0, - "participants": 10, "resources": 0, "feedbacks": 0, + "participants": 0, "resources": 0, "feedbacks": 0, "number_of_people_reached_through_social_media": 0, "description": "Report", "initial_date": datetime.now().date().strftime("%Y-%m-%d"), "directions_related": [direction.id], - "editors_string": "Editor", "learning": "Learnings!"*51, "learning_questions_related": [slq.id], "activity_associated": activity_associated.id, @@ -145,10 +156,32 @@ def test_add_report_view_post_associates_metrics_based_on_values(self): "links": "Links", "metrics_related": [metric.id] } - self.client.post(url, data=data) + form = NewReportForm(data, user=self.user) + self.assertTrue(form.is_valid()) + + operation_data = { + "Operation-TOTAL_FORMS": 1, + "Operation-INITIAL_FORMS": 0, + "Operation-MIN_NUM_FORMS": 0, + "Operation-MAX_NUM_FORMS": 1000, + "Operation-0-metric":metric.id, + "Operation-0-number_of_people_reached_through_social_media": 1, + "Operation-0-number_of_new_followers": 2, + "Operation-0-number_of_mentions": 3, + "Operation-0-number_of_community_communications": 0, + "Operation-0-number_of_events": 4, + "Operation-0-number_of_resources": 5, + "Operation-0-number_of_partnerships_activated": 6, + "Operation-0-number_of_new_partnerships": 0 + } + + data.update(operation_data) + response = self.client.post(url, data=data) + report = Report.objects.get(description=data["description"]) + self.assertRedirects(response, reverse("report:detail_report", kwargs={"report_id": report.id}), target_status_code=302) + report = Report.objects.get(id=1) - self.assertIn(metric_2, report.metrics_related.all()) - self.assertIn(metric_3, report.metrics_related.all()) + self.assertEqual(report.description, "Report") def test_add_report_view_post_fails_with_invalid_parameters(self): self.client.login(username=self.username, password=self.password) @@ -570,7 +603,7 @@ def test_update_report_get_view(self): self.assertTemplateUsed(response, 'report/update_report.html') def test_update_report_post_with_valid_parameters(self): - Project.objects.create(text="Wikimedia Community Fund") + Project.objects.create(text="Wikimedia Community Fund", main_funding=True) self.client.login(username=self.username, password=self.password) url = reverse("report:update_report", kwargs={"report_id": self.report_1.id}) data = { @@ -590,6 +623,22 @@ def test_update_report_post_with_valid_parameters(self): "learning_questions_related": [self.learning_questions_related.id], "metrics_related": [self.metrics_related.id] } + operation_data = { + "Operation-TOTAL_FORMS": 1, + "Operation-INITIAL_FORMS": 0, + "Operation-MIN_NUM_FORMS": 0, + "Operation-MAX_NUM_FORMS": 1000, + "Operation-0-metric": self.metrics_related.id, + "Operation-0-number_of_people_reached_through_social_media": 1, + "Operation-0-number_of_new_followers": 2, + "Operation-0-number_of_mentions": 3, + "Operation-0-number_of_community_communications": 0, + "Operation-0-number_of_events": 4, + "Operation-0-number_of_resources": 5, + "Operation-0-number_of_partnerships_activated": 6, + "Operation-0-number_of_new_partnerships": 0 + } + data.update(operation_data) response = self.client.post(url, data=data) self.report_1.refresh_from_db() @@ -725,18 +774,17 @@ def test_export_report_instance(self): _('Activity associated'), _('Name of the activity'), _('Area responsible'), _('Area activated'), _('Initial date'), _('End date'), _('Description'), _('Funding associated'), _('Links'), _('Public communication'), _('Number of participants'), - _('Number of resources'), _('Number of feedbacks'), _('Editors'), _('Organizers'), - _('Partnerships activated'), _('Technologies used'), _('# Wikipedia created'), - _('# Wikipedia edited'), _('# Commons created'), _('# Commons edited'), - _('# Wikidata created'), _('# Wikidata edited'), _('# Wikiversity created'), - _('# Wikiversity edited'), _('# Wikibooks created'), _('# Wikibooks edited'), - _('# Wikisource created'), _('# Wikisource edited'), _('# Wikinews created'), - _('# Wikinews edited'), _('# Wikiquote created'), _('# Wikiquote edited'), - _('# Wiktionary created'), _('# Wiktionary edited'), _('# Wikivoyage created'), - _('# Wikivoyage edited'), _('# Wikispecies created'), _('# Wikispecies edited'), - _('# Metawiki created'), _('# Metawiki edited'), _('# MediaWiki created'), - _('# MediaWiki edited'), _('Directions related'), _('Learning'), - _('Learning questions related')] + _('Number of feedbacks'), _('Editors'), _('Organizers'), _('Partnerships activated'), + _('Technologies used'), _('# Wikipedia created'), _('# Wikipedia edited'), + _('# Commons created'), _('# Commons edited'), _('# Wikidata created'), + _('# Wikidata edited'), _('# Wikiversity created'), _('# Wikiversity edited'), + _('# Wikibooks created'), _('# Wikibooks edited'), _('# Wikisource created'), + _('# Wikisource edited'), _('# Wikinews created'), _('# Wikinews edited'), + _('# Wikiquote created'), _('# Wikiquote edited'), _('# Wiktionary created'), + _('# Wiktionary edited'), _('# Wikivoyage created'), _('# Wikivoyage edited'), + _('# Wikispecies created'), _('# Wikispecies edited'), _('# Metawiki created'), + _('# Metawiki edited'), _('# MediaWiki created'), _('# MediaWiki edited'), + _('Directions related'), _('Learning'), _('Learning questions related')] self.report_1.area_activated.add(self.area_activated) self.report_1.funding_associated.add(self.funding_associated) @@ -764,7 +812,6 @@ def test_export_report_instance(self): self.report_1.links, self.report_1.public_communication, self.report_1.participants, - self.report_1.resources, self.report_1.feedbacks, "; ".join(map(str, self.report_1.editors.values_list("id", flat=True))), "; ".join(map(str, self.report_1.organizers.values_list("id", flat=True))), @@ -809,18 +856,17 @@ def test_export_report_instance_without_report_id_returns_all_reports(self): _('Activity associated'), _('Name of the activity'), _('Area responsible'), _('Area activated'), _('Initial date'), _('End date'), _('Description'), _('Funding associated'), _('Links'), _('Public communication'), _('Number of participants'), - _('Number of resources'), _('Number of feedbacks'), _('Editors'), _('Organizers'), - _('Partnerships activated'), _('Technologies used'), _('# Wikipedia created'), - _('# Wikipedia edited'), _('# Commons created'), _('# Commons edited'), - _('# Wikidata created'), _('# Wikidata edited'), _('# Wikiversity created'), - _('# Wikiversity edited'), _('# Wikibooks created'), _('# Wikibooks edited'), - _('# Wikisource created'), _('# Wikisource edited'), _('# Wikinews created'), - _('# Wikinews edited'), _('# Wikiquote created'), _('# Wikiquote edited'), - _('# Wiktionary created'), _('# Wiktionary edited'), _('# Wikivoyage created'), - _('# Wikivoyage edited'), _('# Wikispecies created'), _('# Wikispecies edited'), - _('# Metawiki created'), _('# Metawiki edited'), _('# MediaWiki created'), - _('# MediaWiki edited'), _('Directions related'), _('Learning'), - _('Learning questions related')] + _('Number of feedbacks'), _('Editors'), _('Organizers'), _('Partnerships activated'), + _('Technologies used'), _('# Wikipedia created'), _('# Wikipedia edited'), + _('# Commons created'), _('# Commons edited'), _('# Wikidata created'), + _('# Wikidata edited'), _('# Wikiversity created'), _('# Wikiversity edited'), + _('# Wikibooks created'), _('# Wikibooks edited'), _('# Wikisource created'), + _('# Wikisource edited'), _('# Wikinews created'), _('# Wikinews edited'), + _('# Wikiquote created'), _('# Wikiquote edited'), _('# Wiktionary created'), + _('# Wiktionary edited'), _('# Wikivoyage created'), _('# Wikivoyage edited'), + _('# Wikispecies created'), _('# Wikispecies edited'), _('# Metawiki created'), + _('# Metawiki edited'), _('# MediaWiki created'), _('# MediaWiki edited'), + _('Directions related'), _('Learning'), _('Learning questions related')] area_activated = [""] funding_associated = [""] @@ -848,7 +894,7 @@ def test_export_report_instance_without_report_id_returns_all_reports(self): if self.report_1.learning_questions_related: learning_questions_related = self.report_1.learning_questions_related.values_list("id", flat=True) - expected_row_1 = [self.report_1.id, self.report_1.created_by.id, pd.to_datetime(self.report_1.created_at).tz_localize(None), self.report_1.modified_by.id, pd.to_datetime(self.report_1.modified_at).tz_localize(None), self.report_1.activity_associated.id, self.report_1.activity_other, self.report_1.area_responsible.id, "; ".join(map(str, area_activated)), self.report_1.initial_date, self.report_1.end_date, self.report_1.description, "; ".join(map(str, funding_associated)), self.report_1.links, self.report_1.public_communication, self.report_1.participants, self.report_1.resources, self.report_1.feedbacks, "; ".join(editors), "; ".join(organizers), "; ".join(partners_activated), "; ".join(technologies_used), self.report_1.wikipedia_created, self.report_1.wikipedia_edited, self.report_1.commons_created, self.report_1.commons_edited, self.report_1.wikidata_created, self.report_1.wikidata_edited, self.report_1.wikiversity_created, self.report_1.wikiversity_edited, self.report_1.wikibooks_created, self.report_1.wikibooks_edited, self.report_1.wikisource_created, self.report_1.wikisource_edited, self.report_1.wikinews_created, self.report_1.wikinews_edited, self.report_1.wikiquote_created, self.report_1.wikiquote_edited, self.report_1.wiktionary_created, self.report_1.wiktionary_edited, self.report_1.wikivoyage_created, self.report_1.wikivoyage_edited, self.report_1.wikispecies_created, self.report_1.wikispecies_edited, self.report_1.metawiki_created, self.report_1.metawiki_edited, self.report_1.mediawiki_created, self.report_1.mediawiki_edited, "; ".join(map(str, directions_related)), self.report_1.learning, "; ".join(map(str, learning_questions_related))] + expected_row_1 = [self.report_1.id, self.report_1.created_by.id, pd.to_datetime(self.report_1.created_at).tz_localize(None), self.report_1.modified_by.id, pd.to_datetime(self.report_1.modified_at).tz_localize(None), self.report_1.activity_associated.id, self.report_1.activity_other, self.report_1.area_responsible.id, "; ".join(map(str, area_activated)), self.report_1.initial_date, self.report_1.end_date, self.report_1.description, "; ".join(map(str, funding_associated)), self.report_1.links, self.report_1.public_communication, self.report_1.participants, self.report_1.feedbacks, "; ".join(editors), "; ".join(organizers), "; ".join(partners_activated), "; ".join(technologies_used), self.report_1.wikipedia_created, self.report_1.wikipedia_edited, self.report_1.commons_created, self.report_1.commons_edited, self.report_1.wikidata_created, self.report_1.wikidata_edited, self.report_1.wikiversity_created, self.report_1.wikiversity_edited, self.report_1.wikibooks_created, self.report_1.wikibooks_edited, self.report_1.wikisource_created, self.report_1.wikisource_edited, self.report_1.wikinews_created, self.report_1.wikinews_edited, self.report_1.wikiquote_created, self.report_1.wikiquote_edited, self.report_1.wiktionary_created, self.report_1.wiktionary_edited, self.report_1.wikivoyage_created, self.report_1.wikivoyage_edited, self.report_1.wikispecies_created, self.report_1.wikispecies_edited, self.report_1.metawiki_created, self.report_1.metawiki_edited, self.report_1.mediawiki_created, self.report_1.mediawiki_edited, "; ".join(map(str, directions_related)), self.report_1.learning, "; ".join(map(str, learning_questions_related))] if self.report_2.area_activated: area_activated = self.report_2.area_activated.values_list("id", flat=True) @@ -867,7 +913,7 @@ def test_export_report_instance_without_report_id_returns_all_reports(self): if self.report_2.learning_questions_related: learning_questions_related = self.report_2.learning_questions_related.values_list("id", flat=True) - expected_row_2 = [self.report_2.id, self.report_2.created_by.id, pd.to_datetime(self.report_2.created_at).tz_localize(None), self.report_2.modified_by.id, pd.to_datetime(self.report_2.modified_at).tz_localize(None), self.report_2.activity_associated.id, self.report_2.activity_other, self.report_2.area_responsible.id, "; ".join(map(str, area_activated)), self.report_2.initial_date, self.report_2.end_date, self.report_2.description, "; ".join(map(str, funding_associated)), self.report_2.links, self.report_2.public_communication, self.report_2.participants, self.report_2.resources, self.report_2.feedbacks, "; ".join(editors), "; ".join(organizers), "; ".join(partners_activated), "; ".join(technologies_used), self.report_2.wikipedia_created, self.report_2.wikipedia_edited, self.report_2.commons_created, self.report_2.commons_edited, self.report_2.wikidata_created, self.report_2.wikidata_edited, self.report_2.wikiversity_created, self.report_2.wikiversity_edited, self.report_2.wikibooks_created, self.report_2.wikibooks_edited, self.report_2.wikisource_created, self.report_2.wikisource_edited, self.report_2.wikinews_created, self.report_2.wikinews_edited, self.report_2.wikiquote_created, self.report_2.wikiquote_edited, self.report_2.wiktionary_created, self.report_2.wiktionary_edited, self.report_2.wikivoyage_created, self.report_2.wikivoyage_edited, self.report_2.wikispecies_created, self.report_2.wikispecies_edited, self.report_2.metawiki_created, self.report_2.metawiki_edited, self.report_2.mediawiki_created, self.report_2.mediawiki_edited, "; ".join(map(str, directions_related)), self.report_2.learning, "; ".join(map(str, learning_questions_related))] + expected_row_2 = [self.report_2.id, self.report_2.created_by.id, pd.to_datetime(self.report_2.created_at).tz_localize(None), self.report_2.modified_by.id, pd.to_datetime(self.report_2.modified_at).tz_localize(None), self.report_2.activity_associated.id, self.report_2.activity_other, self.report_2.area_responsible.id, "; ".join(map(str, area_activated)), self.report_2.initial_date, self.report_2.end_date, self.report_2.description, "; ".join(map(str, funding_associated)), self.report_2.links, self.report_2.public_communication, self.report_2.participants, self.report_2.feedbacks, "; ".join(editors), "; ".join(organizers), "; ".join(partners_activated), "; ".join(technologies_used), self.report_2.wikipedia_created, self.report_2.wikipedia_edited, self.report_2.commons_created, self.report_2.commons_edited, self.report_2.wikidata_created, self.report_2.wikidata_edited, self.report_2.wikiversity_created, self.report_2.wikiversity_edited, self.report_2.wikibooks_created, self.report_2.wikibooks_edited, self.report_2.wikisource_created, self.report_2.wikisource_edited, self.report_2.wikinews_created, self.report_2.wikinews_edited, self.report_2.wikiquote_created, self.report_2.wikiquote_edited, self.report_2.wiktionary_created, self.report_2.wiktionary_edited, self.report_2.wikivoyage_created, self.report_2.wikivoyage_edited, self.report_2.wikispecies_created, self.report_2.wikispecies_edited, self.report_2.metawiki_created, self.report_2.metawiki_edited, self.report_2.mediawiki_created, self.report_2.mediawiki_edited, "; ".join(map(str, directions_related)), self.report_2.learning, "; ".join(map(str, learning_questions_related))] expected_rows = [expected_row_1, expected_row_2] expected_df = pd.DataFrame(expected_rows, columns=expected_header) @@ -879,18 +925,17 @@ def test_export_report_instance_without_many_to_many_relations(self): _('Activity associated'), _('Name of the activity'), _('Area responsible'), _('Area activated'), _('Initial date'), _('End date'), _('Description'), _('Funding associated'), _('Links'), _('Public communication'), _('Number of participants'), - _('Number of resources'), _('Number of feedbacks'), _('Editors'), _('Organizers'), - _('Partnerships activated'), _('Technologies used'), _('# Wikipedia created'), - _('# Wikipedia edited'), _('# Commons created'), _('# Commons edited'), - _('# Wikidata created'), _('# Wikidata edited'), _('# Wikiversity created'), - _('# Wikiversity edited'), _('# Wikibooks created'), _('# Wikibooks edited'), - _('# Wikisource created'), _('# Wikisource edited'), _('# Wikinews created'), - _('# Wikinews edited'), _('# Wikiquote created'), _('# Wikiquote edited'), - _('# Wiktionary created'), _('# Wiktionary edited'), _('# Wikivoyage created'), - _('# Wikivoyage edited'), _('# Wikispecies created'), _('# Wikispecies edited'), - _('# Metawiki created'), _('# Metawiki edited'), _('# MediaWiki created'), - _('# MediaWiki edited'), _('Directions related'), _('Learning'), - _('Learning questions related')] + _('Number of feedbacks'), _('Editors'), _('Organizers'), _('Partnerships activated'), + _('Technologies used'), _('# Wikipedia created'), _('# Wikipedia edited'), + _('# Commons created'), _('# Commons edited'), _('# Wikidata created'), + _('# Wikidata edited'), _('# Wikiversity created'), _('# Wikiversity edited'), + _('# Wikibooks created'), _('# Wikibooks edited'), _('# Wikisource created'), + _('# Wikisource edited'), _('# Wikinews created'), _('# Wikinews edited'), + _('# Wikiquote created'), _('# Wikiquote edited'), _('# Wiktionary created'), + _('# Wiktionary edited'), _('# Wikivoyage created'), _('# Wikivoyage edited'), + _('# Wikispecies created'), _('# Wikispecies edited'), _('# Metawiki created'), + _('# Metawiki edited'), _('# MediaWiki created'), _('# MediaWiki edited'), + _('Directions related'), _('Learning'), _('Learning questions related')] expected_row = [self.report_1.id, self.report_1.created_by.id, @@ -908,7 +953,6 @@ def test_export_report_instance_without_many_to_many_relations(self): self.report_1.links, self.report_1.public_communication, self.report_1.participants, - self.report_1.resources, self.report_1.feedbacks, "", "", @@ -951,16 +995,16 @@ def test_export_report_instance_without_many_to_many_relations(self): def test_export_metrics(self): expected_header = [_('ID'), _('Metric'), _('Activity ID'), _('Activity'), _('Activity code'), _('Number of editors'), _('Number of participants'), _('Number of partnerships activated'), - _('Number of resources'), _('Number of feedbacks'), _('Number of events'), - _('Other type? Which?'), _('Observation'), _('# Wikipedia created'), _('# Wikipedia edited'), - _('# Commons created'), _('# Commons edited'), _('# Wikidata created'), - _('# Wikidata edited'), _('# Wikiversity created'), _('# Wikiversity edited'), - _('# Wikibooks created'), _('# Wikibooks edited'), _('# Wikisource created'), - _('# Wikisource edited'), _('# Wikinews created'), _('# Wikinews edited'), - _('# Wikiquote created'), _('# Wikiquote edited'), _('# Wiktionary created'), - _('# Wiktionary edited'), _('# Wikivoyage created'), _('# Wikivoyage edited'), - _('# Wikispecies created'), _('# Wikispecies edited'), _('# Metawiki created'), - _('# Metawiki edited'), _('# MediaWiki created'), _('# MediaWiki edited')] + _('Number of feedbacks'), _('Number of events'), _('Other type? Which?'), _('Observation'), + _('# Wikipedia created'), _('# Wikipedia edited'), _('# Commons created'), + _('# Commons edited'), _('# Wikidata created'), _('# Wikidata edited'), + _('# Wikiversity created'), _('# Wikiversity edited'), _('# Wikibooks created'), + _('# Wikibooks edited'), _('# Wikisource created'), _('# Wikisource edited'), + _('# Wikinews created'), _('# Wikinews edited'), _('# Wikiquote created'), + _('# Wikiquote edited'), _('# Wiktionary created'), _('# Wiktionary edited'), + _('# Wikivoyage created'), _('# Wikivoyage edited'), _('# Wikispecies created'), + _('# Wikispecies edited'), _('# Metawiki created'), _('# Metawiki edited'), + _('# MediaWiki created'), _('# MediaWiki edited')] metric = Metric.objects.create(text="Metric", activity=self.activity_associated) expected_row = [metric.id, @@ -971,7 +1015,6 @@ def test_export_metrics(self): metric.number_of_editors, metric.number_of_participants, metric.number_of_partnerships_activated, - metric.number_of_resources, metric.number_of_feedbacks, metric.number_of_events, metric.other_type, @@ -1010,21 +1053,21 @@ def test_export_metrics(self): def test_export_metrics_without_report_id_returns_metrics_from_all_reports(self): expected_header = [_('ID'), _('Metric'), _('Activity ID'), _('Activity'), _('Activity code'), _('Number of editors'), _('Number of participants'), _('Number of partnerships activated'), - _('Number of resources'), _('Number of feedbacks'), _('Number of events'), - _('Other type? Which?'), _('Observation'), _('# Wikipedia created'), _('# Wikipedia edited'), - _('# Commons created'), _('# Commons edited'), _('# Wikidata created'), - _('# Wikidata edited'), _('# Wikiversity created'), _('# Wikiversity edited'), - _('# Wikibooks created'), _('# Wikibooks edited'), _('# Wikisource created'), - _('# Wikisource edited'), _('# Wikinews created'), _('# Wikinews edited'), - _('# Wikiquote created'), _('# Wikiquote edited'), _('# Wiktionary created'), - _('# Wiktionary edited'), _('# Wikivoyage created'), _('# Wikivoyage edited'), - _('# Wikispecies created'), _('# Wikispecies edited'), _('# Metawiki created'), - _('# Metawiki edited'), _('# MediaWiki created'), _('# MediaWiki edited')] + _('Number of feedbacks'), _('Number of events'), _('Other type? Which?'), _('Observation'), + _('# Wikipedia created'), _('# Wikipedia edited'), _('# Commons created'), + _('# Commons edited'), _('# Wikidata created'), _('# Wikidata edited'), + _('# Wikiversity created'), _('# Wikiversity edited'), _('# Wikibooks created'), + _('# Wikibooks edited'), _('# Wikisource created'), _('# Wikisource edited'), + _('# Wikinews created'), _('# Wikinews edited'), _('# Wikiquote created'), + _('# Wikiquote edited'), _('# Wiktionary created'), _('# Wiktionary edited'), + _('# Wikivoyage created'), _('# Wikivoyage edited'), _('# Wikispecies created'), + _('# Wikispecies edited'), _('# Metawiki created'), _('# Metawiki edited'), + _('# MediaWiki created'), _('# MediaWiki edited')] metric_1 = Metric.objects.create(text="Metric 1", activity=self.activity_associated) metric_2 = Metric.objects.create(text="Metric 2", activity=self.activity_associated) - expected_row_1 = [metric_1.id, metric_1.text, metric_1.activity_id, metric_1.activity.text, metric_1.activity.code, metric_1.number_of_editors, metric_1.number_of_participants, metric_1.number_of_partnerships_activated, metric_1.number_of_resources, metric_1.number_of_feedbacks, metric_1.number_of_events, metric_1.other_type, metric_1.observation, metric_1.wikipedia_created, metric_1.wikipedia_edited, metric_1.commons_created, metric_1.commons_edited, metric_1.wikidata_created, metric_1.wikidata_edited, metric_1.wikiversity_created, metric_1.wikiversity_edited, metric_1.wikibooks_created, metric_1.wikibooks_edited, metric_1.wikisource_created, metric_1.wikisource_edited, metric_1.wikinews_created, metric_1.wikinews_edited, metric_1.wikiquote_created, metric_1.wikiquote_edited, metric_1.wiktionary_created, metric_1.wiktionary_edited, metric_1.wikivoyage_created, metric_1.wikivoyage_edited, metric_1.wikispecies_created, metric_1.wikispecies_edited, metric_1.metawiki_created, metric_1.metawiki_edited, metric_1.mediawiki_created, metric_1.mediawiki_edited] - expected_row_2 = [metric_2.id, metric_2.text, metric_2.activity_id, metric_2.activity.text, metric_2.activity.code, metric_2.number_of_editors, metric_2.number_of_participants, metric_2.number_of_partnerships_activated, metric_2.number_of_resources, metric_2.number_of_feedbacks, metric_2.number_of_events, metric_2.other_type, metric_2.observation, metric_2.wikipedia_created, metric_2.wikipedia_edited, metric_2.commons_created, metric_2.commons_edited, metric_2.wikidata_created, metric_2.wikidata_edited, metric_2.wikiversity_created, metric_2.wikiversity_edited, metric_2.wikibooks_created, metric_2.wikibooks_edited, metric_2.wikisource_created, metric_2.wikisource_edited, metric_2.wikinews_created, metric_2.wikinews_edited, metric_2.wikiquote_created, metric_2.wikiquote_edited, metric_2.wiktionary_created, metric_2.wiktionary_edited, metric_2.wikivoyage_created, metric_2.wikivoyage_edited, metric_2.wikispecies_created, metric_2.wikispecies_edited, metric_2.metawiki_created, metric_2.metawiki_edited, metric_2.mediawiki_created, metric_2.mediawiki_edited] + expected_row_1 = [metric_1.id, metric_1.text, metric_1.activity_id, metric_1.activity.text, metric_1.activity.code, metric_1.number_of_editors, metric_1.number_of_participants, metric_1.number_of_partnerships_activated, metric_1.number_of_feedbacks, metric_1.number_of_events, metric_1.other_type, metric_1.observation, metric_1.wikipedia_created, metric_1.wikipedia_edited, metric_1.commons_created, metric_1.commons_edited, metric_1.wikidata_created, metric_1.wikidata_edited, metric_1.wikiversity_created, metric_1.wikiversity_edited, metric_1.wikibooks_created, metric_1.wikibooks_edited, metric_1.wikisource_created, metric_1.wikisource_edited, metric_1.wikinews_created, metric_1.wikinews_edited, metric_1.wikiquote_created, metric_1.wikiquote_edited, metric_1.wiktionary_created, metric_1.wiktionary_edited, metric_1.wikivoyage_created, metric_1.wikivoyage_edited, metric_1.wikispecies_created, metric_1.wikispecies_edited, metric_1.metawiki_created, metric_1.metawiki_edited, metric_1.mediawiki_created, metric_1.mediawiki_edited] + expected_row_2 = [metric_2.id, metric_2.text, metric_2.activity_id, metric_2.activity.text, metric_2.activity.code, metric_2.number_of_editors, metric_2.number_of_participants, metric_2.number_of_partnerships_activated, metric_2.number_of_feedbacks, metric_2.number_of_events, metric_2.other_type, metric_2.observation, metric_2.wikipedia_created, metric_2.wikipedia_edited, metric_2.commons_created, metric_2.commons_edited, metric_2.wikidata_created, metric_2.wikidata_edited, metric_2.wikiversity_created, metric_2.wikiversity_edited, metric_2.wikibooks_created, metric_2.wikibooks_edited, metric_2.wikisource_created, metric_2.wikisource_edited, metric_2.wikinews_created, metric_2.wikinews_edited, metric_2.wikiquote_created, metric_2.wikiquote_edited, metric_2.wiktionary_created, metric_2.wiktionary_edited, metric_2.wikivoyage_created, metric_2.wikivoyage_edited, metric_2.wikispecies_created, metric_2.wikispecies_edited, metric_2.metawiki_created, metric_2.metawiki_edited, metric_2.mediawiki_created, metric_2.mediawiki_edited] expected_rows = [expected_row_1, expected_row_2] expected_df = pd.DataFrame(expected_rows, columns=expected_header) diff --git a/report/views.py b/report/views.py index 831360f..72d4085 100644 --- a/report/views.py +++ b/report/views.py @@ -214,13 +214,13 @@ def export_report_instance(report_id=None): header = [_('ID'), _('Created by'), _('Created at'), _('Modified by'), _('Modified at'), _('Activity associated'), _('Name of the activity'), _('Area responsible'), _('Area activated'), _('Initial date'), _('End date'), _('Description'), _('Funding associated'), _('Links'), _('Public communication'), - _('Number of participants'), _('Number of resources'), _('Number of feedbacks'), _('Editors'), - _('Organizers'), _('Partnerships activated'), _('Technologies used'), _('# Wikipedia created'), - _('# Wikipedia edited'), _('# Commons created'), _('# Commons edited'), _('# Wikidata created'), - _('# Wikidata edited'), _('# Wikiversity created'), _('# Wikiversity edited'), _('# Wikibooks created'), - _('# Wikibooks edited'), _('# Wikisource created'), _('# Wikisource edited'), _('# Wikinews created'), - _('# Wikinews edited'), _('# Wikiquote created'), _('# Wikiquote edited'), _('# Wiktionary created'), - _('# Wiktionary edited'), _('# Wikivoyage created'), _('# Wikivoyage edited'), _('# Wikispecies created'), + _('Number of participants'), _('Number of feedbacks'), _('Editors'), _('Organizers'), + _('Partnerships activated'), _('Technologies used'), _('# Wikipedia created'), _('# Wikipedia edited'), + _('# Commons created'), _('# Commons edited'), _('# Wikidata created'), _('# Wikidata edited'), + _('# Wikiversity created'), _('# Wikiversity edited'), _('# Wikibooks created'), _('# Wikibooks edited'), + _('# Wikisource created'), _('# Wikisource edited'), _('# Wikinews created'), _('# Wikinews edited'), + _('# Wikiquote created'), _('# Wikiquote edited'), _('# Wiktionary created'), _('# Wiktionary edited'), + _('# Wikivoyage created'), _('# Wikivoyage edited'), _('# Wikispecies created'), _('# Wikispecies edited'), _('# Metawiki created'), _('# Metawiki edited'), _('# MediaWiki created'), _('# MediaWiki edited'), _('Directions related'), _('Learning'), _('Learning questions related')] @@ -258,7 +258,7 @@ def export_report_instance(report_id=None): # Quantitative participants = report.participants - resources = report.resources + # resources = report.resources feedbacks = report.feedbacks if report.editors.exists(): editors = "; ".join(map(str, report.editors.values_list("id", flat=True))) @@ -320,14 +320,13 @@ def export_report_instance(report_id=None): rows.append([id_, created_by, created_at, modified_by, modified_at, activity_associated, activity_other, area_responsible, area_activated, initial_date, end_date, description, funding_associated, links, - public_communication, participants, resources, feedbacks, editors, - organizers, partners_activated, technologies_used, wikipedia_created, wikipedia_edited, - commons_created, commons_edited, wikidata_created, wikidata_edited, wikiversity_created, - wikiversity_edited, wikibooks_created, wikibooks_edited, wikisource_created, wikisource_edited, - wikinews_created, wikinews_edited, wikiquote_created, wikiquote_edited, wiktionary_created, - wiktionary_edited, wikivoyage_created, wikivoyage_edited, wikispecies_created, wikispecies_edited, - metawiki_created, metawiki_edited, mediawiki_created, mediawiki_edited, directions_related, - learning, learning_questions_related]) + public_communication, participants, feedbacks, editors, organizers, partners_activated, + technologies_used, wikipedia_created, wikipedia_edited, commons_created, commons_edited, + wikidata_created, wikidata_edited, wikiversity_created, wikiversity_edited, wikibooks_created, + wikibooks_edited, wikisource_created, wikisource_edited, wikinews_created, wikinews_edited, + wikiquote_created, wikiquote_edited, wiktionary_created, wiktionary_edited, wikivoyage_created, + wikivoyage_edited, wikispecies_created, wikispecies_edited, metawiki_created, metawiki_edited, + mediawiki_created, mediawiki_edited, directions_related, learning, learning_questions_related]) df = pd.DataFrame(rows, columns=header).drop_duplicates() @@ -338,15 +337,15 @@ def export_report_instance(report_id=None): def export_metrics(report_id=None): header = [_('ID'), _('Metric'), _('Activity ID'), _('Activity'), _('Activity code'), _('Number of editors'), - _('Number of participants'), _('Number of partnerships activated'), _('Number of resources'), - _('Number of feedbacks'), _('Number of events'), _('Other type? Which?'), _('Observation'), - _('# Wikipedia created'), _('# Wikipedia edited'), _('# Commons created'), _('# Commons edited'), - _('# Wikidata created'), _('# Wikidata edited'), _('# Wikiversity created'), _('# Wikiversity edited'), - _('# Wikibooks created'), _('# Wikibooks edited'), _('# Wikisource created'), _('# Wikisource edited'), - _('# Wikinews created'), _('# Wikinews edited'), _('# Wikiquote created'), _('# Wikiquote edited'), - _('# Wiktionary created'), _('# Wiktionary edited'), _('# Wikivoyage created'), _('# Wikivoyage edited'), - _('# Wikispecies created'), _('# Wikispecies edited'), _('# Metawiki created'), _('# Metawiki edited'), - _('# MediaWiki created'), _('# MediaWiki edited')] + _('Number of participants'), _('Number of partnerships activated'), _('Number of feedbacks'), + _('Number of events'), _('Other type? Which?'), _('Observation'), _('# Wikipedia created'), + _('# Wikipedia edited'), _('# Commons created'), _('# Commons edited'), _('# Wikidata created'), + _('# Wikidata edited'), _('# Wikiversity created'), _('# Wikiversity edited'), _('# Wikibooks created'), + _('# Wikibooks edited'), _('# Wikisource created'), _('# Wikisource edited'), _('# Wikinews created'), + _('# Wikinews edited'), _('# Wikiquote created'), _('# Wikiquote edited'), _('# Wiktionary created'), + _('# Wiktionary edited'), _('# Wikivoyage created'), _('# Wikivoyage edited'), _('# Wikispecies created'), + _('# Wikispecies edited'), _('# Metawiki created'), _('# Metawiki edited'), _('# MediaWiki created'), + _('# MediaWiki edited')] if report_id: reports = Report.objects.filter(pk=report_id) @@ -359,7 +358,7 @@ def export_metrics(report_id=None): for instance in report.activity_associated.metrics.all(): rows.append([instance.id, instance.text, instance.activity_id, instance.activity.text, instance.activity.code, instance.number_of_editors, instance.number_of_participants, - instance.number_of_partnerships_activated, instance.number_of_resources, instance.number_of_feedbacks, + instance.number_of_partnerships_activated, instance.number_of_feedbacks, instance.number_of_events, instance.other_type, instance.observation, instance.wikipedia_created, instance.wikipedia_edited, instance.commons_created, instance.commons_edited, instance.wikidata_created, instance.wikidata_edited,