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))
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))