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'), (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('', urlpatterns = patterns('',
(r'^feedback/', include(feedback_patterns)), (r'^feedback/', include(feedback_patterns)),
(r'^releases/$', (r'^releases/', include(releases_patterns)),
ReleaseListView.as_view(), {}, 'releng-release-list'),
(r'^releases/(?P<version>[-.\w]+)/$',
ReleaseDetailView.as_view(), {}, 'releng-release-detail'),
) )
# vim: set ts=4 sw=4 et: # vim: set ts=4 sw=4 et:

View File

@ -1,7 +1,9 @@
from base64 import b64decode
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from django.db.models import Count, Max 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.shortcuts import get_object_or_404, redirect, render
from django.views.generic import DetailView, ListView from django.views.generic import DetailView, ListView
@ -224,4 +226,16 @@ class ReleaseDetailView(DetailView):
slug_field = 'version' slug_field = 'version'
slug_url_kwarg = '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: # vim: set ts=4 sw=4 et: