Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import d'une archive d'images dans une galerie #1410

Merged
merged 5 commits into from Sep 7, 2014

Conversation

firm1
Copy link
Contributor

@firm1 firm1 commented Sep 1, 2014

Q R
Correction de bugs ? non
Nouvelle Fonctionnalité ? oui
Tickets concernés #731 et surtout Forum

Cette PR rajoute la possibilité d'importer un ensemble d'images dans la galerie. Avant on était obligé de rajouter image par image pour pouvoir tout importer, ce qui, dans le cadre de la rédaction d'un tutoriel peut rendre la tache longue et rébarbative.

Maintenant, il suffit de zipper vos images, et de les importer en allant dans une gallerie et en faisant "Importer une archive".

Notes pour QA

  • Vérifier qu'on ne peut pas importer d'image sans avoir les droits
  • Vérifier que quelques soit la structure des dossiers a l'intérieur du zip, toutes les images passent
  • Vérifier que s'il y'a des images trop lourdes (au dessus de la limite imposées par le setting), toutes les images sont importées sauf les images loudes et un message d'erreur est bien renvoyé

@coveralls
Copy link

Coverage Status

Coverage increased (+0.1%) when pulling 814870b on firm1:import-images-from-archives into 9581825 on zestedesavoir:dev.

file = forms.FileField(
label='Sélectionnez l\'archive contenant les images à charger',
required=True
)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il y aurait moyen d'imposer un .zip direct dans l'uploader ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

non, car il faudrait un minimum avoir déjà téléchargé le fichier pour vérifier que c'est bien un zip. On pourrait vérifier juste l'extension dans le formulaire, mais ça ne serait pas efficace

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est déjà un minimum de vérifier l'extension.

2014-09-01 23:02 GMT+02:00 firm1 notifications@github.com:

In zds/gallery/forms.py:

@@ -151,6 +151,28 @@ def clean(self):
return cleaned_data

+class ArchiveImageForm(forms.Form):

  • file = forms.FileField(
  •    label='Sélectionnez l\'archive contenant les images à charger',
    
  •    required=True
    
  • )

non, car il faudrait un minimum avoir déjà téléchargé le fichier pour
vérifier que c'est bien un zip. On pourrait vérifier juste l'extension dans
le formulaire, mais ça ne serait pas efficace


Reply to this email directly or view it on GitHub
https://github.com/zestedesavoir/zds-site/pull/1410/files#r16964462.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est a ca que je pensais, avoir un filtre ".zip" comme on en trouve tant (histoire au moins de limiter les chargements par erreurs) afin que l'utilisateur sache quoi charger

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est a ca que je pensais, avoir un filtre ".zip" comme on en trouve tant (histoire au moins de limiter les chargements par erreurs) afin que l'utilisateur sache quoi charger

pourquoi pas. C'est fait

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pourquoi ne pas prendre en charge les .tar.gz qui sont tout aussi répandus à ce moment là ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pourquoi ne pas prendre en charge les .tar.gz qui sont tout aussi répandus à ce moment là ?

parce que le zip est à la portée de tout le monde.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Et que techniquement c'est très facile de lire un ZIP, alors que le .tar.gz
pose des problèmes (à commencer par le fait qu'il faut le décompresser
intégralement pour pouvoir en faire quoi que ce soit).

2014-09-02 15:34 GMT+02:00 firm1 notifications@github.com:

In zds/gallery/forms.py:

@@ -151,6 +151,28 @@ def clean(self):
return cleaned_data

+class ArchiveImageForm(forms.Form):

  • file = forms.FileField(
  •    label='Sélectionnez l\'archive contenant les images à charger',
    
  •    required=True
    
  • )

Pourquoi ne pas prendre en charge les .tar.gz qui sont tout aussi
répandus à ce moment là ?

parce que le zip est à la portée de tout le monde.


Reply to this email directly or view it on GitHub
https://github.com/zestedesavoir/zds-site/pull/1410/files#r16986504.

@coveralls
Copy link

Coverage Status

Coverage increased (+1.31%) when pulling c846ed4 on firm1:import-images-from-archives into 9581825 on zestedesavoir:dev.

@Alex-D Alex-D changed the title Import d'une archive d'images dans une galérie Import d'une archive d'images dans une galerie Sep 2, 2014
@Eskimon
Copy link
Member

Eskimon commented Sep 3, 2014

Ca marche pas du tout chez moi (Ubuntu 12.04). Après avoir clické sur importer mon zip j'ai ca :

Traceback:
File "/home/eskimon/.local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  112.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/eskimon/Documents/ZestedeSavoir/zds/member/decorator.py" in _can_write_and_read_now
  20.         return func(request, *args, **kwargs)
