forked from 0x2620/pandora
add download url for direct uploads
This commit is contained in:
parent
e9e4bde046
commit
0893715069
2 changed files with 26 additions and 0 deletions
|
@ -16,6 +16,7 @@ urlpatterns = [
|
||||||
#download
|
#download
|
||||||
url(r'^(?P<id>[A-Z0-9].*)/download$', views.download),
|
url(r'^(?P<id>[A-Z0-9].*)/download$', views.download),
|
||||||
url(r'^(?P<id>[A-Z0-9].*)/download/$', views.download),
|
url(r'^(?P<id>[A-Z0-9].*)/download/$', views.download),
|
||||||
|
url(r'^(?P<id>[A-Z0-9].*)/download/source/(?P<part>\d+)?$', views.download_source),
|
||||||
url(r'^(?P<id>[A-Z0-9].*)/download/(?P<resolution>\d+)p\.(?P<format>webm|ogv|mp4)$', views.download),
|
url(r'^(?P<id>[A-Z0-9].*)/download/(?P<resolution>\d+)p\.(?P<format>webm|ogv|mp4)$', views.download),
|
||||||
|
|
||||||
#video
|
#video
|
||||||
|
|
|
@ -892,6 +892,31 @@ def timeline(request, id, size, position=-1, format='jpg', mode=None):
|
||||||
response.allow_access()
|
response.allow_access()
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
def download_source(request, id, part=None):
|
||||||
|
item = get_object_or_404(models.Item, public_id=id)
|
||||||
|
if not item.access(request.user):
|
||||||
|
return HttpResponseForbidden()
|
||||||
|
if part:
|
||||||
|
part = int(part) - 1
|
||||||
|
else:
|
||||||
|
part = 0
|
||||||
|
if not item.files.all().count() > part:
|
||||||
|
raise Http404
|
||||||
|
f = item.files.all()[part]
|
||||||
|
if not f.data:
|
||||||
|
raise Http404
|
||||||
|
|
||||||
|
parts = ['%s - %s ' % (item.get('title'), settings.SITENAME), item.public_id]
|
||||||
|
parts.append('.')
|
||||||
|
parts.append(f.extension)
|
||||||
|
filename = ''.join(parts)
|
||||||
|
|
||||||
|
path = f.data.path
|
||||||
|
content_type = mimetypes.guess_type(path)[0]
|
||||||
|
response = HttpFileResponse(path, content_type=content_type)
|
||||||
|
response['Content-Disposition'] = "attachment; filename*=UTF-8''%s" % quote(filename.encode('utf-8'))
|
||||||
|
return response
|
||||||
|
|
||||||
def download(request, id, resolution=None, format='webm'):
|
def download(request, id, resolution=None, format='webm'):
|
||||||
item = get_object_or_404(models.Item, public_id=id)
|
item = get_object_or_404(models.Item, public_id=id)
|
||||||
if not resolution or int(resolution) not in settings.CONFIG['video']['resolutions']:
|
if not resolution or int(resolution) not in settings.CONFIG['video']['resolutions']:
|
||||||
|
|
Loading…
Reference in a new issue