Project

General

Profile

Development #34518

ne pas planter sur un gabarit d'url invalide dans un attribut d'une cellule texte

Added by Frédéric Péters 6 months ago. Updated 28 days ago.

Status:
Solution déployée
Priority:
Normal
Assignee:
Target version:
-
Start date:
03 Jul 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Cellule texte avec href="{{e-services_url}}backoffice/...", crash parce que template invalide (le - dedans).

En cas de TemplateError, juste ne pas remplacer. Ou taper "TEMPLATE ERROR" dedans serait plus explicite ?

File "/usr/lib/python2.7/dist-packages/combo/data/models.py" in render
  690.         context.update(self.get_cell_extra_context(context))

File "/usr/lib/python2.7/dist-packages/combo/data/models.py" in get_cell_extra_context
  769.         text = re.sub(r'(href|src)="(.*?)"', sub_variadic_url, text)

File "/usr/lib/python2.7/re.py" in sub
  155.     return _compile(pattern, flags).sub(repl, string, count)

File "/usr/lib/python2.7/dist-packages/combo/data/models.py" in sub_variadic_url
  767.             url = utils.get_templated_url(url, context=context)

File "/usr/lib/python2.7/dist-packages/combo/utils/urls.py" in get_templated_url
  58.             raise TemplateError('syntax error')

0001-utils-do-not-raise-on-Django-syntax-error-in-templat.patch View (2.99 KB) Nicolas Roche, 25 Sep 2019 07:10 PM

0001-utils-do-not-raise-on-Django-syntax-error-in-templat.patch View (2.3 KB) Nicolas Roche, 27 Sep 2019 06:43 PM

0001-utils-do-not-raise-on-Django-syntax-error-in-templat.patch View (1.97 KB) Nicolas Roche, 30 Sep 2019 03:32 PM

0001-utils-do-not-raise-on-Django-syntax-error-in-templat.patch View (1.96 KB) Nicolas Roche, 13 Nov 2019 02:18 PM


Related issues

Related to Combo - Development #19261: permettre d'utiliser la syntaxe Django dans les template de cellule Solution déployée 06 Oct 2017

Associated revisions

Revision be570b57 (diff)
Added by Nicolas Roche 3 months ago

utils: do not raise on Django syntax error in templated_url (#34518)

Revision d0bfc764 (diff)
Added by Emmanuel Cazenave 3 months ago

Revert "utils: do not raise on Django syntax error in templated_url (#34518)"

This reverts commit be570b576236faf920fb465aad9d0674b3184989.

Original commit pushed by accident.

Revision 879be68b (diff)
Added by Nicolas Roche 28 days ago

utils: do not raise on Django syntax error in templated_url (#34518)

History

#1 Updated by Frédéric Péters 6 months ago

  • Description updated (diff)

#2 Updated by Nicolas Roche 3 months ago

  • Related to Development #19261: permettre d'utiliser la syntaxe Django dans les template de cellule added

#3 Updated by Nicolas Roche 3 months ago

Je trouve ma correction un peu moche parce que :

<a href="TEMPLATE ERROR">link</a>'

s'affiche :
https://combo.dev.publik.love/TEMPLATE%20ERROR

dans le navigateur, mais je n'ai pas trouvé mieux.

Je réalise aussi que le test que j'ai ajouté dans test_pages.py semble déjà intégré à celui dans test_public.py.

#4 Updated by Nicolas Roche 3 months ago

  • Assignee set to Nicolas Roche

#5 Updated by Frédéric Péters 3 months ago

Il faudrait uniquement modifier le comportement pour la cellule texte, pas partout (pas toucher à utils/urls.py); en gros attraper TemplateError, logguer, retourner quelque chose.

Et là, "quelque chose", c'était "TEMPLATE ERROR" évoqué dans la description du ticket, ça pourrait aussi être le template pas rendu, une combinaison des deux, l'utilisation de #, genre "# template error ({{ plop })".

#6 Updated by Nicolas Roche 3 months ago

Il faudrait uniquement modifier le comportement pour la cellule texte

comme ça je n'ai pas à toucher aux autres tests.

Donc je logue un warning :

error in templated URL ({{bof-services_url}}/truc/): syntax error

puis j'affiche ce message dans la cellule texte au dessus de la balise incriminée
# can't render href|src templated attribut

#7 Updated by Frédéric Péters 3 months ago

Pas trois lignes pour afficher une ligne de log, juste faire logging.warning("le message"); et pas attraper deux fois l'exception, seulement dans sub_variadic_url. (et on zappe ainsi l'écriture d'un message d'erreur à l'usager, qui devrait être traduit et formaté correctement).

#8 Updated by Nicolas Roche 3 months ago

  • File 0001-wcs-use-wcs-category-order-in-backoffice-submission-.patch added

Compris, juste un warning.
Au rendu, l'utilisateur verra son paramètre 'src' ou 'href' non interprété et pourra donc se faire une idée de ce qui ne va pas et doit être corrigé.

<a href="{{e-services_url}}/backoffice/...">

#10 Updated by Nicolas Roche 3 months ago

  • File deleted (0001-wcs-use-wcs-category-order-in-backoffice-submission-.patch)

#11 Updated by Frédéric Péters about 1 month ago

  • Status changed from Solution proposée to Solution validée

Tu peux juste utiliser url plutôt que refaire match.group(2), mais ok ainsi.

#12 Updated by Nicolas Roche about 1 month ago

J'ai corrigé.

#13 Updated by Thomas Noël about 1 month ago

  • Status changed from Solution proposée to Solution validée

#14 Updated by Nicolas Roche 28 days ago

  • Status changed from Solution validée to Résolu (à déployer)
commit 879be68be43bf849660c2fbd3cd9b7f50e724192
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Wed Sep 25 18:27:30 2019 +0200

    utils: do not raise on Django syntax error in templated_url (#34518)

#15 Updated by Frédéric Péters 28 days ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF