From b8f8a6cc122b1aa9b6886da524461376867a5762 Mon Sep 17 00:00:00 2001 From: firm1 Date: Mon, 16 Mar 2015 13:03:30 +0100 Subject: [PATCH] permet le svg dans les tutoriels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit correction pep8 suppression d'un print corrections des svg avec chemins relatifs mise à jour des actions de releases --- doc/source/install/backend-linux-install.rst | 3 +- requirements.txt | 1 + update.md | 9 ++++- zds/tutorial/factories.py | 1 + zds/tutorial/views.py | 39 ++++++++++++-------- 5 files changed, 36 insertions(+), 17 deletions(-) diff --git a/doc/source/install/backend-linux-install.rst b/doc/source/install/backend-linux-install.rst index 4faef2f092..0bbe3e28e2 100644 --- a/doc/source/install/backend-linux-install.rst +++ b/doc/source/install/backend-linux-install.rst @@ -22,13 +22,14 @@ Assurez vous que les dépendances suivantes soient résolues : - libxlst-dev (peut être appelée libxlst1-dev sur certains OS comme ubuntu - libz-dev (peut être libz1g-dev sur système 64bits) - python-sqlparse +- libffi : ``apt-get install libffi-dev`` - libjpeg8 libjpeg8-dev libfreetype6 libfreetype6-dev : ``apt-get install libjpeg8 libjpeg8-dev libfreetype6 libfreetype6-dev`` Ou, en une ligne, .. sourcecode:: bash - apt-get install git python-dev python-setuptools libxml2-dev python-lxml libxslt-dev libz-dev python-sqlparse libjpeg8 libjpeg8-dev libfreetype6 libfreetype6-dev + apt-get install git python-dev python-setuptools libxml2-dev python-lxml libxslt-dev libz-dev python-sqlparse libjpeg8 libjpeg8-dev libfreetype6 libfreetype6-dev libffi-dev easy_install pip tox Installation et configuration de `virtualenv` diff --git a/requirements.txt b/requirements.txt index d262e0b47f..42ee684887 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,6 +19,7 @@ pillow==2.7.0 gitpython==0.3.5 https://github.com/zestedesavoir/Python-ZMarkdown/archive/2.6.0-zds.4.zip easy-thumbnails==2.2 +CairoSVG==1.0.13 # Api dependencies djangorestframework==3.0.2 diff --git a/update.md b/update.md index b0c0abe013..de4541486d 100644 --- a/update.md +++ b/update.md @@ -146,7 +146,14 @@ Rajouter ces lignes dans le `settings_prod.py` : ZDS_SITE['site']['googleAnalyticsID'] = 'UA-27730868-1' ZDS_SITE['site']['googleTagManagerID'] = 'GTM-WH7642' ``` + +Issue #1634 +----------- + +Exécuter la commande suivante : `sudo apt-get install libffi-dev` + + Actions à faire pour mettre en prod la version : v1.6 ===================================================== -Vérifier que `EMAIL_BACKEND` est bien définit dans le `settings_prod.py` car il a maintenant une valeur par défaut. La configuration par défaut sur la prod devrait être `EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'`. \ No newline at end of file +Vérifier que `EMAIL_BACKEND` est bien définit dans le `settings_prod.py` car il a maintenant une valeur par défaut. La configuration par défaut sur la prod devrait être `EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'`. diff --git a/zds/tutorial/factories.py b/zds/tutorial/factories.py index dd9147ee72..58292995ac 100644 --- a/zds/tutorial/factories.py +++ b/zds/tutorial/factories.py @@ -18,6 +18,7 @@ u'Ceci est un contenu de tutoriel utile et à tester un peu partout\n\n ' u'Ce contenu ira aussi bien dans les introductions, que dans les conclusions et les extraits \n\n ' u'le gros intéret étant qu\'il renferme des images pour tester l\'execution coté pandoc \n\n ' + u'Un svg ![Gnome](http://upload.wikimedia.org/wikipedia/commons/6/68/Gnomelogo.svg) \n\n ' u'Exemple d\'image ![Ma pepite souris](http://blog.science-infuse.fr/public/souris.jpg)\n\n ' u'\nExemple d\'image ![Image inexistante](http://blog.science-infuse.fr/public/inv_souris.jpg)\n\n ' u'\nExemple de gif ![](http://corigif.free.fr/oiseau/img/oiseau_004.gif)\n\n ' diff --git a/zds/tutorial/views.py b/zds/tutorial/views.py index 51091379b9..f2eddc9c94 100644 --- a/zds/tutorial/views.py +++ b/zds/tutorial/views.py @@ -20,6 +20,7 @@ import os import glob import tempfile +import cairosvg from PIL import Image as ImagePIL from django.conf import settings @@ -3085,15 +3086,19 @@ def get_url_images(md_text, pt): try: urlretrieve(real_url, down_path) try: - ext = filename.split(".")[-1] - im = ImagePIL.open(down_path) - # if image is gif, convert to png - if ext == "gif": - im.save(os.path.join(pt, "images", filename.split(".")[0] + ".png")) + ext = filename.split(".")[-1].lower() + if ext == "svg": + cairosvg.svg2png(url=down_path, + write_to=os.path.join(pt, "images", filename.split(".")[0] + ".png")) + else: + im = ImagePIL.open(down_path) + # if image is gif, convert to png + if ext == "gif": + im.save(os.path.join(pt, "images", filename.split(".")[0] + ".png")) except IOError: - ext = filename.split(".")[-1] + ext = filename.split(".")[-1].lower() im = ImagePIL.open(unknow_path) - if ext == "gif": + if ext == "gif" or ext == "svg": im.save(os.path.join(pt, "images", filename.split(".")[0] + ".png")) else: im.save(os.path.join(pt, "images", filename)) @@ -3111,14 +3116,18 @@ def get_url_images(md_text, pt): try: ext = dstroot.split(".")[-1] - im = ImagePIL.open(dstroot) - # if image is gif, convert to png - if ext == "gif": - im.save(os.path.join(dstroot.split(".")[0] + ".png")) + if ext == "svg": + cairosvg.svg2png(url=dstroot, + write_to=os.path.join(dstroot.split(".")[0] + ".png")) + else: + im = ImagePIL.open(dstroot) + # if image is gif or svg, convert to png + if ext == "gif": + im.save(os.path.join(dstroot.split(".")[0] + ".png")) except IOError: - ext = dstroot.split(".")[-1] + ext = dstroot.split(".")[-1].lower() im = ImagePIL.open(unknow_path) - if ext == "gif": + if ext == "gif" or ext == "svg": im.save(os.path.join(dstroot.split(".")[0] + ".png")) else: im.save(os.path.join(dstroot)) @@ -3134,8 +3143,8 @@ def sub_urlimg(g): (filepath, filename) = os.path.split(parse_object.path) if filename != '': mark = g.group("mark") - ext = filename.split(".")[-1] - if ext == "gif": + ext = filename.split(".")[-1].lower() + if ext == "gif" or ext == "svg": if parse_object.scheme in ("http", "https") or \ parse_object.netloc[:3] == "www" or \ parse_object.path[:3] == "www":