Files @ 70b8aa07aee4
Branch filter:

Location: website/conservancy/ccs_upload/views.py

bsturmfels
Simplify settings and move some standard settings into settings.py

These were previously in djangocommonsettings.py, but don't ever vary between
development and production environments.
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):
    return '{hash:x} {name}'.format(hash=random.getrandbits(32), name=name)