Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions src/review/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@
from tinymce.widgets import TinyMCE

from review import models, logic
from core import models as core_models, forms as core_forms
from core.widgets import JanewayFileInput
from core import models as core_models, forms as core_forms, files
from utils import setting_handler
from utils.forms import FakeModelForm, HTMLDateInput, HTMLSwitchInput

Expand Down Expand Up @@ -483,3 +482,25 @@ def __init__(self, *args, **kwargs):
label=f"Email for {review.reviewer.full_name()}",
initial=review.email_content,
)


class EditorReviewFileUpload(forms.Form):
review_file = forms.FileField(
label=_("Review file"),
)

def __init__(self, *args, **kwargs):
self.article = kwargs.pop("article", None)
self.review = kwargs.pop("review", None)
super().__init__(*args, **kwargs)

def save(self, commit=True):
review_file = files.save_file_to_article(
self.cleaned_data.get("review_file"),
self.article,
self.review.reviewer,
)
self.review.review_file = review_file

if commit:
self.review.save()
5 changes: 5 additions & 0 deletions src/review/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@
views.view_review,
name="review_view_review",
),
re_path(
r"^article/(?P<article_id>\d+)/review/(?P<review_id>\d+)/upload-file/$",
views.editor_upload_review_file,
name="review_editor_upload_review_file",
),
re_path(
r"^article/(?P<article_id>\d+)/review/(?P<review_id>\d+)/answer/(?P<answer_id>\d+)/$",
views.edit_review_answer,
Expand Down
56 changes: 56 additions & 0 deletions src/review/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -1452,6 +1452,10 @@ def view_review(request, article_id, review_id):
"review": review,
"visibility_form": visibility_form,
"answer_visibility_form": answer_visibility_form,
"editor_review_file_form": forms.EditorReviewFileUpload(
review=review,
article=article,
)
}

return render(request, template, context)
Expand Down Expand Up @@ -3341,3 +3345,55 @@ def reviewer_shared_review_download(request, article_id, review_id):
)

raise Http404("You do not have permission to download this file.")


@require_POST
@editor_user_required
def editor_upload_review_file(request, article_id, review_id):
"""
Handles upload of a brand new review file by an editor.
"""
article = get_object_or_404(
submission_models.Article,
pk=article_id,
journal=request.journal,
)
review_assignment = get_object_or_404(
models.ReviewAssignment,
pk=review_id,
article=article,
)
form = forms.EditorReviewFileUpload(
request.POST,
request.FILES,
article=article,
review=review_assignment,
)
if form.is_valid():
form.save()
messages.add_message(
request,
messages.SUCCESS,
"Review file uploaded successfully.",
)
else:
if form.errors:
for field, errors in form.errors.items():
field_label = (
form.fields.get(field).label if field in form.fields else field
)
for error in errors:
messages.error(
request,
f"{field_label}: {error}",
)

return redirect(
reverse(
'review_view_review',
kwargs={
'article_id': article.pk,
'review_id': review_assignment.pk,
}
)
)
16 changes: 16 additions & 0 deletions src/templates/admin/elements/review/editor_upload_review_file.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{% load foundation %}

<form
method="POST"
enctype="multipart/form-data"
action="{% url 'review_editor_upload_review_file' article.pk review.pk %}"
>
{% csrf_token %}
{{ editor_review_file_form|foundation }}
<div class="row expanded">
<div class="large-12 columns">
<button name="upload" class="info button">Upload File</button>
</div>
</div>

</form>
53 changes: 25 additions & 28 deletions src/templates/admin/review/view_review.html
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,16 @@ <h2>{% trans 'Summary of Review' %}</h2>
{% if review.decision == 'withdrawn' or review.date_declined %}
<p>{% trans 'No review was undertaken.' %}</p>
{% elif review.is_complete %}
<div class="callout">
<strong>{% trans 'Review File' %}</strong>
{% if review.review_file %}
<div class="row expanded">
<div class="large-12 columns">
<div class="callout">
<strong>{% trans 'Review File' %}</strong>
{% include "admin/elements/review/review_file_table_modal.html" with review=review %}
</div>
</div>
</div>
{% include "admin/elements/review/review_file_table_modal.html" with review=review %}
{% else %}
<p>No review file provided. You may upload one here.</p>
{% include "admin/elements/review/editor_upload_review_file.html" %}

{% endif %}
</div>
{% for answer in review.review_form_answers %}
<div class="{{ answer.element.width }}">
<div class="callout" style="padding-bottom:0px;">
Expand Down Expand Up @@ -127,20 +127,17 @@ <h2>{% trans 'Summary of Review' %}</h2>
{% endfor %}

{% if review.comments_for_editor %}
<div class="large-12 columns">
<div class="callout" style="padding-bottom:0px;">
<div class="title-area">
<h2>{% trans 'Comments for the Editor' %}</h2>
</div>
<div class="content">
<p>{{ review.comments_for_editor|safe|linebreaksbr }}</p>
</div>
</div>
</div>
<div class="callout" style="padding-bottom:0px;">
<div class="title-area">
<h2>{% trans 'Comments for the Editor' %}</h2>
</div>
<div class="content">
<p>{{ review.comments_for_editor|safe|linebreaksbr }}</p>
</div>
</div>
{% endif %}
</div>
{% endif %}

</div>
</div>


Expand Down Expand Up @@ -195,17 +192,17 @@ <h2>{% trans 'Review Availability Controls' %}</h2>
</div>
{% endif %}
</div>
</div>

{% if review.date_declined %}
<div class="title-area">
{% if review.date_declined %}
<div class="title-area">
<h2>{% trans 'Suggested Reviewers' %}</h2>
</div>
<div class="content">
</div>
<div class="content">
{{ review.suggested_reviewers|safe }}
</div>
{% endif %}
</div>
{% endif %}
</div>


{% endblock %}

{% block js %}
Expand Down
Loading