Skip to content

Commit

Permalink
Standardize file handling in submission #4326
Browse files Browse the repository at this point in the history
  • Loading branch information
joemull committed Jul 15, 2024
1 parent 02b52ee commit 5b446d6
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 72 deletions.
1 change: 0 additions & 1 deletion src/submission/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,6 @@ class Meta:
def __init__(self, *args, **kwargs):
super(FileDetails, self).__init__(*args, **kwargs)
self.fields['label'].required = True
self.fields['label'].inital = 'Manuscript'


class EditFrozenAuthor(forms.ModelForm):
Expand Down
55 changes: 33 additions & 22 deletions src/submission/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,16 @@ def submit_files(request, article_id):
pk=article_id,
journal=request.journal,
)
form = forms.FileDetails()
ms_form = forms.FileDetails(
initial={
"label": article.journal.submissionconfiguration.submission_file_text,
},
)
data_form = forms.FileDetails(
initial={
"label": "Figure/Data File",
},
)
configuration = request.journal.submissionconfiguration

if article.current_step < 3 and not request.user.is_staff:
Expand All @@ -550,18 +559,18 @@ def submit_files(request, article_id):
return redirect(reverse('submit_files', kwargs={'article_id': article_id}))

if 'manuscript' in request.POST:
form = forms.FileDetails(request.POST)
ms_form = forms.FileDetails(request.POST)
uploaded_file = request.FILES.get('file')
if logic.check_file(uploaded_file, request, form):
if form.is_valid():
if logic.check_file(uploaded_file, request, ms_form):
if ms_form.is_valid():
new_file = files.save_file_to_article(
uploaded_file,
article,
request.user,
)
article.manuscript_files.add(new_file)
new_file.label = form.cleaned_data['label']
new_file.description = form.cleaned_data['description']
new_file.label = ms_form.cleaned_data['label']
new_file.description = ms_form.cleaned_data['description']
new_file.save()
return redirect(
reverse('submit_files', kwargs={'article_id': article_id}),
Expand All @@ -572,21 +581,22 @@ def submit_files(request, article_id):
modal = 'manuscript'

if 'data' in request.POST:
for uploaded_file in request.FILES.getlist('file'):
form = forms.FileDetails(request.POST)
if form.is_valid():
new_file = files.save_file_to_article(
uploaded_file,
article,
request.user,
)
article.data_figure_files.add(new_file)
new_file.label = form.cleaned_data['label']
new_file.description = form.cleaned_data['description']
new_file.save()
return redirect(reverse('submit_files', kwargs={'article_id': article_id}))
else:
modal = 'data'
data_form = forms.FileDetails(request.POST)
uploaded_file = request.FILES.get('file')
if data_form.is_valid() and uploaded_file:
new_file = files.save_file_to_article(
uploaded_file,
article,
request.user,
)
article.data_figure_files.add(new_file)
new_file.label = data_form.cleaned_data['label']
new_file.description = data_form.cleaned_data['description']
new_file.save()
return redirect(reverse('submit_files', kwargs={'article_id': article_id}))
else:
data_form.add_error(None, 'You must select a file.')
modal = 'data'

if 'next_step' in request.POST:
if article.manuscript_files.all().count() >= 1:
Expand All @@ -606,7 +616,8 @@ def submit_files(request, article_id):
context = {
'article': article,
'error': error,
'form': form,
'ms_form': ms_form,
'data_form': data_form,
'modal': modal,
}

Expand Down
80 changes: 33 additions & 47 deletions src/templates/admin/elements/submit/file.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,56 +4,42 @@
<div class="small reveal" id="{{ modaltype }}" data-reveal>
<div class="card">
<div class="card-divider">
<h5><i class="fa fa-upload">&nbsp;</i>{% trans "Add New File" %}</h5>
<h5>
<span class="fa fa-upload"></span>
{% trans "Add New File" %}
</h5>
</div>
<div class="card-section">
<small>{% include "elements/forms/errors.html" with form=form %}</small>
{% if modaltype == 'manuscript' %}
{{ journal_settings.general.manuscript_file_submission_instructions|safe }}
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="row">
<div class="large-12 columns">
<input name="file" type="file" class="filestyle" data-placeholder="No file"
data-buttonname="btn-primary">
</div>
<div>
{{ instructions }}
</div>
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="row">
<div class="large-12 columns">
<input
name="file"
type="file"
class="filestyle"
data-placeholder="No file"
data-buttonname="btn-primary">
</div>
<div class="row expanded">
<div class="large-12 columns">
<label>
{% trans 'Label' %} <span class="red">*</span>
</label>
<input type="text" name="label" id="id_label" required="" maxlength="200" value="{{ request.journal.submissionconfiguration.submission_file_text }}">
</div>
</div>
<div class="row expanded">
<div class="large-12 columns">
<label>{% trans 'Description' %}</label>
<textarea name="description" id="id_description" rows="10" cols="40"></textarea>
</div>
</div>
<button type="submit" name="manuscript" class="success button">{% trans 'Add File' %}</button>
<button class="close-button" data-close="" aria-label="Close reveal" type="button">
<span aria-hidden="true">×</span>
</button>
</form>
{% else %}
{{ journal_settings.general.data_figure_file_submission_instructions|safe }}
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="row">
<div class="large-12 columns">
<input name="file" type="file" class="filestyle" data-placeholder="No file"
data-buttonName="btn-primary">
</div>
</div>
{{ form|foundation }}
<button type="submit" name="{{ modaltype }}" class="success button">{% trans "Add File" %}</button>
<button class="close-button" data-close aria-label="Close reveal" type="button">
<span aria-hidden="true">&times;</span>
</button>
</form>
{% endif %}
</div>
{{ form|foundation }}
<button
type="submit"
name="{{ modaltype }}"
class="success button">
{% trans 'Add File' %}
</button>
<button
class="close-button"
data-close=""
aria-label="Close reveal"
type="button">
<span aria-hidden="true">×</span>
</button>
</form>
</div>
</div>
</div>
4 changes: 2 additions & 2 deletions src/templates/admin/submission/submit_files.html
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@ <h2>{% trans 'Figures and Data Files' %}</h2>
</div>
</article>

{% include "admin/elements/submit/file.html" with modaltype="manuscript" %}
{% include "admin/elements/submit/file.html" with modaltype="data" %}
{% include "admin/elements/submit/file.html" with modaltype="manuscript" form=ms_form instructions=journal_settings.general.manuscript_file_submission_instructions|safe %}
{% include "admin/elements/submit/file.html" with modaltype="data" form=data_form instructions=journal_settings.general.data_figure_file_submission_instructions|safe %}

{% endblock body %}

Expand Down

0 comments on commit 5b446d6

Please sign in to comment.