Skip to content
This repository has been archived by the owner on Jan 12, 2022. It is now read-only.

Commit

Permalink
ability to download_all files with one click
Browse files Browse the repository at this point in the history
  • Loading branch information
zalun committed Feb 25, 2014
1 parent 0b4e95f commit ac95800
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 3 deletions.
15 changes: 14 additions & 1 deletion apps/jetpack/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1341,7 +1341,7 @@ def get_sdk_revision(self):
return self.sdk.kit_lib if self.sdk.kit_lib else self.sdk.core_lib

def export_source(self, modules=None, attachments=None, tstart=None,
temp_dir=None, package_overrides=None):
temp_dir=None, package_overrides=None):
"""
Export source of the PackageRevision and all it's dependencies
Expand Down Expand Up @@ -1391,6 +1391,15 @@ def export_source(self, modules=None, attachments=None, tstart=None,
statsd.timing('export.attachments', t3)
log.debug("[export] attachments exported (time %dms)" % t3)

# export commit message
#self.message
#self.commit_message
commit_msg_path = os.path.join(package_dir, 'commit_message')
with codecs.open(commit_msg_path, mode='w', encoding='utf-8') as f:
f.write("%s\n--\n%s" % (self.version_name, self.commit_message))
if (self.message):
f.write("\n--\n%s" % self.message)

# XPI: copying to local from memory/db/files
self.export_dependencies(temp_dir)
t4 = (time.time() - (t3 / 1000) - tstart) * 1000
Expand Down Expand Up @@ -1847,6 +1856,10 @@ def get_view_on_amo_url(self):
settings.AMO_SITE_PROTOCOL, settings.AMO_SITE_DOMAIN,
self.amo_slug)

def get_all_zipped_url(self):
" returns a url to zip_all view "
return reverse('jp_package_zip', args=[self.pk])

def get_edit_on_amo_url(self, step=5):
" returns the url to resume an incomplete add-on "
if not self.amo_slug:
Expand Down
3 changes: 3 additions & 0 deletions apps/jetpack/templates/edit.html
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@
<li id="zip" title="Download Source" class="UI_Editor_Menu_Button Icon_zip">
<a href="{{ revision.get_prepare_zip_url() }}"><span></span></a>
</li>
<li id="zipall" title="Download all versions" class="UI_Editor_Menu_Button Icon_zip">
<a href="{{ revision.package.get_all_zipped_url() }}"><span></span></a>
</li>
<li class="UI_Editor_Menu_Separator"></li>
<li title="Save" class="UI_Editor_Menu_Button Icon_save">
<a id="package-save" href="#"><span></span></a>
Expand Down
3 changes: 3 additions & 0 deletions apps/jetpack/templates/view.html
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@
<li id="zip" title="Download Source" class="UI_Editor_Menu_Button Icon_zip">
<a href="{{ revision.get_prepare_zip_url() }}"><span></span></a>
</li>
<li id="zipall" title="Download all versions" class="UI_Editor_Menu_Button Icon_zip">
<a href="{{ revision.package.get_all_zipped_url() }}"><span></span></a>
</li>
<li class="UI_Editor_Menu_Separator"></li>
{% endif %}
{% if revision.package.public_permission != 2 and user.is_authenticated %}
Expand Down
4 changes: 3 additions & 1 deletion apps/jetpack/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
url(r'^package/remove_attachment/(?P<revision_id>\d+)/$',
'remove_attachment', name='jp_package_revision_remove_attachment'),

# rename attachment
# rename attachment
url(r'^package/rename_attachment/(?P<revision_id>\d+)/$',
'rename_attachment', name='jp_package_revision_rename_attachment'),

Expand Down Expand Up @@ -143,4 +143,6 @@
'get_zip', name='jp_revision_download_zip'),
url(r'^revision/check_zip/(?P<hashtag>[a-zA-Z0-9]+)/$',
'check_zip', name='jp_revision_check_zip'),
url(r'^package/zip/(?P<pk>\d+)/$',
'all_zip', name='jp_package_zip'),
)
26 changes: 26 additions & 0 deletions apps/jetpack/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
import time
import waffle

from contextlib import closing
from simplejson import JSONDecodeError
from statsd import statsd
from zipfile import ZipFile, ZIP_DEFLATED

from django.contrib import messages
from django.core.urlresolvers import reverse
Expand Down Expand Up @@ -1313,3 +1315,27 @@ def check_zip(r, hashtag):
if os.path.isfile(path):
return HttpResponse('{"ready": true}')
return HttpResponse('{"ready": false}')


@never_cache
def all_zip(request, pk):
"""Zip all and return a file."""
if not pk:
log.critical("[zip] No package_id provided")
return
package = Package.objects.get(pk=pk)
zips = []
# Zip all revisions of the package
for revision in package.revisions.all():
zips.append(revision.zip_source(hashtag=revision.get_cache_hashtag()))
# Zip all zipped revisions into one file
zip_targetname = "package-%d.zip" % package.pk
zip_targetpath = os.path.join(settings.XPI_TARGETDIR, zip_targetname)
with closing(ZipFile(zip_targetpath, 'w', ZIP_DEFLATED)) as z:
for fn in zips:
z.write(fn)
log.info('[zipall:%s] Downloading All zipped' % pk)

response = serve(request, zip_targetpath, '/', show_indexes=False)
response['Content-Disposition'] = ('attachment; filename="%s"' % zip_targetname)
return response
2 changes: 1 addition & 1 deletion vendor
Submodule vendor updated 4189 files

0 comments on commit ac95800

Please sign in to comment.