New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problème de référencement d'un pseudo dans un MP #2788
Comments
Il semble que l'argument "La source" dans l'URL soit échappé trois fois au lieu d'une fois ou de deux (d'après le 1er post de @firm1). En effet: >>> from urllib.parse import quote
>>> quote('La source')
'La%20source'
>>> quote(quote('La source'))
'La%2520source'
>>> quote(quote(quote('La source')))
'La%252520source' EDIT: D'après @firm1 le lien devrait être |
J'ai regardé le code et il semble que Pour régler le problème, il suffit de supprimer le urlquote autour du nom d'utilisateur dans la méthode @firm1 c'est toi qui a ajouté ces lignes (urlquote dans get_absolute_url et l'import) : 5579863 |
l'ulrquote est là pour ca : #2301 |
En tout cas chez moi (tout à jour), cet urlquote est inutile pour corriger #2301 et ne fonctionne pas ! (voir message posté sur le sujet #2301 en question) En effet ce n'est pas cette fonction là qui est appelée lors du message.author.get_absolute_url mais celle de Django dans le template ! A priori il faut mettre le urlquote dans le settings.py au niveau de: ABSOLUTE_URL_OVERRIDES = {
'auth.user': lambda u: '/membres/voir/{0}/'.format(u.username.encode('utf-8'))
} Par contre avec le MP il y a un problème supplémentaire : le parseur Markdown échappe à nouveau l'URL je crois… Je vais regarder et proposer une PR pour corriger tout ça si possible. |
En résumé, actuellement:
>>> from zds.utils.templatetags.emarkdown import render_markdown
>>> render_markdown('[La source](http://zds.com/voir/La source)')
'<p><a href="http://zds.com/voir/La%20source">La source</a></p>'
>>> render_markdown('[La source](http://zds.com/voir/La%20source)')
'<p><a href="http://zds.com/voir/La%2520source">La source</a></p>'
>>> render_markdown('[La source](http://zds.com/voir/La%2520source)')
'<p><a href="http://zds.com/voir/La%252520source">La source</a></p>' Je pense qu'il serait bien de virer le urlunquote mais actuellement c'est pas possible à cause du parseur markdown. En effet il reçoit comme code (truc du genre): [La source](http://zds.com/voir/La%20source) souhaite vous proposer… mais il touche à l'URL (contrairement au parseur markdown par défaut) et donc échappe à nouveau… Est-ce un bug du parseur ? Doit-il échappé automatiquement ? PS : J'ai fait un commit sur un fork https://github.com/yapper-git/zds-site/commit/70afc9a6662eb317f101d14dcbc7a4d21323dcfb |
Il y a actuellement d'autres problèmes du fait que le parseur Markdown soit utilisé pour envoyer ces MP et que le markdown a ses propres caractères qu'il faudrait échapper… Par exemple si le nom d'utilisateur contient Par exemple si le nom d'utilisateur est >>> from zds.utils.templatetags.emarkdown import render_markdown
>>> render_markdown('[Micro$oft](http://zds.com/profil/Micro$oft)')
'<p>[Micro<span>$oft](http://zds.com/profil/Micro$</span>oft)</p>' On voit qu'il n'y a aucune balise Il faudrait une fonction qui permette d'échapper (de protéger) le texte d'un lien (ajouter un backslash suffirai a priori devant Bref dans tous les cas on ne peut pas trouvé de solution simple pour que ça marche à tous les coups j'ai l'impression. |
Donc, on est ok pour le "double parsage" ... L'erreur markdown est à mon avis impossible à régler, me trompe-je ? |
Ca a été mergé mais le ticket est pas fermé. Est-ce que tout est bien corrigé ici ? |
Up ? |
ping @pierre-24 |
J'ai testé ici, à priori on est bon :) |
Source:La source
Le lien vers l'url du membre est censé être
/membres/voir/La%2520source/
et non/membres/voir/La%252520source/
The text was updated successfully, but these errors were encountered: