# -*- coding: utf-8 -*- #from zLOG import LOG, INFO #import xml_marshaller from lxml import etree parser = etree.XMLParser(remove_blank_text=True) class VifibConduit: """This conduit is used to synchronize tiosafe packing list and erp5""" def __init__(self): pass def convertToXml(self, xml): """ if xml is a string, convert it in a node """ if xml is None: return None if isinstance(xml, (str, unicode)): if isinstance(xml, unicode): xml = xml.encode('utf-8') #LOG('VifibCounduit', INFO, '%s' % xml, error=True) xml = etree.XML(xml, parser=parser) #if we have the xml from the node erp5 we just take the subnode if xml.xpath('local-name()') == 'erp5': xml = xml[0] return xml def addNode(self, object=None, xml=None): """ This method create an object """ #LOG('VifibConduit-check-3', INFO, '%s' % xml, error=True) xml = self.convertToXml(xml) tags_text = {} #fill up a dict with (tag - text) pairs for element in xml.iter(): tags_text[element.tag] = element.text #retrieve the packing list module sale_packing_list_portal_type = 'Sale Packing List' sale_packing_list_module = \ object.getPortalObject().getDefaultModule(sale_packing_list_portal_type) #We create the new packing list usage_report_sale_packing_list_document = \ sale_packing_list_module.newContent( portal_type = 'Sale Packing List', ) usage_report_sale_packing_list_document.confirm() usage_report_sale_packing_list_document.start() #Note inverted time and date---remember to correct in slapreport usage_report_sale_packing_list_document.edit( start_date=tags_text['time'], start_time=tags_text['date'], memory=tags_text['Memory'], cpu_time=tags_text['CpuTime'], cpu_percent=tags_text['CPU'], rss=tags_text['RSS'], ) return usage_report_sale_packing_list_document #software_release_module_id = object.getDefaultModuleId(portal_type = 'Sale Packing List') #software_release_module_id = self.portal.restrictedTraverse(software_release_module_id) #software_release = software_release_module.newContent(portal_type = 'Sale Packing List')