Exemplo n.º 1
0
def testMemberData(self, memberdata, criteria, exact_match=False):
    """Patch the method that test if a memberdata matches the search criteria
       for making it normalization of unicode strings aware.
    """
    for (key, value) in criteria.items():
        testvalue = memberdata.get(key, None)
        if testvalue is None:
            return False

        if isStringType(testvalue):
            testvalue = safe_unicode(testvalue.lower())
        if isStringType(value):
            value = safe_unicode(value.lower())

        if exact_match:
            if value != testvalue:
                return False
        else:
            try:
                if value not in testvalue and \
                   unicodedata.normalize('NFKD', value).encode('ASCII', 'ignore') not in unicodedata.normalize('NFKD', testvalue).encode('ASCII', 'ignore'):
                    return False
            except TypeError:
                # Fall back to exact match if we can check for
                # sub-component
                if value != testvalue:
                    return False

    return True
Exemplo n.º 2
0
    def testMemberData(self, memberdata, criteria, exact_match=False):
        """Test if a memberdata matches the search criteria.
        """
        for (key, value) in criteria.items():
            testvalue = memberdata.get(key, None)
            if testvalue is None:
                return False

            if isStringType(testvalue):
                testvalue = safe_unicode(testvalue.lower())
            if isStringType(value):
                value = safe_unicode(value.lower())

            if exact_match:
                if value != testvalue:
                    return False
            else:
                try:
                    if value not in testvalue:
                        return False
                except TypeError:
                    # Fall back to exact match if we can check for
                    # sub-component
                    if value != testvalue:
                        return False

        return True
Exemplo n.º 3
0
    def testMemberData(self, memberdata, criteria, exact_match=False):
        """Test if a memberdata matches the search criteria.
        """
        for (key, value) in criteria.items():
            testvalue = memberdata.get(key, None)
            if testvalue is None:
                return False

            if isStringType(testvalue):
                testvalue = safe_unicode(testvalue.lower())
            if isStringType(value):
                value = safe_unicode(value.lower())

            if exact_match:
                if value != testvalue:
                    return False
            else:
                try:
                    if value not in testvalue:
                        return False
                except TypeError:
                    # Fall back to exact match if we can check for
                    # sub-component
                    if value != testvalue:
                        return False

        return True
Exemplo n.º 4
0
def testMemberData(self, memberdata, criteria, exact_match=False):
    """Patch the method that test if a memberdata matches the search criteria
       for making it normalization of unicode strings aware.
    """
    for (key, value) in criteria.items():
        testvalue = memberdata.get(key, None)
        if testvalue is None:
            return False

        if isStringType(testvalue):
            testvalue = safe_unicode(testvalue.lower())
        if isStringType(value):
            value = safe_unicode(value.lower())

        if exact_match:
            if value != testvalue:
                return False
        else:
            try:
                if value not in testvalue and \
                   unicodedata.normalize('NFKD', value).encode('ASCII', 'ignore') not in unicodedata.normalize('NFKD', testvalue).encode('ASCII', 'ignore'):
                    return False
            except TypeError:
                # Fall back to exact match if we can check for
                # sub-component
                if value != testvalue:
                    return False

    return True
Exemplo n.º 5
0
def _unicodify_structure(value, charset=_marker):
    """ Convert value to unicode.
    """
    if charset is _marker:
        ptool = getUtility(IPropertiesTool)
        charset = ptool.getProperty('default_charset', None)

    if isinstance(value, str):
        return charset and safe_unicode(value, charset) or safe_unicode(value)
    if isinstance(value, list):
        return [_unicodify_structure(val, charset) for val in value]
    if isinstance(value, tuple):
        return tuple([_unicodify_structure(entry, charset) for entry in value])
    if isinstance(value, dict):
        for key, val in value.items():
            value[key] = _unicodify_structure(val, charset)
        return value
    return value
Exemplo n.º 6
0
def _unicodify_structure(value, charset=_marker):
    """ Convert value to unicode.
    """
    if charset is _marker:
        ptool = getUtility(IPropertiesTool)
        charset = ptool.getProperty('default_charset', None)

    if isinstance(value, str):
        return charset and safe_unicode(value, charset) or safe_unicode(value)
    if isinstance(value, list):
        return [_unicodify_structure(val, charset) for val in value]
    if isinstance(value, tuple):
        return tuple([_unicodify_structure(entry, charset) for entry in value])
    if isinstance(value, dict):
        for key, val in value.items():
            value[key] = _unicodify_structure(val, charset)
        return value
    return value
Exemplo n.º 7
0
def SearchableText(obj, text=False):
    subjList = []
    creatorList = []

    for sub in obj.subject:
        subjList.append(sub)
    subjects = ','.join(subjList)

    for creator in obj.creators:
        creatorList.append(creator)
    creators = ','.join(creatorList)

    return u' '.join((
        safe_unicode(obj.id),
        safe_unicode(obj.title) or u'',
        safe_unicode(obj.description) or u'',
        safe_unicode(subjects) or u'',
        safe_unicode(creators) or u'',
    ))
Exemplo n.º 8
0
def SearchableText(obj, text=False):
    subjList = []
    creatorList = []

    for sub in obj.subject:
        subjList.append(sub)
    subjects = ','.join(subjList)

    for creator in obj.creators:
        creatorList.append(creator)
    creators = ','.join(creatorList)

    return u' '.join((
        safe_unicode(obj.id),
        safe_unicode(obj.title) or u'',
        safe_unicode(obj.description) or u'',
        safe_unicode(subjects) or u'',
        safe_unicode(creators) or u'',
    ))