[extensions-web] Allow reviewers to download the zipfile



commit 10c09fa4254b450fd8a92f4dcc30bdee8991f29d
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Sat Nov 19 16:50:10 2011 -0500

    Allow reviewers to download the zipfile

 sweettooth/review/templates/review/review.html |    7 ++++++-
 sweettooth/review/urls.py                      |    3 +++
 sweettooth/review/views.py                     |   14 +++++++++++++-
 3 files changed, 22 insertions(+), 2 deletions(-)
---
diff --git a/sweettooth/review/templates/review/review.html b/sweettooth/review/templates/review/review.html
index fba40f9..31ba2f8 100644
--- a/sweettooth/review/templates/review/review.html
+++ b/sweettooth/review/templates/review/review.html
@@ -28,7 +28,12 @@
 </div>
 
 <h2 class="expanded"> Files </h2>
-<div id="files" data-pk="{{ version.pk }}">
+<div>
+  <div id="files" data-pk="{{ version.pk }}">
+  </div>
+  <p>Note: Binary files aren't showed on the web site. To see all
+    files, please <a href="{% url review-download pk=version.pk %}">download
+      the extension zipfile</a>.</p>
 </div>
 
 {% if previous_versions %}
diff --git a/sweettooth/review/urls.py b/sweettooth/review/urls.py
index 383bbc4..ce7d5df 100644
--- a/sweettooth/review/urls.py
+++ b/sweettooth/review/urls.py
@@ -15,6 +15,9 @@ urlpatterns = patterns('',
     url(r'^ajax/get-file-diff/(?P<pk>\d+)', views.ajax_get_file_diff_view, name='review-ajax-file-diff'),
     url(r'^submit/(?P<pk>\d+)', views.submit_review_view, name='review-submit'),
 
+    url(r'^download/(?P<uuid>.+)\.shell-extension\.zip$',
+        views.download_zipfile, name='review-zipfile'),
+
     url(r'^(?P<pk>\d+)', views.review_version_view, name='review-version'),
 
 )
diff --git a/sweettooth/review/views.py b/sweettooth/review/views.py
index f350b18..201c359 100644
--- a/sweettooth/review/views.py
+++ b/sweettooth/review/views.py
@@ -12,7 +12,7 @@ from django.core.mail import send_mail
 from django.core.urlresolvers import reverse
 from django.contrib import messages
 from django.http import HttpResponseForbidden, Http404
-from django.shortcuts import redirect
+from django.shortcuts import redirect, get_object_or_404
 from django.template.loader import render_to_string
 from django.utils.html import escape
 
@@ -200,6 +200,18 @@ def ajax_get_file_view(request, obj):
     raw = f.read()
     return html_for_file(filename, raw)
 
+def download_zipfile(request, uuid):
+    pk = request.GET['pk']
+    version = get_object_or_404(models.ExtensionVersion, pk=pk)
+
+    if version.extension.uuid != uuid:
+        raise Http404()
+
+    if version.status == models.STATUS_NEW:
+        return HttpResponseForbidden()
+
+    return redirect(version.source.url)
+
 @post_only_view
 @model_view(models.ExtensionVersion)
 def submit_review_view(request, obj):



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]