Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion djangopypi/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,8 @@
'releases.manage_files',name='djangopypi-release-manage-files'),
url(r'^pypi/(?P<package>[\w\d_\.\-]+)/(?P<version>[\w\d_\.\-]+)/files/upload/$',
'releases.upload_file',name='djangopypi-release-upload-file'),
)
url(r'^pypi/(?P<package>[\w\d_\.\-]+)/dists/(?P<filename>[\w\d_\.\-]+)$',
'releases.download_file',name='djangopypi-release-download-file'),
url(r'^pypi/(?P<package>[\w\d_\.\-]+)/(?P<version>[\w\d_\.\-]+)/dists/(?P<filename>[\w\d_\.\-]+)$',
'releases.download_file',name='djangopypi-release-download-file'),
)
12 changes: 11 additions & 1 deletion djangopypi/views/releases.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.conf import settings
from django.core.urlresolvers import reverse
from django.forms.models import inlineformset_factory
from django.http import Http404, HttpResponseRedirect
from django.http import Http404, HttpResponse
from django.views.generic import list_detail, create_update
from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext
Expand Down Expand Up @@ -184,3 +184,13 @@ def upload_file(request, package, version, **kwargs):
return render_to_response(kwargs['template_name'], kwargs['extra_context'],
context_instance=RequestContext(request),
mimetype=kwargs['mimetype'])

def download_file(request, package, filename, version=None):
import os
filepath = os.path.join(settings.MEDIA_ROOT, settings.DJANGOPYPI_RELEASE_UPLOAD_TO, filename)
if not os.path.exists(filepath):
raise Http404('%s does not exist' % (filepath,))

response = HttpResponse(content=open(filepath).read(), content_type='application/octet-stream')
response['Content-Disposition'] = 'attachment; filename=%s' % (filename,)
return response