Export des galeries

| Q                         | R
| ------------------------- | -------------------------------------------
| Correction de bugs ?      | Non
| Nouvelle Fonctionnalité ? | Oui
| Tickets concernés         | #1617

> **Note :** Il y a des risques pour que les tests unitaires ne passent pas tout de suite. Je n'ai pas pu les lancer convenablement pour des raisons d'environnement.

# Note pour la QA

1. Créez une galerie, ajoutez des images et téléchargez l'archive. Vous devriez récupérer un zip avec toutes les images de la galerie.
2. Créez une galerie avec un utilisateur X et tentez de télécharger l'archive avec un utilisateur Y sans les droits sur la galerie. L'url est la suivante : `http://localhost:8000/galerie/telecharger/?gallery=N`
Je ne veux pas faire mon rabat-joie, mais sur l'hébergement actuel on a 50
Go de disque et 25 Go d'espace libre. Attention à la taille des éventuels
caches.

2014-10-27 14:24 GMT+01:00 Gerard <notifications@github.com>:

> In zds/gallery/views.py:
>
> > +@login_required
> > +def download(request):
> > +    """Download a gallery."""
> > +    gallery = get_object_or_404(Gallery, pk=request.GET["gallery"])
> > +
> > +    if request.user not in gallery.get_users():
> > +        raise PermissionDenied
> > +
> > +    zip_path = os.path.join(tempfile.gettempdir(), gallery.slug + '.zip')
> > +    zip_file = zipfile.ZipFile(zip_path, 'w')
> > +    insert_into_zip(zip_file, gallery)
> > +    zip_file.close()
> > +
> > +    response = HttpResponse(open(zip_path, "rb").read(), content_type="application/x-zip-compressed")
> > +    response["Content-Disposition"] = "attachment; filename={0}.zip".format(gallery.slug)
> > +    os.remove(zip_path)
>
> Ca serait une solution. A première vue, c'est possible de récupérer la
> date de création d'un zip et il suffit de faire une requête de la dernière
> image rajoutée dans la galerie.
>
> Si vous tenez à ce système de cache, je peux me pencher sur cette solution
> qui est (très certainement) moins couteuse qu'une nouvelle compression.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/zestedesavoir/zds-site/pull/1619/files#r19403746>.
>