diff --git a/markup/tasks.py b/markup/tasks.py index a6a1bfd..a479405 100644 --- a/markup/tasks.py +++ b/markup/tasks.py @@ -47,50 +47,6 @@ def on_fail_handler(self, exc, task_id, args, kwargs, einfo): # raise KeyError() -@shared_task(on_failure=on_fail_handler) -def process_message(path): - parser = FeedParser() - with open(path) as f: - for line in f: - parser.feed(line) - msg = parser.close() - - frm = str(make_header(decode_header(msg['From']))) - subject = str(make_header(decode_header(msg['Subject']))) - - found_pdf = False - for attach in msg.walk(): - if attach.get_content_type() == 'application/pdf': - process_attachment(frm, subject, attach) - found_pdf = True - - if not found_pdf: - reply_missing(frm, subject) - - -def process_attachment(from_address, subject, attachment): - # write out pdf - pdf_name = attachment.get_filename() - pdf_name = str(make_header(decode_header(pdf_name))) - - # if pdf name is in UUID format, use email subject - if re.match(r'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\.pdf', pdf_name): - pdf_name = f'{subject}.pdf' - - print(f'Using pdf name: {pdf_name}') - - pdf_base = Path(pdf_name).stem - workdir = os.path.join(WORKDIR, clean_path(from_address), pdf_base) - ensure_dir(workdir) - pdf_path = os.path.join(workdir, pdf_name) - print(f'saving pdf to {pdf_path}') - with open(pdf_path, 'wb') as att: - att.write(attachment.get_payload(decode=True)) - set_file_perms(pdf_path) - - process_pdf(pdf_path, from_address, subject, workdir) - - @shared_task(on_failure=on_fail_handler) def process_markup_pdf(pdf_path, username): if not Path(pdf_path).is_file(): diff --git a/markup/urls.py b/markup/urls.py index 9b722e8..26d290a 100644 --- a/markup/urls.py +++ b/markup/urls.py @@ -1,10 +1,7 @@ from django.urls import path -from . import views from .webdav import MarkupDavView urlpatterns = [ - path('submit', views.submit, name='markup_submit'), - #path('fail', views.fail, name='markup_fail'), path('dav', MarkupDavView.as_view()), ] diff --git a/markup/views.py b/markup/views.py deleted file mode 100644 index 937a70c..0000000 --- a/markup/views.py +++ /dev/null @@ -1,51 +0,0 @@ -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 -#from .tasks import test_fail - -log = logging.getLogger(__name__) - - - -# @csrf_exempt -# def fail(request): -# test_fail.delay(1, 2) -# return JsonResponse({'success': True}, safe=False) - - -@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) - os.chmod(tmpfile, 0o666) - - process_message.delay(tmpfile) - - return JsonResponse({'success': True}, safe=False)