def get_context_data(self, **kwargs):
count_values = 0
total_value = 0
submission_count = 0
anonymized_excluded_count = 0
qs_list = [self.object_list]
# If a filter is active that has no equivalent on AnonymizedSubmission (e.g. "lead"),
# anonymized submissions cannot be filtered consistently so exclude them.
if set(self.request.GET) & _ANONYMIZE_ONLY_FIELDS:
anonymized_excluded_count = AnonymizedSubmission.objects.count()
else:
anonymized_qs = AnonymizedSubmissionFilter(
self.request.GET, queryset=AnonymizedSubmission.objects.all()
).qs
qs_list.append(anonymized_qs)
for qs in qs_list:
submission_values = qs.value()
vc = submission_values.get("value__count") or 0
count_values += vc
if total := submission_values.get("value__sum"):
total_value += total
submission_count += qs.count()
average_value = round(total_value / count_values) if count_values else 0
return super().get_context_data(
filter_action=self.filter_action,
count_values=count_values,
total_value=total_value,
average_value=average_value,
submission_count=submission_count,
anonymized_excluded_count=anonymized_excluded_count,
**kwargs,
)