misc: add filter to detect language (#43335)

This commit is contained in:
Frédéric Péters 2020-05-26 15:21:31 +02:00
parent 1517222ab2
commit b8b9244fc8
4 changed files with 31 additions and 0 deletions

1
debian/control vendored
View File

@ -30,6 +30,7 @@ Recommends: libreoffice-writer-nogui | libreoffice-writer,
poppler-utils,
python3-dns,
python3-docutils,
python3-langdetect,
python3-magic,
python3-qrcode,
python3-xlwt

View File

@ -4,6 +4,11 @@ import datetime
import pytest
import string
try:
import langdetect
except ImportError:
langdetect = None
from django.test import override_settings
from quixote import cleanup
from wcs.qommon.substitution import CompatibilityNamesDict
@ -604,3 +609,11 @@ def test_phonenumber_fr():
assert t.render({'number': None}) == 'None'
t = Template('{{ number|decimal|phonenumber_fr }}')
assert t.render({'number': '1,33'}) == '1.33'
@pytest.mark.skipif('langdetect is None')
def test_language_detect():
t = Template('{{ plop|language_detect }}')
assert t.render({'plop': 'Good morning world'}) == 'en'
assert t.render({'plop': 'Bonjour tout le monde'}) == 'fr'
assert t.render({'plop': '2132133'}) == ''

View File

@ -32,6 +32,7 @@ deps =
Pillow
python-magic
docutils
langdetect
git+https://git.entrouvert.org/debian/django-ckeditor.git
django111: django>=1.11,<1.12
django22: django>=2.2,<2.3

View File

@ -26,6 +26,12 @@ import random
import pyproj
from pyproj import Geod
try:
import langdetect
from langdetect.lang_detect_exception import LangDetectException
except ImportError:
langdetect = None
from django import template
from django.template import defaultfilters
from django.utils import dateparse
@ -440,6 +446,16 @@ def has_role(user, role_name):
return False
@register.filter
def language_detect(value):
if langdetect is None:
return ''
try:
return langdetect.detect(str(value))
except LangDetectException:
return ''
@register.filter(is_safe=False)
def phonenumber_fr(value, separator=' '):
DROMS = ('262', '508', '590', '594', '596')