Projet

Général

Profil

Development #45780

filtres |removeprefix et |removesuffix

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
07 août 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

ajoutés dans wcs dans #43230.


Fichiers

Révisions associées

Révision 017b20e7 (diff)
Ajouté par Nicolas Roche il y a plus de 3 ans

templatetags: add removeprefix and removesuffix filters (#45780)

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

pep8: put 2 lines between function definitions (#45780)

Historique

#1

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

#2

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

Ce n'est que très mal suivi dans ce fichier mais pour tes ajouts mets deux lignes blanches entre les fonctions.

Je vois que c'est ainsi dans w.c.s. mais je ne vois pas le cas où c'est utile de laisser prefix/suffix de côté et faire ainsi un retrait de "None" si jamais c'est devant/derrière.

#3

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

je ne vois pas le cas où c'est utile de laisser prefix/suffix de côté et faire ainsi un retrait de "None"

Tu me suggères d'ajouter ce test,

tmpl = Template('{{ foo|removeprefix }}')  # removeprefix is None
assert tmpl.render(Context({'foo': 'None'})) == ''

où l'on voit que l'on retire la chaîne 'None' parce que :
>>> force_text(None)
'None'

Pour moi il s'agirait d'un bug.
En cherchant à comprendre, je suis aussi tombé sur ces 2 cas qui devraient à mon avis également retourner respectivement 'None' et '0' :

tmpl = Template('{{ foo|removeprefix }}')
assert tmpl.render(Context({'foo': None})) == ''
assert tmpl.render(Context({'foo': 0})) == ''

Si ces bugs sont avérés, il faudrait peut-être aussi corriger le filtre "strip" (qui vient aussi de wcs : #37270)

assert tmpl.render(Context({'foo': None})) == ''

#4

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

Tu me suggères d'ajouter ce test,

Non, je suggère de virer ces =None parce que je n'en vois pas le sens.

#6

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

Non, je suggère de virer ces =None parce que je n'en vois pas le sens.

Ce dont je ne vois pas le sens c'est l'appel à |removeprefix sans spécifier quoi supprimer. Mettre prefix='' amènera ma même objection.

#7

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

A priori, c'est pour anticiper/tester le cas où l'utilisateur oublie de préciser l'argument.

>           raise TemplateSyntaxError("%s requires %d arguments, %d provided" %
                                      (name, alen - dlen, plen))
E           django.template.exceptions.TemplateSyntaxError: removeprefix requires 2 arguments, 1 provided

/tmp/tox-nroche/combo/py3-django22-pg/lib/python3.8/site-packages/django/template/base.py:717: TemplateSyntaxError

#8

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

L'utilisateur ici c'est un développeur et ça va le faire passer à côté de son erreur.

#10

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

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

Sérieusement inutile de tester le comportement sans paramètre, ça va juste emmerder quand le texte variera un peu dans une autre version de django. (+ ça ne dit rien du comportement réel dans combo).

Mais ack ainsi quand même.

#11

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

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

Poussés moi-même.

commit ba3451e7236273127cfc5b9135e10e9fb6c39109
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Mon Aug 10 11:57:15 2020 +0200

    pep8: put 2 lines between function definitions (#45780)

commit 017b20e7f8ed26d1d951ac2d89ca3dbdc3f3d0c9
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Fri Aug 7 17:00:06 2020 +0200

    templatetags: add removeprefix and removesuffix filters (#45780)
#12

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

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

Formats disponibles : Atom PDF