43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
import os
|
|
import logging
|
|
import humanize
|
|
from tempfile import mkstemp
|
|
from shutil import copyfile
|
|
|
|
from django.core import serializers
|
|
from django.http import HttpResponseRedirect, HttpResponse, JsonResponse
|
|
from django.shortcuts import render, get_object_or_404
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from django.views.decorators.http import require_http_methods
|
|
from django.core.files.uploadhandler import TemporaryFileUploadHandler
|
|
|
|
from .tasks import process_message
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
@csrf_exempt
|
|
@require_http_methods(["POST"])
|
|
def submit(request):
|
|
# always upload into a file
|
|
request.upload_handlers = [TemporaryFileUploadHandler(request)]
|
|
|
|
body = request.body
|
|
if not body or len(body) < 1:
|
|
return HttpResponse('Bad request: no data', status=400)
|
|
|
|
msg_file = request.FILES['file']
|
|
if not msg_file:
|
|
return HttpResponse('Bad request: no file', status=400)
|
|
|
|
msg_size = humanize.naturalsize(msg_file.size, gnu=True)
|
|
log.debug('message file size: {}'.format(msg_size))
|
|
|
|
_, tmpfile = mkstemp(suffix='.eml', prefix='markup_', dir=None, text=False)
|
|
log.debug('copy message file from {} to {}'.format(msg_file.temporary_file_path(), tmpfile))
|
|
copyfile(msg_file.temporary_file_path(), tmpfile)
|
|
|
|
process_message.delay(tmpfile)
|
|
|
|
return JsonResponse({'success': True}, safe=False)
|