From 027472028ea9e913347fd963cdf3e4cea4db402d Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Mon, 17 Dec 2018 11:53:06 +0100
Subject: [PATCH] Performance changes

---
 submissions/forms.py | 15 +++++++++------
 submissions/views.py | 18 ------------------
 2 files changed, 9 insertions(+), 24 deletions(-)

diff --git a/submissions/forms.py b/submissions/forms.py
index 04f5c5253..c323f46ed 100644
--- a/submissions/forms.py
+++ b/submissions/forms.py
@@ -1113,18 +1113,21 @@ class VetReportForm(forms.Form):
     def process_vetting(self, current_contributor):
         """Set the right report status and update submission fields if needed."""
         report = self.cleaned_data['report']
-        report.vetted_by = current_contributor
         if self.cleaned_data['action_option'] == REPORT_ACTION_ACCEPT:
             # Accept the report as is
-            report.status = STATUS_VETTED
-            report.submission.latest_activity = timezone.now()
-            report.submission.save()
+            Report.objects.filter(id=report.id).update(
+                status=STATUS_VETTED,
+                vetted_by=current_contributor,
+            )
+            report.submission.touch()
         elif self.cleaned_data['action_option'] == REPORT_ACTION_REFUSE:
             # The report is rejected
-            report.status = self.cleaned_data['refusal_reason']
+            Report.objects.filter(id=report.id).update(
+                status=self.cleaned_data['refusal_reason'],
+            )
         else:
             raise exceptions.InvalidReportVettingValue(self.cleaned_data['action_option'])
-        report.save()
+        report.refresh_from_db()
         return report
 
 
diff --git a/submissions/views.py b/submissions/views.py
index 530a0d2dd..9a2475b3d 100644
--- a/submissions/views.py
+++ b/submissions/views.py
@@ -1466,18 +1466,13 @@ def submit_report(request, identifier_w_vn_nr):
     has the reporting deadline not been reached yet and does there exist any invitation
     for the current user on this submission.
     """
-    time_1 = time.time()
     submission = get_object_or_404(Submission, preprint__identifier_w_vn_nr=identifier_w_vn_nr)
-    time_2 = time.time()
-    print('1.', time_2 - time_1)
 
     # Check whether the user can submit a report:
     is_author = check_verified_author(submission, request.user)
     is_author_unchecked = check_unverified_author(submission, request.user)
     invitation = submission.referee_invitations.filter(
         fulfilled=False, cancelled=False, referee__user=request.user).first()
-    time_3 = time.time()
-    print('2.', time_3 - time_2)
 
     errormessage = None
     if is_author:
@@ -1511,8 +1506,6 @@ def submit_report(request, identifier_w_vn_nr):
     form = ReportForm(
         request.POST or None, request.FILES or None, instance=report_in_draft,
         submission=submission)
-    time_4 = time.time()
-    print('3.', time_4 - time_3)
 
     # Check if data sent is valid
     if form.is_valid():
@@ -1525,9 +1518,6 @@ def submit_report(request, identifier_w_vn_nr):
             return redirect(reverse('submissions:submit_report', kwargs={
                 'identifier_w_vn_nr': identifier_w_vn_nr}))
 
-        time_5 = time.time()
-        print('4.', time_5 - time_4)
-
         # Send mails if report is submitted
         mail_sender = DirectMailUtil(
             mail_code='referees/inform_referee_report_received',
@@ -1539,18 +1529,12 @@ def submit_report(request, identifier_w_vn_nr):
             instance=newreport,
             delayed_processing=True)
         mail_sender.send()
-        time_6 = time.time()
-        print('5.', time_6 - time_5)
 
         # Add SubmissionEvents for the EIC only, as it can also be rejected still
         submission.add_event_for_eic('%s has submitted a new Report.'
                                      % request.user.last_name)
 
         messages.success(request, 'Thank you for your Report')
-        time_7 = time.time()
-        print('6.', time_7 - time_6)
-        print('T.', time_7 - time_1)
-        # raise
         return redirect(submission.get_absolute_url())
     elif request.POST:
         messages.error(request, 'Report not submitted, please read the errors below.')
@@ -1589,7 +1573,6 @@ def vet_submitted_report(request, report_id):
         submissions = Submission.objects.filter_for_eic(request.user)
         report = get_object_or_404(Report.objects.filter(
             submission__in=submissions).awaiting_vetting(), id=report_id)
-
     form = VetReportForm(request.POST or None, initial={'report': report})
     if form.is_valid():
         report = form.process_vetting(request.user.contributor)
@@ -1602,7 +1585,6 @@ def vet_submitted_report(request, report_id):
         # Add SubmissionEvent for the EIC
         report.submission.add_event_for_eic('The Report by %s is vetted.'
                                             % report.author.user.last_name)
-
         if report.status == STATUS_VETTED:
             SubmissionUtils.send_author_report_received_email()
 
-- 
GitLab