Development #15423
dans les URLField, accepter des URL à variables
0%
Description
JsonCell, LinkCell, FeedCell, etc. il y a un appel à get_templated_url() pour gérer la présence de variables dans l'URL (ex: [foobar_url]/plop/) mais comme c'est un URLField le widget associé se trouve vérifier le format de données et râle en demandant une URL valide.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 5 ans
- Dupliqué par Bug #24402: cellule json : possibilité de placer un gabarit comme URL ajouté
Mis à jour par Frédéric Péters il y a presque 5 ans
- Fichier 0001-misc-allow-template-URLs-in-feed-and-json-cells-1542.patch 0001-misc-allow-template-URLs-in-feed-and-json-cells-1542.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
C'est en fait plutôt pas terrible parce qu'il y a validation au niveau du formulaire (forms.fields) mais il y a re-validation pour la même chose ensuite, au niveau du modèle.
Bref, patch qui passe FeedCell et JsonCell à CharField pour le champ URL, mais qui lui adjoint un champ spécifique, qui accepte un chaine contenant {{ ou {% sans rien dire, et vérifie si c'est bien une URL sinon.
Je ne fais pas passer le LinkCell par ce champ parce qu'on a des LinkCell qui peuvent contenir une URL avec uniquement le chemin, genre /login/.
En passant ça ajoute manager_form_factory_kwargs qui pourra sans doute servir à d'autres occasions.
Mis à jour par Thomas Noël il y a presque 5 ans
Je ne comprends pas les super dans le to_python de TemplatableURLField, parce que finalement ça ne va jamais appeler celui de forms.URLField ...?
Et je ne comprends pas le CharField dans les modèles : ne voudrait-on pas justement utiliser TemplatableURLField ?
Mis à jour par Frédéric Péters il y a presque 5 ans
Je ne comprends pas les super dans le to_python de TemplatableURLField, parce que finalement ça ne va jamais appeler celui de forms.URLField ...?
Si, en dernière ligne, return super(forms.URLField, self).to_python(value)
, une fois vérifié qu'il n'y a pas de {{ ou {%.
Et je ne comprends pas le CharField dans les modèles : ne voudrait-on pas justement utiliser TemplatableURLField ?
TemplatableURLField est un forms.Field pas un models.Field (cela dit sans vérifier le vrai nom des classes).
Mis à jour par Thomas Noël il y a presque 5 ans
Frédéric Péters a écrit :
Je ne comprends pas les super dans le to_python de TemplatableURLField, parce que finalement ça ne va jamais appeler celui de forms.URLField ...?
Si, en dernière ligne,
return super(forms.URLField, self).to_python(value)
, une fois vérifié qu'il n'y a pas de {{ ou {%.
Mais heu... c'est pas plutôt super(TemplatableURLField, self).to_python(value)
que tu veux faire ?
Et je ne comprends pas le CharField dans les modèles : ne voudrait-on pas justement utiliser TemplatableURLField ?
TemplatableURLField est un forms.Field pas un models.Field (cela dit sans vérifier le vrai nom des classes).
Arf. Oublie moi. Et donc pour le coup, ça serait pas plus simple de faire un TemplatableURLField(django.db.models.URLField) qui ne jouera que sur le validateur ?
Mis à jour par Thomas Noël il y a presque 5 ans
Thomas Noël a écrit :
(...) Et donc pour le coup, ça serait pas plus simple de faire un TemplatableURLField(django.db.models.URLField) qui ne jouera que sur le validateur ?
Fatigue, je viens de relire ton premier commentaire, il faut de toute façon avoir un forms.URLField, bref, re-oublie moi sur ça.
Mis à jour par Frédéric Péters il y a presque 5 ans
- Fichier 0001-misc-allow-template-URLs-in-feed-and-json-cells-1542.patch 0001-misc-allow-template-URLs-in-feed-and-json-cells-1542.patch ajouté
Tout à fait.
Mis à jour par Thomas Noël il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit a2fc38261cce7619089cbb79c24c5b2082a42fbe Author: Frédéric Péters <fpeters@entrouvert.com> Date: Fri Jul 5 13:58:01 2019 +0200 admin: format file types on a single line (#34561)
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: allow template URLs in feed and json cells (#15423)