summaryrefslogtreecommitdiff
path: root/postgresqleu/mailqueue/backendviews.py
blob: dbb0faee65326cc9f321a8d5c7fb69938766b4a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from django.core.exceptions import PermissionDenied
from django.shortcuts import get_object_or_404
from django.http import Http404, HttpResponse
from django.contrib.auth.decorators import login_required

from postgresqleu.util.backendviews import backend_list_editor
from postgresqleu.mailqueue.backendforms import BackendMailqueueForm
from postgresqleu.mailqueue.models import QueuedMail
from postgresqleu.mailqueue.util import parse_mail_content, recursive_parse_attachments_from_message


@login_required
def edit_mailqueue(request, rest):
    if not request.user.is_superuser:
        raise PermissionDenied("Access denied")

    return backend_list_editor(request,
                               None,
                               BackendMailqueueForm,
                               rest,
                               bypass_conference_filter=True,
                               topadmin='Mailqueue',
                               return_url='/admin/',
                               allow_new=False,
                               allow_save=False,
    )


@login_required
def view_attachment(request, queueid, attname):
    if not request.user.is_superuser:
        raise PermissionDenied("Access denied")

    mail = get_object_or_404(QueuedMail, pk=queueid)

    msg, body = parse_mail_content(mail.fullmsg)
    for id, filename, contenttype, content in recursive_parse_attachments_from_message(msg):
        if filename == attname:
            return HttpResponse(bytes(content), content_type=contenttype)
    raise Http404("Attachment not found")