diff options
-rw-r--r-- | packages/views.py | 18 | ||||
-rw-r--r-- | templates/packages/details.html | 1 | ||||
-rw-r--r-- | urls.py | 2 |
3 files changed, 20 insertions, 1 deletions
diff --git a/packages/views.py b/packages/views.py index 682ddedf..6838de03 100644 --- a/packages/views.py +++ b/packages/views.py @@ -12,9 +12,11 @@ from django.views.generic import list_detail from django.db.models import Q import datetime +import string from main.models import Package, PackageFile from main.models import Arch, Repo, Signoff +from main.models import MirrorUrl from main.utils import make_choice from packages.models import PackageRelation @@ -316,5 +318,19 @@ def flag(request, name='', repo='', arch=''): return render_to_response('packages/flag.html', context) -# vim: set ts=4 sw=4 et: +def download(request, name='', repo='', arch=''): + pkg = get_object_or_404(Package, + pkgname=name, repo__name__iexact=repo, arch__name=arch) + mirrorurl = MirrorUrl.objects.filter(mirror__country='Any', + mirror__public=True, mirror__active=True, + protocol__protocol__iexact='HTTP')[0] + details = { + 'host': mirrorurl.url, + 'arch': pkg.arch.name, + 'repo': pkg.repo.name.lower(), + 'file': pkg.filename, + } + url = string.Template('${host}${repo}/os/${arch}/${file}').substitute(details) + return HttpResponseRedirect(url) +# vim: set ts=4 sw=4 et: diff --git a/templates/packages/details.html b/templates/packages/details.html index c7945b25..45394770 100644 --- a/templates/packages/details.html +++ b/templates/packages/details.html @@ -28,6 +28,7 @@ 'height=350,width=450,location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=no');">(?)</a> {% endif %} </li> + <li><a href="download/" title="Download {{ pkg.pkgname }} from mirror">Download From Mirror</a></li> </ul> {% if user.is_authenticated %} @@ -52,6 +52,8 @@ urlpatterns = patterns('', 'packages.views.flag'), (r'^packages/(?P<repo>[A-z0-9\-]+)/(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/unflag/$', 'packages.views.unflag'), + (r'^packages/(?P<repo>[A-z0-9\-]+)/(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/download/$', + 'packages.views.download'), (r'^todo/(\d+)/$', 'todolists.views.view'), (r'^todo/add/$', 'todolists.views.add'), |