Projet

Général

Profil

Development #34518

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

Ajouté par Frédéric Péters il y a presque 5 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
03 juillet 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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')

Fichiers


Demandes liées

Lié à Combo - Development #19261: permettre d'utiliser la syntaxe Django dans les template de celluleFermé06 octobre 2017

Actions

Révisions associées

Révision be570b57 (diff)
Ajouté par Nicolas Roche il y a plus de 4 ans

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

Révision d0bfc764 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 4 ans

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

This reverts commit be570b576236faf920fb465aad9d0674b3184989.

Original commit pushed by accident.

Révision 879be68b (diff)
Ajouté par Nicolas Roche il y a plus de 4 ans

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

Historique

#1

Mis à jour par Frédéric Péters il y a presque 5 ans

  • Description mis à jour (diff)
#2

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Lié à Development #19261: permettre d'utiliser la syntaxe Django dans les template de cellule ajouté
#3

Mis à jour par Nicolas Roche il y a plus de 4 ans

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

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Assigné à mis à Nicolas Roche
#5

Mis à jour par Frédéric Péters il y a plus de 4 ans

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

Mis à jour par Nicolas Roche il y a plus de 4 ans

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

Mis à jour par Frédéric Péters il y a plus de 4 ans

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

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Fichier 0001-wcs-use-wcs-category-order-in-backoffice-submission-.patch ajouté

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

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Fichier 0001-wcs-use-wcs-category-order-in-backoffice-submission-.patch supprimé
#11

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée

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

#12

Mis à jour par Nicolas Roche il y a plus de 4 ans

J'ai corrigé.

#13

Mis à jour par Thomas Noël il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée
#14

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Statut changé de Solution validée à 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

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF