Add simple CCS upload (no JavaScript).
This commit is contained in:
parent
e11e6ff451
commit
9a06def0e7
5 changed files with 80 additions and 0 deletions
0
www/conservancy/apps/ccs_upload/__init__.py
Normal file
0
www/conservancy/apps/ccs_upload/__init__.py
Normal file
7
www/conservancy/apps/ccs_upload/urls.py
Normal file
7
www/conservancy/apps/ccs_upload/urls.py
Normal file
|
@ -0,0 +1,7 @@
|
|||
from django.conf.urls import url
|
||||
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^$', views.upload, name='form')
|
||||
]
|
38
www/conservancy/apps/ccs_upload/views.py
Normal file
38
www/conservancy/apps/ccs_upload/views.py
Normal file
|
@ -0,0 +1,38 @@
|
|||
import logging
|
||||
import os
|
||||
import random
|
||||
|
||||
from django.contrib import messages
|
||||
from django.shortcuts import redirect, render
|
||||
|
||||
from .forms import UploadForm
|
||||
|
||||
CCS_UPLOAD_PATH = '/tmp/'
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def upload(request):
|
||||
if request.method == 'POST':
|
||||
form = UploadForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
file = request.FILES['file']
|
||||
_handle_uploaded_file(file)
|
||||
messages.add_message(request, messages.INFO, '"{}" was successfully uploaded.'.format(file.name))
|
||||
return redirect('ccs_upload:form')
|
||||
else:
|
||||
form = UploadForm()
|
||||
return render(request, 'ccs_upload/upload.html', {'form': form})
|
||||
|
||||
|
||||
def _handle_uploaded_file(f):
|
||||
filename = _hash_prefixed_filename(f.name)
|
||||
path = os.path.join(CCS_UPLOAD_PATH, filename)
|
||||
with open(path, 'wb+') as destination:
|
||||
for chunk in f.chunks():
|
||||
destination.write(chunk)
|
||||
logger.info('Wrote uploaded file to {}.'.format(path))
|
||||
|
||||
|
||||
def _hash_prefixed_filename(name: str) -> str:
|
||||
return '{hash:x} {name}'.format(hash=random.getrandbits(32), name=name)
|
34
www/conservancy/templates/ccs_upload/upload.html
Normal file
34
www/conservancy/templates/ccs_upload/upload.html
Normal file
|
@ -0,0 +1,34 @@
|
|||
{% extends "base_conservancy.html" %}
|
||||
{% block category %}Copyright Assignment{% endblock %}
|
||||
{% load static %}
|
||||
|
||||
{% block outercontent %}
|
||||
<style>
|
||||
label { display: block; }
|
||||
|
||||
li.info {
|
||||
background: #F0FFB8;
|
||||
border: 1px solid #D0DD98;
|
||||
}
|
||||
</style>
|
||||
<h1>CCS Candidate Upload</h1>
|
||||
|
||||
<div class="mw7 mb4">
|
||||
<p>Please note that a progress bar is not shown and that large uploads may take a significant time.</p>
|
||||
|
||||
{% if messages %}
|
||||
<ul class="messages list mv2 ">
|
||||
{% for message in messages %}
|
||||
<li class="{{ message.tags }} pa2">{{ message }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
<form action="." method="post" enctype="multipart/form-data" class="mw7">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
|
||||
<p><button type="submit" class="ph3 pv2">Next</button></p>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -58,4 +58,5 @@ urlpatterns = [
|
|||
url(r'^sustainer', include('conservancy.apps.supporter.urls')),
|
||||
url(r'^coming-soon.html', static_views.index),
|
||||
url(r'^fundraiser_data', fundgoal_views.view),
|
||||
url(r'^ccs-upload/', include('conservancy.apps.ccs_upload.urls', namespace='ccs_upload')),
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue