summaryrefslogtreecommitdiff
path: root/patchwork/views/cover.py
blob: 8ab0ba993650d4b6298c755d1ac78e0ac664ebd0 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# Patchwork - automated patch tracking system
# Copyright (C) 2016 Intel Corporation
#
# SPDX-License-Identifier: GPL-2.0-or-later

from django.http import Http404
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.shortcuts import render
from django.urls import reverse

from patchwork.models import Cover
from patchwork.models import Patch
from patchwork.models import Project
from patchwork.views.utils import cover_to_mbox


def cover_detail(request, project_id, msgid):
    project = get_object_or_404(Project, linkname=project_id)
    db_msgid = ('<%s>' % msgid)

    # redirect to patches where necessary
    try:
        cover = get_object_or_404(Cover, project_id=project.id,
                                  msgid=db_msgid)
    except Http404 as exc:
        patches = Patch.objects.filter(
            project_id=project.id,
            msgid=db_msgid,
        )
        if patches:
            return HttpResponseRedirect(
                reverse('patch-detail',
                        kwargs={'project_id': project.linkname,
                                'msgid': msgid}))
        raise exc

    context = {
        'submission': cover,
        'project': cover.project,
    }

    comments = cover.comments.all()
    comments = comments.select_related('submitter')
    comments = comments.only('submitter', 'date', 'id', 'content',
                             'cover')
    context['comments'] = comments

    return render(request, 'patchwork/submission.html', context)


def cover_mbox(request, project_id, msgid):
    db_msgid = ('<%s>' % msgid)
    project = get_object_or_404(Project, linkname=project_id)
    cover = get_object_or_404(Cover, project_id=project.id,
                              msgid=db_msgid)

    response = HttpResponse(content_type='text/plain')
    response.write(cover_to_mbox(cover))
    response['Content-Disposition'] = 'attachment; filename=%s.mbox' % (
        cover.filename)

    return response


def cover_by_id(request, cover_id):
    cover = get_object_or_404(Cover, id=cover_id)

    url = reverse('cover-detail', kwargs={'project_id': cover.project.linkname,
                                          'msgid': cover.url_msgid})

    return HttpResponseRedirect(url)


def cover_mbox_by_id(request, cover_id):
    cover = get_object_or_404(Cover, id=cover_id)

    url = reverse('cover-mbox', kwargs={'project_id': cover.project.linkname,
                                        'msgid': cover.url_msgid})

    return HttpResponseRedirect(url)