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`
Là tu suppose par exemple que mon éditeur est bien codé, mais il pourrait
être fait de manière a télécharger systématiquement l'archive a chaque fois.

Rien que pour ça je mettrais du cache (en plus des utilisations
malveillantes possibles). On a plus de marge sur l'espace disque que sur le
processeur en général. Et au pire on peut toujours nettoyer les fichiers
ZIP sans casser le fonctionnement.
Le 27 oct. 2014 13:12, "Christophe Gabard" <notifications@github.com> a
écrit :

> 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)
>
> A part l'action malveillante, je ne vois pas trop de raisons. Avec ton
> éditeur tu va la re-générer, au pire sur 2 PC, 3 peut etre. Et encore ça va
> concerner une minorité des utilisateurs (les utilisateurs qui rédigent sont
> déjà une minorité, ceux qui utiliseront un éditeur externe encore plus).
> Personnellement j'ai peur qu'on accumule pleins de fichiers en cache pour
> pas grand chose, c'est overkill. Mais en soit je m'en fout un peu, faite
> comme vous le sentez.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/zestedesavoir/zds-site/pull/1619/files#r19400576>.
>