Example #1
0
def _SearchableText(obj):
    """ Index XML """

    if not util.is_xml_content(obj):
        return

    # Throw all XML content of all fields into the huge SearchableText bag
    result = []
    for xml_field in [
            field for field in get_all_fields(obj).values()
            if isinstance(field, XMLText)
    ]:
        adapter = XMLFieldDataManager(context=obj, field=xml_field)
        xml = adapter.get()
        if xml:
            root = lxml.etree.fromstring(xml)
            for node in root.iter():
                if node.text:
                    text = node.text.strip()
                    if text:
                        if not isinstance(text, unicode):
                            text = unicode(text, 'utf8')
                        result.append(text)

    if result:
        return u' '.join(result)
    def test_xmldocument(self):
        fields = get_all_fields(self.doc)
        self.assertEqual('xml_content' in fields, True)
        self.assertEqual('xml_xpath' in fields, True)
        self.assertEqual('xml_binary' in fields, True)
        self.assertEqual('xml_image' in fields, True)

        xml_fields = get_all_xml_fields(self.doc)
        field_names = set(f.getName() for f in xml_fields)
        self.assertEqual('xml_binary' in field_names, True)
        self.assertEqual('xml_content' in field_names, True)
        self.assertEqual('xml_image' in field_names, True)
    def test_xmldocument(self):
        fields = get_all_fields(self.doc)
        self.assertEqual('xml_content' in fields, True)
        self.assertEqual('xml_xpath' in fields, True)
        self.assertEqual('xml_binary' in fields, True)
        self.assertEqual('xml_image' in fields, True)

        xml_fields = get_all_xml_fields(self.doc)
        field_names = set(f.getName() for f in xml_fields)
        self.assertEqual('xml_binary' in field_names, True)
        self.assertEqual('xml_content' in field_names, True)
        self.assertEqual('xml_image' in field_names, True)
Example #4
0
def datamanager_for_field(context, fieldname, value=_marker):

    fields = get_all_fields(context)
    field = fields.get(fieldname)
    if not field:
        raise ValueError('No such field "{}"'.format(fieldname))

    if value is not _marker:
        field.validate(value)

    if isinstance(field, XMLText):
        dm_cls = XMLFieldDataManager
    elif isinstance(field, XMLBinary):
        dm_cls = XMLBinaryDataManager
    elif isinstance(field, XMLImage):
        dm_cls = XMLImageDataManager
    return dm_cls(context=context, field=field)
Example #5
0
def SearchableText(obj):
    """ Index XML """

    if not util.is_xml_content(obj):
        return

    # Throw all XML content of all fields into the huge SearchableText bag
    for xml_field in [field for field in get_all_fields(obj).values() if isinstance(field, XMLText)]:
        adapter = XMLFieldDataManager(context=obj, field=xml_field)
        xml = adapter.get()
        if xml:
            root = lxml.etree.fromstring(xml)
            result = []
            for node in root.iter():
                text = node.text.strip()
                if text:
                    result.append(text)
            return unicode(' '.join(result), 'utf-8')
def datamanager_for_field(context, fieldname, value=_marker):

    fields = get_all_fields(context)
    field = fields.get(fieldname)
    if not field:
        raise ValueError('No such field "{}"'.format(fieldname))

    if value is not _marker:
        field.validate(value)

    if isinstance(field, XMLText):
        dm_cls = XMLFieldDataManager
    elif isinstance(field, XMLBinary):
        dm_cls = XMLBinaryDataManager
    elif isinstance(field, XMLImage):
        dm_cls = XMLImageDataManager
    elif isinstance(field, XMLXPath):
        dm_cls = XMLXPathDataManager
    else:
        raise ValueError('No datamanager found ({})'.format(fieldname))
    return dm_cls(context=context, field=field)
Example #7
0
 def test_xmldocument(self):
     fields = get_all_fields(self.doc)
     self.assertEqual('xml_content' in fields, True)
     self.assertEqual('xml_xpath' in fields, True)
     self.assertEqual('xml_binary' in fields, True)
     self.assertEqual('xml_image' in fields, True)