Add a view to download the torrent available for a given release

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2013-01-19 17:38:54 -06:00
parent 4d52242f4b
commit b642c93aff
2 changed files with 26 additions and 5 deletions

View File

@ -11,11 +11,18 @@
(r'^iso/overview/$', 'iso_overview', {}, 'releng-iso-overview'),
)
releases_patterns = patterns('releng.views',
(r'^$',
ReleaseListView.as_view(), {}, 'releng-release-list'),
(r'^(?P<version>[-.\w]+)/$',
ReleaseDetailView.as_view(), {}, 'releng-release-detail'),
(r'^(?P<version>[-.\w]+)/torrent/$',
'release_torrent', {}, 'releng-release-torrent'),
)
urlpatterns = patterns('',
(r'^feedback/', include(feedback_patterns)),
(r'^releases/$',
ReleaseListView.as_view(), {}, 'releng-release-list'),
(r'^releases/(?P<version>[-.\w]+)/$',
ReleaseDetailView.as_view(), {}, 'releng-release-detail'),
(r'^releases/', include(releases_patterns)),
)
# vim: set ts=4 sw=4 et:

View File

@ -1,7 +1,9 @@
from base64 import b64decode
from django import forms
from django.conf import settings
from django.db.models import Count, Max
from django.http import Http404
from django.http import Http404, HttpResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.views.generic import DetailView, ListView
@ -224,4 +226,16 @@ class ReleaseDetailView(DetailView):
slug_field = 'version'
slug_url_kwarg = 'version'
def release_torrent(request, version):
release = get_object_or_404(Release, version=version)
if not release.torrent_data:
raise Http404
data = b64decode(release.torrent_data)
response = HttpResponse(data, content_type='application/x-bittorrent')
# TODO: this is duplicated from Release.iso_url()
filename = 'archlinux-%s-dual.iso.torrent' % release.version
response['Content-Disposition'] = 'attachment; filename=%s' % filename
return response
# vim: set ts=4 sw=4 et: