Skip to content

Commit ca9a9cc

Browse files
authored
Improving result view performance. (#4718)
Small changes but seems to yield some performance improvements on local dev setup.
1 parent 449862f commit ca9a9cc

File tree

2 files changed

+15
-25
lines changed

2 files changed

+15
-25
lines changed

hypha/apply/funds/templates/funds/submissions_result.html

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ <h3 id="submissions-heading" class="section-header">{% trans "Submissions" %}</h
4646
{% trans "Applied" %}
4747
</dt>
4848
<dd class="stat-value">
49-
{{ object_list.count }}
49+
{{ submission_count }}
5050
</dd>
5151

5252
</dl>
@@ -104,14 +104,13 @@ <h3 id="reviews-heading" class="section-header">{% trans "Reviews" %}</h3>
104104
<section aria-labelledby="submission-value-total">
105105
<h2 id="submission-value-total" class="section-header">{% trans "Totals" %}</h2>
106106

107-
108107
{% include "funds/includes/table_filter_and_search.html" with search_term=search_term %}
109108

110109
<div class="w-full rounded-t-none border-b rounded-b-box border-x stats border-base-300">
111110
<section class='stat' aria-labelledby="submissions-count-heading">
112111
<span id="submissions-count-heading" class="stat-title">{% trans "Number of submissions" %}</span>
113112
<span class="stat-value">
114-
{{ count_values }}<sup>{% if not count_values == object_list.count %}*{% endif %}</sup>
113+
{{ count_values }}<sup>{% if not count_values == submission_count %}*{% endif %}</sup>
115114
</span>
116115
</section>
117116
<section class='stat' aria-labelledby="average-value-heading">
@@ -129,8 +128,8 @@ <h2 id="submission-value-total" class="section-header">{% trans "Totals" %}</h2>
129128
</section>
130129
</div>
131130

132-
{% if not count_values == object_list.count %}
133-
{% with object_list.count|subtract:count_values as count_diff %}
131+
{% if not count_values == submission_count %}
132+
{% with submission_count|subtract:count_values as count_diff %}
134133
<p class="mt-1 text-xs text-fg-muted" aria-live="polite">
135134
{% blocktrans %}*{{ count_diff }} submission(s) lack requested amount fields or data and are not included.{% endblocktrans %}
136135
</p>

hypha/apply/funds/views/results.py

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,20 @@
2626
class SubmissionStatsMixin:
2727
def get_context_data(self, **kwargs):
2828
submissions = ApplicationSubmission.objects.exclude_draft()
29+
filter = kwargs.get("filter")
30+
user = self.request.user
31+
2932
# Getting values is an expensive operation. If there's no valid filters
3033
# then `count_values` & `total_value` will be encapsulating all submissions
3134
# and should be used rather than recaluclating these values.
32-
if not (filter := kwargs.get("filter")) or not is_filter_empty(filter):
33-
submission_count = kwargs.get("count_values")
35+
if not filter or not is_filter_empty(filter):
3436
submission_sum = kwargs.get("total_value")
3537
else:
36-
submission_count = submissions.count()
3738
submission_value = submissions.current().value()
3839
submission_sum = format_submission_sum_value(submission_value)
3940

4041
submission_undetermined_count = submissions.undetermined().count()
41-
review_my_count = submissions.reviewed_by(self.request.user).count()
42+
review_my_count = submissions.reviewed_by(user).count()
4243

4344
submission_accepted = submissions.current_accepted()
4445
submission_accepted_value = submission_accepted.value()
@@ -47,13 +48,12 @@ def get_context_data(self, **kwargs):
4748

4849
reviews = Review.objects.submitted()
4950
review_count = reviews.count()
50-
review_my_score = reviews.by_user(self.request.user).score()
51+
review_my_score = reviews.by_user(user).score()
5152

5253
return super().get_context_data(
5354
submission_undetermined_count=submission_undetermined_count,
5455
review_my_count=review_my_count,
5556
submission_sum=submission_sum,
56-
submission_count=submission_count,
5757
submission_accepted_count=submission_accepted_count,
5858
submission_accepted_sum=submission_accepted_sum,
5959
review_count=review_count,
@@ -82,24 +82,13 @@ def get_filterset_kwargs(self, filterset_class, **kwargs):
8282
return new_kwargs
8383

8484
def get_queryset(self):
85-
return (
86-
self.filterset_class._meta.model.objects.current()
87-
.exclude_draft()
88-
.defer(
89-
"search_data",
90-
"submit_time",
91-
"workflow_name",
92-
"search_document",
93-
"live_revision_id",
94-
"draft_revision_id",
95-
"summary",
96-
)
97-
)
85+
return self.filterset_class._meta.model.objects.current().exclude_draft()
9886

9987
def get_context_data(self, **kwargs):
10088
search_term = self.request.GET.get("query")
10189

102-
if self.object_list:
90+
if self.object_list.exists():
91+
submission_count = self.object_list.count()
10392
submission_values = self.object_list.value()
10493
count_values = submission_values.get("value__count")
10594
total_value = format_submission_sum_value(submission_values)
@@ -111,12 +100,14 @@ def get_context_data(self, **kwargs):
111100
count_values = 0
112101
total_value = 0
113102
average_value = 0
103+
submission_count = 0
114104

115105
return super().get_context_data(
116106
search_term=search_term,
117107
filter_action=self.filter_action,
118108
count_values=count_values,
119109
total_value=total_value,
120110
average_value=average_value,
111+
submission_count=submission_count,
121112
**kwargs,
122113
)

0 commit comments

Comments
 (0)