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