diff --git a/src/collective/dms/basecontent/source.py b/src/collective/dms/basecontent/source.py index 8de8b44..c8b1bb1 100644 --- a/src/collective/dms/basecontent/source.py +++ b/src/collective/dms/basecontent/source.py @@ -1,3 +1,6 @@ +import re +import unicodedata + from five import grok from zope.schema.interfaces import IVocabularyFactory from plone.principalsource.source import PrincipalSourceBinder, PrincipalSource @@ -36,6 +39,11 @@ class PrincipalSource(PrincipalSource): elif self.groups: return self.searchGroups + def search(self, query_string): + query_string = unicodedata.normalize('NFKD', query_string).encode('ascii', 'ignore').decode('ascii') + query_string = re.sub('[^\w\s-]', '', query_string).strip().lower() + return super(PrincipalSource, self).search(query_string) + class PrincipalSourceBinder(PrincipalSourceBinder):