From 58a5131a39e88eb72ab32a4e5c19fe0a426a95d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Bryon?= Date: Tue, 9 Apr 2013 16:50:24 +0200 Subject: [PATCH 1/5] Refs #29 - Improved HTTPDownloadView. --- django_downloadview/views.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/django_downloadview/views.py b/django_downloadview/views.py index fc70e24..b5ff51e 100644 --- a/django_downloadview/views.py +++ b/django_downloadview/views.py @@ -6,6 +6,8 @@ from django.views.generic.base import View from django.views.generic.detail import BaseDetailView from django.views.static import was_modified_since +import requests + from django_downloadview import files from django_downloadview.response import DownloadResponse @@ -134,18 +136,30 @@ class VirtualDownloadView(BaseDownloadView): class HTTPDownloadView(BaseDownloadView): """Proxy files that live on remote servers.""" + #: URL to download (the one we are proxying). url = u'' + + #: Additional keyword arguments for request handler. request_kwargs = {} - name = u'' + + def get_request_factory(self): + """Return request factory to perform actual HTTP request.""" + return requests.get + + def get_request_kwargs(self): + """Return keyword arguments for use with request factory.""" + return self.request_kwargs def get_url(self): + """Return remote file URL (the one we are proxying).""" return self.url def get_file(self): """Return wrapper which has an ``url`` attribute.""" - url = self.get_url() - request_kwargs = self.request_kwargs - return files.HTTPFile(name=self.name, url=url, **request_kwargs) + return files.HTTPFile(request_factory=self.get_request_factory(), + name=self.get_basename(), + url=self.get_url(), + **self.get_request_kwargs()) class ObjectDownloadView(DownloadMixin, BaseDetailView): From df0728c341c0c9189188c7e2831696b85ee1f935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Bryon?= Date: Thu, 11 Apr 2013 11:30:23 +0200 Subject: [PATCH 2/5] Frozen version of 'requests' for development environment. --- etc/buildout.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/buildout.cfg b/etc/buildout.cfg index b5f8549..cab0f85 100644 --- a/etc/buildout.cfg +++ b/etc/buildout.cfg @@ -74,3 +74,4 @@ z3c.recipe.scripts = 1.0.1 zc.recipe.egg = 1.3.2 zest.releaser = 3.43 django-nose = 1.1 +requests = 1.2.0 From c7033295fcaf3bf8b63bf090ef717f124f08c5f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Bryon?= Date: Thu, 11 Apr 2013 11:32:38 +0200 Subject: [PATCH 3/5] Sorted known good set of versions, for easier maintenance. --- etc/buildout.cfg | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/etc/buildout.cfg b/etc/buildout.cfg index cab0f85..f53ba12 100644 --- a/etc/buildout.cfg +++ b/etc/buildout.cfg @@ -56,22 +56,22 @@ eggs = zest.releaser recipe = evg.recipe.activate [versions] -Django = 1.5 -Jinja2 = 2.6 -Pygments = 1.6 -Sphinx = 1.1.3 bpython = 0.10.1 buildout-versions = 1.7 coverage = 3.6 distribute = 0.6.34 +Django = 1.5 +django-nose = 1.1 docutils = 0.10 +Jinja2 = 2.6 nose = 1.2.1 +Pygments = 1.6 python-termstyle = 0.1.9 rednose = 0.3 +requests = 1.2.0 +Sphinx = 1.1.3 sphinxcontrib-testbuild = 0.1.1 +zc.recipe.egg = 1.3.2 z3c.recipe.mkdir = 0.5 z3c.recipe.scripts = 1.0.1 -zc.recipe.egg = 1.3.2 zest.releaser = 3.43 -django-nose = 1.1 -requests = 1.2.0 From c2c152ec499a9dde9645f80113d020d5a6c316ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Bryon?= Date: Thu, 11 Apr 2013 11:39:08 +0200 Subject: [PATCH 4/5] Fixed demo's 'http_download_hello_world' view: using 'basename' and not 'name'. --- demo/demoproject/download/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/demoproject/download/views.py b/demo/demoproject/download/views.py index f4f7eab..65075bc 100644 --- a/demo/demoproject/download/views.py +++ b/demo/demoproject/download/views.py @@ -76,4 +76,4 @@ download_generated_hello_world = StringIODownloadView.as_view() download_http_hello_world = views.HTTPDownloadView.as_view( url=u'https://raw.github.com/benoitbryon/django-downloadview/master/demo/demoproject/download/fixtures/hello-world.txt', - name=u'hello-world.txt') + basename=u'hello-world.txt') From c64f083c9d10ccdc6bba5042018214016d241834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Bryon?= Date: Thu, 11 Apr 2013 11:39:22 +0200 Subject: [PATCH 5/5] Updated changelog. --- CHANGELOG | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 531c24c..4a45cfe 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,7 +4,8 @@ Changelog 1.1 (unreleased) ---------------- -**Backward incompatible changes.** +Various improvements. +Contains **backward incompatible changes.** - Added HTTPDownloadView to proxy to arbitrary URL.