Skip to content
Snippets Groups Projects
Unverified Commit 7374b8d4 authored by Fredrik Jonsson's avatar Fredrik Jonsson Committed by GitHub
Browse files

Merge pull request #2951 from HyphaApp/fix/file-type-validation

Add js validation for acceptable file types for all uploads
parents f8ccac5c cdafc0b6
No related branches found
No related tags found
No related merge requests found
...@@ -14,20 +14,23 @@ def generate_submission_file_path(submission_id, field_id, file_name): ...@@ -14,20 +14,23 @@ def generate_submission_file_path(submission_id, field_id, file_name):
class SubmissionStreamFieldFile(StreamFieldFile): class SubmissionStreamFieldFile(StreamFieldFile):
def generate_filename(self):
def get_submission_id(self):
from hypha.apply.funds.models.submissions import ApplicationRevision from hypha.apply.funds.models.submissions import ApplicationRevision
submission_id = self.instance.pk submission_id = self.instance.pk
if isinstance(self.instance, ApplicationRevision): if isinstance(self.instance, ApplicationRevision):
submission_id = self.instance.submission.pk submission_id = self.instance.submission.pk
return submission_id
return generate_submission_file_path(submission_id, self.field.id, self.name) def generate_filename(self):
return generate_submission_file_path(self.get_submission_id(), self.field.id, self.name)
@property @property
def url(self): def url(self):
return reverse( return reverse(
'apply:submissions:serve_private_media', kwargs={ 'apply:submissions:serve_private_media', kwargs={
'pk': self.instance.pk, 'pk': self.get_submission_id(),
'field_id': self.field.id, 'field_id': self.field.id,
'file_name': self.basename, 'file_name': self.basename,
} }
......
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
{% endblock %} {% endblock %}
{% block extra_js %} {% block extra_js %}
<script src="{% static 'js/apply/list-input-files.js' %}"></script>
<script src="{% static 'js/apply/tinymce-word-count.js' %}"></script> <script src="{% static 'js/apply/tinymce-word-count.js' %}"></script>
<script src="{% static 'js/apply/multi-input-fields.js' %}"></script> <script src="{% static 'js/apply/multi-input-fields.js' %}"></script>
<script src="{% static 'js/apply/submission-form-copy.js' %}"></script> <script src="{% static 'js/apply/submission-form-copy.js' %}"></script>
......
...@@ -30,7 +30,3 @@ ...@@ -30,7 +30,3 @@
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block extra_js %}
<script src="{% static 'js/apply/list-input-files.js' %}"></script>
{% endblock %}
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
{% endblock %} {% endblock %}
{% block extra_js %} {% block extra_js %}
<script src="{% static 'js/apply/list-input-files.js' %}"></script>
<script src="{% static 'js/apply/tinymce-word-count.js' %}"></script> <script src="{% static 'js/apply/tinymce-word-count.js' %}"></script>
<script src="{% static 'js/apply/multi-input-fields.js' %}"></script> <script src="{% static 'js/apply/multi-input-fields.js' %}"></script>
<script src="{% static 'js/apply/submission-form-copy.js' %}"></script> <script src="{% static 'js/apply/submission-form-copy.js' %}"></script>
......
...@@ -73,6 +73,5 @@ ...@@ -73,6 +73,5 @@
{% block extra_js %} {% block extra_js %}
<script src="{% static 'js/apply/jquery.fancybox.min.js' %}"></script> <script src="{% static 'js/apply/jquery.fancybox.min.js' %}"></script>
<script src="{% static 'js/apply/list-input-files.js' %}"></script>
<script src="{% static 'js/apply/fancybox-global.js' %}"></script> <script src="{% static 'js/apply/fancybox-global.js' %}"></script>
{% endblock %} {% endblock %}
...@@ -36,5 +36,4 @@ ...@@ -36,5 +36,4 @@
{% block extra_js %} {% block extra_js %}
{{ form.media.js }} {{ form.media.js }}
<script src="{% static 'js/apply/list-input-files.js' %}"></script>
{% endblock %} {% endblock %}
...@@ -18,7 +18,3 @@ ...@@ -18,7 +18,3 @@
<a href="{% url 'apply:projects:detail' pk=project.pk %}">{% trans "Visit Project Detail Page" %}</a> <a href="{% url 'apply:projects:detail' pk=project.pk %}">{% trans "Visit Project Detail Page" %}</a>
</div> </div>
{% endblock %} {% endblock %}
{% block extra_js %}
<script src="{% static 'js/apply/list-input-files.js' %}"></script>
{% endblock %}
(function ($) {
'use strict';
function listInputFiles() {
$('input[type=file]').change(function () {
// remove any existing files first
$(this).siblings('.form__file').remove();
for (let i = 0; i < $(this)[0].files.length; ++i) {
$(this).parents('.form__item').prepend(`
<p class="form__file">${$(this)[0].files[i].name}</p>
`);
}
});
}
// Show list of selected files for upload on input[type=file]
listInputFiles();
})(jQuery);
...@@ -13,7 +13,8 @@ django-basic-auth-ip-whitelist==0.3.4 ...@@ -13,7 +13,8 @@ django-basic-auth-ip-whitelist==0.3.4
django-bleach==3.0.0 django-bleach==3.0.0
django-countries==7.2.1 django-countries==7.2.1
django-extensions==3.1.5 django-extensions==3.1.5
django-file-form==3.3.0 # django-file-form==3.3.0
git+https://github.com/theskumar/django-file-form.git@feature/error-message-invalid-files
django-filter==2.4.0 django-filter==2.4.0
django-fsm==2.8.0 django-fsm==2.8.0
django-heroku==0.3.1 django-heroku==0.3.1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment