ZEP-12 : refonte du principe des tutoriels et articles

Avec pour base atomique ... l'extrait

Le problème exposé dans ce sujet a été résolu.

D'ailleurs, je voulais remercier chaleureusement Eskimon, Andr0 et Vayel pour leur immense aide qui a permis pour la première fois depuis l'instoration de la page de faire passer le nombre de tickets "résolus" au dessus du nombre de tickets "ouverts". Merci, Merci, Merci.

Du coup, il est préférable que j'ouvre des sujets dans le forum Bugs et Suggestions ?

Si ce n'est pas encore en prod ET qu'il ne s'agit pas d'une simple uniformisation des texte/style, oui.

Gros +1 à ce que dis mon voisin du dessus !

mais les connaissant, ils voudront développer toutes les suggestions de tout le monde pour tenter de faire plaisir à tout le monde et à un moment, faut un peu stopper parce que sinon tu n'arrives jamais au bout.

Andr0

Tu as tout à fait raison, mais je me connais, et j'essaye d'agir contre moi-même à ce niveau là, pour maintenir le nombre "d'évolutions" à un niveau minimal. Si je devais lister le nombre (impressionant) de trucs que m'on appris cette ZEP, "dire non à une fonctionnalité" en fait partie :o

(au pire, je laisse Eskimon trancher).

Dans tout les cas, on ne ferme pas la porte aux évolutions, et vous êtes encouragé à poster vos idées dans le forum dev' et sur le GH principal. Même si ça peut prendre du temps, quelqu'un finira bien par en tenir compte un jour ;)

J'ignore si c'est une évolution, si c'est facile à faire ou pas, mais il pourrait être chouette de mettre à jour le titre du sujet de la bêta quand celui du contenu a changé entre temps :

  • Création du contenu "Contenu"
  • Mise en bêta
  • Création d'un sujet "[tutoriel][bêta]Contenu".
  • Contenu renommé en "Contenunu"
  • Mise en bêta
  • Sujet renommé en "[tutoriel][bêta]Contenunu" ?
+0 -0

Je passe juste pour dire que les choses commencent à se finaliser.

Le script de migration est en test, nous espérons qu'il fonctionnera assez vite.

Ce matin, j'ai aussi commité une version expérimentale de l'import d'image en même temps que l'archive des tuto.

Vayel a permis à notre documentation d'être bien mise à jour de même nous avons gagné en lisibilité grâce à ses multiples correctifs.

Eskimon et pierre ont pas mal fait avancé les corrections de bugs du système de permission et divers.

DevHugo a réservé le bug de solar mais a prévenu qu'il n'a pas le temps cette semaine.

Etat de ce qu'il reste à faire :

  • mettre le cache memcached sur la zep 12
  • tester et approuver le script de migration python manage.py migrate_to_zep12
  • tester tout ce qui est en needQA (notons juste que j'ai un problème de font Merriweather introuvable sur mon serveur)
  • ajouter quelques tests unitaires car il y a quelques vues qui ne sont pas couvertes mais le passé de zds nous a prouvé que ces vues là aussi pouvaient être touchées par les erreurs 500 si on n'y prenait garde

Bientôt la PR du coup.

Création d'un article pour la QA de #58 et à la validation :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Environment:


Request Method: POST
Request URL: http://zds.francoisdambrine.me/validations/accepter/46/

Django Version: 1.7.7
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.sitemaps',
 'django.contrib.humanize',
 'easy_thumbnails',
 'easy_thumbnails.optimize',
 'crispy_forms',
 'haystack',
 'munin',
 'social.apps.django_app.default',
 'rest_framework',
 'rest_framework_swagger',
 'corsheaders',
 'oauth2_provider',
 'zds.utils',
 'zds.pages',
 'zds.gallery',
 'zds.mp',
 'zds.article',
 'zds.forum',
 'zds.tutorial',
 'zds.tutorialv2',
 'zds.member',
 'zds.featured',
 'django.contrib.admin',
 'debug_toolbar')
Installed Middleware:
(u'debug_toolbar.middleware.DebugToolbarMiddleware',
 'corsheaders.middleware.CorsMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'zds.utils.ThreadLocals',
 'zds.middlewares.SetLastVisitMiddleware.SetLastVisitMiddleware',
 'zds.middlewares.profile.ProfileMiddleware')


Traceback:
File "/home/francois/zds-site/zds-env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/francois/zds-site/zds-env/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
  69.             return self.dispatch(request, *args, **kwargs)
File "/home/francois/zds-site/zds-env/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
  29.             return bound_func(*args, **kwargs)
File "/home/francois/zds-site/zds-env/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)
File "/home/francois/zds-site/zds-env/local/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
  25.                 return func.__get__(self, type(self))(*args2, **kwargs2)
File "/home/francois/zds-site/zds/member/decorator.py" in dispatch
  56.         return super(LoginRequiredMixin, self).dispatch(*args, **kwargs)
File "/home/francois/zds-site/zds/member/decorator.py" in dispatch
  44.         return super(PermissionRequiredMixin, self).dispatch(*args, **kwargs)
File "/home/francois/zds-site/zds-env/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
  87.         return handler(request, *args, **kwargs)
File "/home/francois/zds-site/zds-env/local/lib/python2.7/site-packages/django/views/generic/edit.py" in post
  173.             return self.form_valid(form)
File "/home/francois/zds-site/zds/tutorialv2/views/views_validations.py" in form_valid
  373.             published = publish_content(db_object, versioned, is_major_update=form.cleaned_data['is_major'])
File "/home/francois/zds-site/zds/tutorialv2/utils.py" in publish_content
  536.     parsed_with_local_images = retrieve_and_update_images_links(parsed, directory=extra_contents_path)
File "/home/francois/zds-site/zds/tutorialv2/utils.py" in retrieve_and_update_images_links
  393.         lambda g: retrieve_image_and_update_link(g, previous_urls, directory), md_text)
File "/home/francois/zds-site/zds/tutorialv2/utils.py" in <lambda>
  393.         lambda g: retrieve_image_and_update_link(g, previous_urls, directory), md_text)
File "/home/francois/zds-site/zds/tutorialv2/utils.py" in retrieve_image_and_update_link
  370.         new_url = retrieve_image(url, directory=directory)
File "/home/francois/zds-site/zds/tutorialv2/utils.py" in retrieve_image
  314.         img.save(os.path.join(directory, new_url))
File "/home/francois/zds-site/zds-env/local/lib/python2.7/site-packages/PIL/Image.py" in save
  1667.                     raise KeyError(ext)  # unknown extension

Exception Type: KeyError at /validations/accepter/46/
Exception Value: ''

http://zds.francoisdambrine.me/validations/accepter/46/

+0 -0

Ah, zut, l'erreur est pas là ou je le pensais. Artragis, est ce que /fixtures/black_noir.png existe bien et est ce que c'est bien la valeur de ZDS_APP['content']['default_image'] ? Parce que là, l'erreur se déclenche parce qu'il trouve pas l'image par défaut :o

(sinon, j'ai vu que Pillow permetait de créer basiquement des images, créer un carré noir de 100x100 devrait pas être insurmontable le cas échéant ;) )

+0 -0

On peut rien mettre de nous même dans /media/, même si dans l'idée t'as raison. Après, comme je dis, on pourrait générer la même image avec du pur code de Pillow, et on évitera le soucis. Soit dit en passant, vu que l'image existe et que la variable est bien mise à la bonne valeur, bah je sais pas pourquoi ça plante :o

Je pense qu'il faut regarder l'erreur de plus prêt

la stacktrace nous indique que les variables valent :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
fp  

u'/home/francois/zds-site/contents-public/qa58-1__building/extra_contents/images/.png'

format  

None

self    

<PIL.PngImagePlugin.PngImageFile image mode=RGB size=150x150 at 0xA16FA4C>

filename    

u'/home/francois/zds-site/contents-public/qa58-1__building/extra_contents/images/.png'

en gros la variable new_url et new_url_as_png n'est pas bien créée (elle valent "/extra-content/.png")

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte