def storage_key(self): context_id = util.get_storage_key(self.context) if not context_id: context_id = util.new_storage_key(self.context) field_id = self.field.__name__ return '{}/{}.xml'.format(util.get_storage_path(self.context), field_id)
def storage_key(self): context_id = util.get_storage_key(self.context) if not context_id: context_id = util.new_storage_key(self.context) field_id = self.field.__name__ return '{}/{}{}'.format(util.get_storage_path(self.context), field_id, self.suffix)
def unlock(self): storage_path = get_storage_path(self.context) LM = LockManager(self.context) path = '{}/xml_content.xml'.format(storage_path) LM.unlock(path, token=None) return 'unlocked'
def lock(self): storage_path = get_storage_path(self.context) LM = LockManager(self.context) path = '{}/xml_content.xml'.format(storage_path) lock_info = LM.lock(path, mode='shared') return lock_info
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 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 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 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 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))