From 3c269b1db1fdd5dc1305901e56d5602dceac6b34 Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Sat, 11 Mar 2017 00:06:09 +0100 Subject: [PATCH] Reduce submission detailview db load by 1/3 --- submissions/models.py | 2 +- submissions/templatetags/submissions_extras.py | 2 +- submissions/views.py | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/submissions/models.py b/submissions/models.py index 8ca56af4a..7aea9adab 100644 --- a/submissions/models.py +++ b/submissions/models.py @@ -634,7 +634,7 @@ class Report(models.Model): # -3: rejected (not useful) # -4: rejected (not academic in style) status = models.SmallIntegerField(default=0) - submission = models.ForeignKey(Submission, on_delete=models.CASCADE) + submission = models.ForeignKey(Submission, related_name='reports', on_delete=models.CASCADE) vetted_by = models.ForeignKey(Contributor, related_name="report_vetted_by", blank=True, null=True, on_delete=models.CASCADE) # `invited' filled from RefereeInvitation objects at moment of report submission diff --git a/submissions/templatetags/submissions_extras.py b/submissions/templatetags/submissions_extras.py index 7460a3c30..b2b785c03 100644 --- a/submissions/templatetags/submissions_extras.py +++ b/submissions/templatetags/submissions_extras.py @@ -73,7 +73,7 @@ def required_actions(submission): todo.append('The refereeing deadline has passed. Please either extend it, ' 'or formulate your Editorial Recommendation if at least ' 'one Report has been received.') - reports = submission.report_set.all() + reports = submission.reports.all() for report in reports: if report.status == 0: todo.append('The Report from %s has been delivered but is not yet vetted. ' diff --git a/submissions/views.py b/submissions/views.py index 2681da5f9..f80cfbf10 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -271,7 +271,10 @@ def submission_detail_wo_vn_nr(request, arxiv_identifier_wo_vn_nr): def submission_detail(request, arxiv_identifier_w_vn_nr): - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = Submission.objects.select_related( + 'editor_in_charge', 'publication__in_issue__in_volume__in_journal' + ).prefetch_related('authors').get( + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) try: is_author = request.user.contributor in submission.authors.all() except AttributeError: @@ -288,7 +291,7 @@ def submission_detail(request, arxiv_identifier_w_vn_nr): form = CommentForm() - reports = submission.report_set.all() + reports = submission.reports.prefetch_related('reports') try: author_replies = Comment.objects.filter(submission=submission, is_author_reply=True, -- GitLab