File "/home/eskimon/.local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  22.                 return view_func(request, *args, **kwargs)
File "/home/eskimon/.local/lib/python2.7/site-packages/django/db/transaction.py" in inner
  371.                 return func(*args, **kwargs)
File "/home/eskimon/Documents/ZestedeSavoir/zds/gallery/views.py" in import_image
  339.                 fp = open(ph_temp, "wb")

Exception Type: IOError at /galerie/image/importer/4/
Exception Value: [Errno 2] No such file or directory: '/home/eskimon/Documents/ZestedeSavoir/temp/test2/caribou-seal_of_approval.png'

@firm1
Copy link
Contributor Author

firm1 commented Sep 3, 2014

Juste pour être sur, l'user avec lequel tu lance zds à t-il les droit d'écrire dans le dosser /home/eskimon/Documents/ZestedeSavoir/ ?

Parce que là c'est exactement le truc que fais travis et ça passe

@Eskimon
Copy link
Member

Eskimon commented Sep 4, 2014

J'ai tout lance de mon user 'Eskimon', donc a priori oui... Je ressai des que possible

@firm1
Copy link
Contributor Author

firm1 commented Sep 4, 2014

N'hésite pas à faire un top pour voir l'user qui démarre ton process python et vérifier qu'il a les droits en écriture.

@Eskimon
Copy link
Member

Eskimon commented Sep 6, 2014

J'ai trouvé pourquoi ca merde. Tu essaies d'importer dans temp, dans un sous-dossier qui porte le nom du zip. Par contre tu ne sembles pas créer ce sous-dossier (temp est bien créer mais pas le sous dossier). Si je crée moi même ce sous-dossier avec le bon nom ca passe par contre.

Le dossier temp est bien détruit à la fin de l'import.

Il se passe le même problème si mon zip possède des sous-dossiers à l'intérieur.

@firm1
Copy link
Contributor Author

firm1 commented Sep 6, 2014

Ça me semble plus bizarre que ça.

Rappelle moi juste ta version exacte de python.
Le 6 sept. 2014 18:09, "Eskimon" notifications@github.com a écrit :

J'ai trouvé pourquoi ca merde. Tu essaies d'importer dans temp, dans un
sous-dossier qui porte le nom du zip. Par contre tu ne sembles pas créer ce
sous-dossier (temp est bien créer mais pas le sous dossier). Si je crée moi
même ce sous-dossier avec le bon nom ca passe par contre.

Le dossier temp est bien détruit à la fin de l'import.

Il se passe le même problème si mon zip possède des sous-dossiers à
l'intérieur.


Reply to this email directly or view it on GitHub
#1410 (comment)
.

@Eskimon
Copy link
Member

Eskimon commented Sep 6, 2014

Python 2.7.3

@firm1
Copy link
Contributor Author

firm1 commented Sep 7, 2014

Bon, c'est normalement corrigé.

QA CAN CONTINUE

@Eskimon
Copy link
Member

Eskimon commented Sep 7, 2014

Tout marche nickel a une chose pret : On importe tout autant les images que les pdf et autres conneries... Il faudrait faire un test sur le type mime.

Sinon beau boulot !

@firm1
Copy link
Contributor Author

firm1 commented Sep 7, 2014

Il faudrait faire un test sur le type mime.

En effet :) ça y est c'est bon.

QA CAN CONTINUE

@Eskimon
Copy link
Member

Eskimon commented Sep 7, 2014

Tout marche très bien, c'est super :) (dossier imbriqué, fichiers trop gros, fichiers qui ne sont pas des images, je crois que je n'oublie rien !)

@Eskimon
Copy link
Member

Eskimon commented Sep 7, 2014

Bon, des que npm redevient live, on passe Travis et on merge :)

@coveralls
Copy link

Coverage Status

Coverage increased (+1.59%) when pulling dead3cf on firm1:import-images-from-archives into 9581825 on zestedesavoir:dev.

Eskimon added a commit that referenced this pull request Sep 7, 2014
Import d'une archive d'images dans une galerie
@Eskimon Eskimon merged commit 809aec0 into zestedesavoir:dev Sep 7, 2014
@SpaceFox SpaceFox added this to the Version 1.1 milestone Sep 24, 2014
@firm1 firm1 deleted the import-images-from-archives branch June 24, 2015 09:06
@firm1 firm1 restored the import-images-from-archives branch March 2, 2018 17:35
@firm1 firm1 deleted the import-images-from-archives branch November 5, 2019 08:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-Back Concerne le back-end Django Facile Bon ticket pour débuter pour rejoindre le développement !
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants