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 removal_handler(obj, event):
    """ Remove related XML content if a Dexterity content object
        is being deleted.
    """

    if not util.is_xml_content(event.object):
        return

    handle = getUtility(IConnectorHandle).get_handle()
    storage_dir = util.get_storage_path(event.object)
    storage_parent_dir = util.get_storage_path_parent(event.object)
    if handle.exists(storage_dir):
        handle.removedir(storage_dir, False, True)
    if handle.exists(storage_parent_dir) and handle.isdirempty(storage_parent_dir):
        handle.removedir(storage_parent_dir, False, True)
def removal_handler(obj, event):
    """ Remove related XML content if a Dexterity content object
        is being deleted.
    """

    if not util.is_xml_content(event.object):
        return

    handle = getUtility(IWebdavHandle).webdav_handle()
    storage_dir = util.get_storage_path(event.object)
    storage_parent_dir = util.get_storage_path_parent(event.object)
    if handle.exists(storage_dir):
        handle.removedir(storage_dir, False, True)
    if handle.exists(storage_parent_dir) and handle.isdirempty(storage_parent_dir):
        handle.removedir(storage_parent_dir, False, True)
    def info(self):

        if not util.is_xml_content(self.context):
            return

        storage_path = get_storage_path(self.context)
        path = '{}/xml_content.xml'.format(storage_path)
        LM = LockManager(self.context)

        try:
            lock_info = LM.get_lock(path)
        except Exception as e:
            lock_info = None

        return dict(lock_info=lock_info,
                    storage_key=util.get_storage_key(self.context),
                    storage_path=util.get_storage_path(self.context))
Exemple #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 version_handler(obj, event):
    """ Copy XML resources to new object """

    # Is this Dexterity content object related to XML resources?
    if not util.is_xml_content(event.object):
        return

    registry = getUtility(IRegistry)
    settings = registry.forInterface(IWebdavSettings)
    if not settings.versioning_enabled:
        return

    context = event.object
    handle = getUtility(IWebdavHandle).webdav_handle()
    storage_path = util.get_storage_path(context)

    for field in get_all_xml_fields(context):
        content = xml_get(context, field.getName())
        print field
        print content
def version_handler(obj, event):
    """ Copy XML resources to new object """

    # Is this Dexterity content object related to XML resources?
    if not util.is_xml_content(event.object):
        return

    return
    registry = getUtility(IRegistry)
    settings = registry.forInterface(IWebdavSettings)
    if not settings.versioning_enabled:
        return

    context = event.object
    handle = getUtility(IWebdavHandle).webdav_handle()
    storage_path = util.get_storage_path(context)

    for field in get_all_xml_fields(context):
        content = xml_get(context, field.getName())
        print field
        print content
def copied_handler(obj, event):
    """ Copy XML resources to new object """

    # original and copied Dexterity object
    copied = event.object
    original = event.original

    # Is this Dexterity content object related to XML resources?
    if not util.is_xml_content(copied):
        return

    # create a new storage id
    if util.get_storage_key(original) == util.get_storage_key(copied):
        util.new_storage_key(copied)

        # an copy over XML content from original content object
        handle = getUtility(IConnectorHandle).get_handle()
        storage_dir_original = util.get_storage_path(original)
        storage_dir_copied = util.get_storage_path(copied)
        storage_dir_copied_parent = util.get_storage_path_parent(copied)
        handle.makedir(storage_dir_copied_parent, True, True)
        handle.copydir(storage_dir_original, storage_dir_copied)
def copied_handler(obj, event):
    """ Copy XML resources to new object """

    # original and copied Dexterity object
    copied = event.object
    original = event.original

    # Is this Dexterity content object related to XML resources?
    if not util.is_xml_content(copied):
        return

    # create a new storage id
    if util.get_storage_key(original) == util.get_storage_key(copied):
        util.new_storage_key(copied)

        # an copy over XML content from original content object
        handle = getUtility(IWebdavHandle).webdav_handle()
        storage_dir_original = util.get_storage_path(original)
        storage_dir_copied = util.get_storage_path(copied)
        storage_dir_copied_parent = util.get_storage_path_parent(copied)
        handle.makedir(storage_dir_copied_parent, True, True)
        handle.copydir(storage_dir_original, storage_dir_copied)
 def info(self):
     if not util.is_xml_content(self.context):
         return
     return dict(storage_key=util.get_storage_key(self.context),
                 storage_path=util.get_storage_path(self.context))
 def info(self):
     if not util.is_xml_content(self.context):
         return
     return dict(storage_key=util.get_storage_key(self.context),
                 storage_path=util.get_storage_path(self.context))