def get_context_data(self, **kwargs): """Obtain context data.""" context = super(SprayOperatorSummaryView, self).get_context_data(**kwargs) district = context["object"] team_leader = self.kwargs.get("team_leader") team_leader_assistant = get_object_or_404(TeamLeaderAssistant, pk=team_leader) queryset = SprayOperator.objects.raw(SOP_PERFORMANCE_SQL, [team_leader_assistant.id]) serializer = SprayOperatorPerformanceReportSerializer(queryset, many=True) totals = { "other": sum((i["other"] for i in serializer.data)), "refused": sum((i["refused"] for i in serializer.data)), "sprayed": sum((i["sprayed"] for i in serializer.data)), "sprayable": sum((i["sprayable"] for i in serializer.data)), "not_sprayable": 0, "not_sprayed_total": sum((i["not_sprayed_total"] for i in serializer.data)), "data_quality_check": all((i["data_quality_check"] for i in serializer.data)), "found_difference": sum((i["found_difference"] for i in serializer.data)), "sprayed_difference": sum((i["sprayed_difference"] for i in serializer.data)), "no_of_days_worked": sum((i["no_of_days_worked"] for i in serializer.data)), "avg_structures_per_so": sum((i["avg_structures_per_so"] for i in serializer.data)), "avg_start_time": average_time([i["avg_start_time"] for i in serializer.data]), "avg_end_time": average_time([i["avg_end_time"] for i in serializer.data]), } context.update({ "data": serializer.data, "totals": totals, "team_leader": team_leader, "team_leader_name": get_object_or_404(TeamLeaderAssistant, pk=team_leader).name, "district": district, "district_name": district.name, }) context.update(DEFINITIONS["sop"]) return context
def get_context_data(self, **kwargs): """Obtain context data.""" context = super(DistrictPerfomanceView, self).get_context_data(**kwargs) districts = Location.objects.filter(parent=None).order_by("name") queryset = Location.objects.raw(DISTRICT_PERFORMANCE_SQL) serializer = DistrictPerformanceReportSerializer(queryset, many=True) num_of_districts = round(districts.count()) num_of_succes_rates = round(len([i for i in serializer.data])) totals = { "other": sum((i["other"] for i in serializer.data)), "refused": sum((i["refused"] for i in serializer.data)), "sprayed": sum((i["sprayed"] for i in serializer.data)), "sprayable": sum((i["sprayable"] for i in serializer.data)), "not_sprayable": 0, "not_eligible": sum((i["not_eligible"] for i in serializer.data)), "not_sprayed_total": sum((i["not_sprayed_total"] for i in serializer.data)), "data_quality_check": all((i["data_quality_check"] for i in serializer.data)), "found_difference": sum((i["found_difference"] for i in serializer.data)), "sprayed_difference": sum((i["sprayed_difference"] for i in serializer.data)), "pre_season_target": sum((i["location"].pre_season_target for i in serializer.data)), "houses": sum((i["location"].structures for i in serializer.data)), "no_of_days_worked": sum((i["no_of_days_worked"] for i in serializer.data)), } totals["avg_structures_per_so"] = ((sum( (i["avg_structures_per_so"] for i in serializer.data)) / num_of_districts) if num_of_districts else 0) totals["avg_start_time"] = average_time([ i["avg_start_time"] for i in serializer.data if i["avg_start_time"] != "" ]) totals["avg_end_time"] = average_time([ i["avg_end_time"] for i in serializer.data if i["avg_start_time"] != "" ]) totals["success_rate"] = ((sum( (i["success_rate"] for i in serializer.data)) / num_of_succes_rates) if num_of_succes_rates else 0) context.update({"data": serializer.data, "totals": totals}) context.update(DEFINITIONS["performance:district"]) return context
def get_context_data(self, **kwargs): """Obtain context data.""" context = super(TeamLeadersPerformanceView, self).get_context_data(**kwargs) district = context["object"] queryset = TeamLeaderAssistant.objects.raw(TLA_PERFORMANCE_SQL, [district.id]) serializer = TLAPerformanceReportSerializer(queryset, many=True) totals = { "other": sum((i["other"] for i in serializer.data)), "refused": sum((i["refused"] for i in serializer.data)), "sprayed": sum((i["sprayed"] for i in serializer.data)), "sprayable": sum((i["sprayable"] for i in serializer.data)), "not_sprayable": 0, "not_eligible": sum((i["not_eligible"] for i in serializer.data)), "not_sprayed_total": sum((i["not_sprayed_total"] for i in serializer.data)), "data_quality_check": all((i["data_quality_check"] for i in serializer.data)), "found_difference": sum((i["found_difference"] for i in serializer.data)), "sprayed_difference": sum((i["sprayed_difference"] for i in serializer.data)), "no_of_days_worked": sum((i["no_of_days_worked"] for i in serializer.data)), "avg_structures_per_so": (sum((i["avg_structures_per_so"] for i in serializer.data)) / round( TeamLeaderAssistant.objects.filter(location=district).count() or 1)), "avg_start_time": average_time([ i["avg_start_time"] for i in serializer.data if i["avg_start_time"] != "" ]), "avg_end_time": average_time([ i["avg_end_time"] for i in serializer.data if i["avg_end_time"] != "" ]), } context.update({ "data": serializer.data, "totals": totals, "district": district, "district_name": district.name, }) context.update(DEFINITIONS["tla"]) return context
def get_context_data(self, **kwargs): """Obtain context data.""" context = super(SprayOperatorDailyView, self).get_context_data(**kwargs) district = context["object"] team_leader = self.kwargs.get("team_leader") spray_operator_id = self.kwargs.get("spray_operator") spray_operator = get_object_or_404(SprayOperator, pk=spray_operator_id) queryset = PerformanceReport.objects.filter( spray_operator=spray_operator).order_by("spray_date") serializer = PerformanceReportSerializer(queryset, many=True) totals = { "other": sum((i["other"] for i in serializer.data)), "refused": sum((i["refused"] for i in serializer.data)), "sprayed": sum((i["sprayed"] for i in serializer.data)), "sprayable": sum((i["sprayable"] for i in serializer.data)), "not_sprayable": 0, "not_sprayed_total": sum((i["not_sprayed_total"] for i in serializer.data)), "data_quality_check": all((i["data_quality_check"] for i in serializer.data)), "found_difference": sum((i["found_difference"] for i in serializer.data)), "sprayed_difference": sum((i["sprayed_difference"] for i in serializer.data)), "avg_start_time": average_time([i["avg_start_time"] for i in serializer.data]), "avg_end_time": average_time([i["avg_end_time"] for i in serializer.data]), } context.update({ "data": serializer.data, "totals": totals, "spray_operator": spray_operator.code, "spray_operator_name": spray_operator.name, "district": district, "district_name": district.name, "team_leader": team_leader, "team_leader_name": spray_operator.team_leader_assistant.name, }) context.update(DEFINITIONS["sop"]) return context
def get_context_data(self, **kwargs): """Obtain context data.""" context = super().get_context_data(**kwargs) rhc = context["object"] spray_operator_id = self.kwargs.get("spray_operator") spray_operator = get_object_or_404(SprayOperator, pk=spray_operator_id) queryset = PerformanceReport.objects.filter( spray_operator=spray_operator).order_by("spray_date") serializer = PerformanceReportSerializer(queryset, many=True) totals = { "other": sum((i["other"] for i in serializer.data)), "refused": sum((i["refused"] for i in serializer.data)), "sprayed": sum((i["sprayed"] for i in serializer.data)), "sprayable": sum((i["sprayable"] for i in serializer.data)), "not_sprayable": 0, "not_eligible": sum((i["not_eligible"] for i in serializer.data)), "not_sprayed_total": sum((i["not_sprayed_total"] for i in serializer.data)), "data_quality_check": all((i["data_quality_check"] for i in serializer.data)), "found_difference": sum((i["found_difference"] for i in serializer.data)), "sprayed_difference": sum((i["sprayed_difference"] for i in serializer.data)), "avg_start_time": average_time([i["avg_start_time"] for i in serializer.data]), "avg_end_time": average_time([i["avg_end_time"] for i in serializer.data]), "data": {}, } custom_aggregations = getattr(settings, "EXTRA_PERFORMANCE_AGGREGATIONS", {}) for field in custom_aggregations: totals["data"][field] = sum(i["data"][field] for i in serializer.data) context.update({ "data": serializer.data, "totals": totals, "spray_operator": spray_operator.code, "spray_operator_name": spray_operator.name, "rhc": rhc, "rhc_name": rhc.name, }) context.update(DEFINITIONS["mda-sop-daily"]) return context
def get_avg_end_time(self, obj): # pylint: disable=no-self-use """Return end_time as time object.""" return average_time([ report.end_time for report in PerformanceReport.objects.filter( spray_operator__rhc=obj).only("end_time") if report.end_time is not None ])
def get_avg_end_time(self, obj): # pylint: disable=no-self-use """Return end_time as time object.""" return average_time([ report.end_time for report in obj.performancereport_set.all().only("end_time") if report.end_time is not None ])
def get_avg_start_time(self, obj): # pylint: disable=no-self-use """ Returns start_time as time object. """ return average_time([ report.start_time for report in obj.performancereport_set.all().only("start_time") ])
def get_context_data(self, **kwargs): """Obtain context data.""" context = super().get_context_data(**kwargs) rhc = context["object"] custom_aggregations = getattr(settings, "EXTRA_PERFORMANCE_AGGREGATIONS", {}) extra_annotations = {} for field in custom_aggregations: extra_annotations["data_%s" % field] = Coalesce( Sum( Cast( KeyTextTransform(field, "performancereport__data"), IntegerField(), )), Value(0), ) queryset = (SprayOperator.objects.filter(rhc_id=rhc.pk).annotate( found=Coalesce(Sum("performancereport__found"), Value(0)), refused=Coalesce(Sum("performancereport__refused"), Value(0)), other=Coalesce(Sum("performancereport__other"), Value(0)), sprayed=Coalesce(Sum("performancereport__sprayed"), Value(0)), not_eligible=Coalesce(Sum("performancereport__not_eligible"), Value(0)), no_of_days_worked=Coalesce(Count("performancereport__id"), Value(0)), **extra_annotations).order_by("name")) context["spray_operator_qs"] = queryset serializer = SprayOperatorPerformanceReportSerializer(queryset, many=True) totals = { "other": sum((i["other"] for i in serializer.data)), "refused": sum((i["refused"] for i in serializer.data)), "sprayed": sum((i["sprayed"] for i in serializer.data)), "sprayable": sum((i["sprayable"] for i in serializer.data)), "not_sprayable": 0, "not_sprayed_total": sum((i["not_sprayed_total"] for i in serializer.data)), "not_eligible": sum((i["not_eligible"] for i in serializer.data)), "data_quality_check": all((i["data_quality_check"] for i in serializer.data)), "found_difference": sum((i["found_difference"] for i in serializer.data)), "sprayed_difference": sum((i["sprayed_difference"] for i in serializer.data)), "no_of_days_worked": sum((i["no_of_days_worked"] for i in serializer.data)), "avg_structures_per_so": sum((i["avg_structures_per_so"] for i in serializer.data)), "avg_start_time": average_time([i["avg_start_time"] for i in serializer.data]), "avg_end_time": average_time([i["avg_end_time"] for i in serializer.data]), "custom": {}, } for field in custom_aggregations: totals["custom"][field] = sum(i["custom"][field] for i in serializer.data) context.update({ "data": serializer.data, "totals": totals, "rhc": rhc, "rhc_name": rhc.name, }) context.update(DEFINITIONS["mda-sop"]) return context
def get_context_data(self, **kwargs): """Obtain context data.""" context = super().get_context_data(**kwargs) rhcs = Location.objects.filter(parent=self.object, target=True).order_by("name") custom_aggregations = getattr(settings, "EXTRA_PERFORMANCE_AGGREGATIONS", {}) extra_annotations = {} for field in custom_aggregations: extra_annotations["data_%s" % field] = Coalesce( Sum( Cast( KeyTextTransform(field, "sop_rhc__performancereport__data"), IntegerField(), )), Value(0), ) queryset = Location.performance_queryset("sop_rhc", self.object, **extra_annotations) context["rhc_queryset"] = queryset serializer = RHCPerformanceReportSerializer(queryset, many=True) num_of_rhcs = round(rhcs.count()) num_of_succes_rates = round(len([i for i in serializer.data])) totals = { "other": sum((i["other"] for i in serializer.data)), "refused": sum((i["refused"] for i in serializer.data)), "sprayed": sum((i["sprayed"] for i in serializer.data)), "sprayable": sum((i["sprayable"] for i in serializer.data)), "not_sprayable": 0, "not_eligible": sum((i["not_eligible"] for i in serializer.data)), "not_sprayed_total": sum((i["not_sprayed_total"] for i in serializer.data)), "data_quality_check": all((i["data_quality_check"] for i in serializer.data)), "found_difference": sum((i["found_difference"] for i in serializer.data)), "sprayed_difference": sum((i["sprayed_difference"] for i in serializer.data)), "houses": sum((i["location"].structures_on_ground for i in serializer.data)), "no_of_days_worked": sum((i["no_of_days_worked"] for i in serializer.data)), "days_worked": sum((i["days_worked"] for i in serializer.data)), "custom": {}, } totals["avg_structures_per_so"] = ((sum( (i["avg_structures_per_so"] for i in serializer.data)) / num_of_rhcs) if num_of_rhcs else 0) totals["avg_start_time"] = average_time([ i["avg_start_time"] for i in serializer.data if i["avg_start_time"] != "" ]) totals["avg_end_time"] = average_time([ i["avg_end_time"] for i in serializer.data if i["avg_start_time"] != "" ]) totals["success_rate"] = ((sum( (i["success_rate"] for i in serializer.data)) / num_of_succes_rates) if num_of_succes_rates else 0) for field in custom_aggregations: totals["custom"][field] = sum(i["custom"][field] for i in serializer.data) context.update({"data": serializer.data, "totals": totals}) context.update(DEFINITIONS["performance:district"]) return context