misc: strip emojis from buttons (#76405) #228
|
@ -22,6 +22,7 @@ Depends: graphviz,
|
|||
python3-django-ckeditor,
|
||||
python3-django-ratelimit,
|
||||
python3-dnspython,
|
||||
python3-emoji,
|
||||
|
||||
python3-hobo,
|
||||
python3-lasso,
|
||||
python3-lxml,
|
||||
|
|
1
setup.py
1
setup.py
|
@ -203,6 +203,7 @@ setup(
|
|||
'requests',
|
||||
'setproctitle',
|
||||
'phonenumbers',
|
||||
'emoji',
|
||||
],
|
||||
package_dir={'wcs': 'wcs'},
|
||||
packages=find_packages(),
|
||||
|
|
|
@ -4,6 +4,7 @@ import shutil
|
|||
|
||||
import mechanize
|
||||
import pytest
|
||||
from pyquery import PyQuery
|
||||
from quixote import cleanup, get_response
|
||||
from quixote.http_request import parse_query
|
||||
|
||||
|
@ -1409,3 +1410,26 @@ def test_condition_widget_no_python():
|
|||
assert widget.get_error() == "syntax error: Could not parse the remainder: '{{' from '{{'"
|
||||
|
||||
pub.site_options.set('options', 'disable-python-expressions', 'false')
|
||||
|
||||
|
||||
def test_emoji_button():
|
||||
# textual button
|
||||
form = Form(use_tokens=False)
|
||||
form.add_submit('submit', 'Submit')
|
||||
assert PyQuery(str(form.render()))('button').attr.name == 'submit'
|
||||
assert not PyQuery(str(form.render()))('button').attr['aria-label']
|
||||
assert PyQuery(str(form.render()))('button').text() == 'Submit'
|
||||
|
||||
# emoji + text
|
||||
form = Form(use_tokens=False)
|
||||
form.add_submit('submit', '✅ Submit')
|
||||
assert PyQuery(str(form.render()))('button').attr.name == 'submit'
|
||||
assert PyQuery(str(form.render()))('button').attr['aria-label'] == 'Submit'
|
||||
assert PyQuery(str(form.render()))('button').text() == '✅ Submit'
|
||||
|
||||
# single emoji (do not do this) (no empty aria-label)
|
||||
form = Form(use_tokens=False)
|
||||
form.add_submit('submit', '✅')
|
||||
fpeters
commented
Il y aurait à communiquer des bonnes pratiques sur l'utilisation des emojis dans les boutons, au moins :
Il y aurait à communiquer des bonnes pratiques sur l'utilisation des emojis dans les boutons, au moins :
* celle notée ici de ne pas juste utiliser un emoji,
* mais aussi déconseiller les emojis dont les couleurs ne fonctionnent pas sur fond sombre, cf l'exemple donné en lien dans le ticket, "Les emojis ➕ et ➖ sont peu visibles sur fond sombre."
|
||||
assert PyQuery(str(form.render()))('button').attr.name == 'submit'
|
||||
assert not PyQuery(str(form.render()))('button').attr['aria-label']
|
||||
assert PyQuery(str(form.render()))('button').text() == '✅'
|
||||
|
|
|
@ -37,6 +37,7 @@ from functools import partial
|
|||
import dns
|
||||
import dns.exception
|
||||
import dns.resolver
|
||||
import emoji
|
||||
from bleach import Cleaner
|
||||
from bleach.linkifier import LinkifyFilter
|
||||
from PIL import Image
|
||||
|
@ -208,10 +209,14 @@ class SubmitWidget(quixote.form.widget.SubmitWidget):
|
|||
def render_content(self):
|
||||
if self.name in ('cancel', 'previous', 'save-draft'):
|
||||
self.attrs['formnovalidate'] = 'formnovalidate'
|
||||
value = htmlescape(self.label) if self.label else None
|
||||
label = self.label or ''
|
||||
if label and 'aria-label' not in self.attrs:
|
||||
cleaned_label = emoji.replace_emoji(label, replace='').strip()
|
||||
tnoel
commented
J'ai dû aller voir la doc pour comprendre que le replace en fait efface les emojis. Je serais pour qu'on ajoute ici la valeur par défault replace='' dans l'appel
J'ai dû aller voir la doc pour comprendre que le replace en fait efface les emojis. Je serais pour qu'on ajoute ici la valeur par défault replace='' dans l'appel
```
cleaned_label = emoji.replace_emoji(label, replace='').strip()
```
fpeters
commented
Voilà. Voilà.
|
||||
if cleaned_label and cleaned_label != label:
|
||||
self.attrs['aria-label'] = cleaned_label
|
||||
return (
|
||||
htmltag('button', name=self.name, value=value, **self.attrs)
|
||||
+ str(self.label)
|
||||
htmltag('button', name=self.name, value=htmlescape(label), **self.attrs)
|
||||
+ str(label)
|
||||
+ htmltext('</button>')
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Le module est packagé pour bookworm : https://packages.debian.org/bookworm/python3-emoji et le paquet s'installe et fonctionne sur buster. J'ai hésité à faire sans et juste utiliser une regex un peu large ou moche mais comme c'était disponible, autant l'exploiter.
Aussi, ça permettrait ailleurs de fournir un filtre de remplacement (et/ou suppression) des emojis, qui pourrait être utilisé lors d'envoi vers des systèmes qui plantent sur ces caractères (par exemple https://dev.entrouvert.org/issues/75166, ou https://dev.entrouvert.org/issues/54028 précédemment).