diff --git a/product/ERP5/tests/utils.py b/product/ERP5/tests/utils.py index 7f4360b0c909ddc7625e5a7ff29c9dc304b8d4b9..4df2b74cda0263be2777600b76ec403e7f29e53f 100644 --- a/product/ERP5/tests/utils.py +++ b/product/ERP5/tests/utils.py @@ -30,6 +30,9 @@ import tarfile import xml.parsers.expat import xml.dom.minidom from urllib import url2pathname +from ZODB.DemoStorage import DemoStorage +from ZODB import DB +from OFS.XMLExportImport import importXML if int(os.environ.get('erp5_report_new_simulation_failures') or 0): newSimulationExpectedFailure = lambda test: test @@ -98,64 +101,25 @@ class BusinessTemplateInfoBase: self.allowed_content_types[portal_type].append(item.childNodes[0].data) def setUpActions(self): - class Handler: - cur_key = None - old_tag = None - cur_tag = None - key_val = None - value_val = None - - def __init__(self): - self.data = {} - - def start(self, name, attrs): - if not name in ('item', 'key', 'value', 'string', 'int', 'float'): - return - self.old_tag = self.cur_tag - self.cur_tag = name - if name=='key': - self.cur_key = name - - def end(self, name): - self.cur_tag = None - if name=='item': - self.data[self.key_val] = self.value_val - self.cur_key = None - self.key_val = None - self.value_val = None - - def char(self, data): - if self.cur_tag in ('string', 'int', 'float'): - f = getattr(self, 'to%s' % self.cur_tag) - if self.old_tag=='key': - self.key_val = f(data) - elif self.old_tag=='value': - self.value_val = f(data) - - def tostring(self, value): - return str(value) - - def toint(self, value): - return int(value) - - def tofloat(self, value): - return float(value) - - def parse(source): - handler = Handler() - p = xml.parsers.expat.ParserCreate() - p.StartElementHandler = handler.start - p.EndElementHandler = handler.end - p.CharacterDataHandler = handler.char - p.Parse(source) - return handler.data + + def parse(file_path): + db = DB(DemoStorage()) + _connection = db.open() + action_information = importXML(_connection, file_path) + action_information.__repr__() + for key, value in action_information.__dict__.iteritems(): + if value not in (None, "") and key in ('action', 'condition') : + setattr(action_information, key, value.text) + actions = action_information.__dict__.copy() + db.close() + return actions name = '%s/ActionTemplateItem/portal_types/' % self.getPrefix() for i in self.findFileInfosByName(startswith=name, endswith='.xml'): portal_type = url2pathname(self.getFileInfoName(i).split('/')[-2]) if not portal_type in self.actions: self.actions[portal_type] = [] - data = parse(self.readFileInfo(i)) + data = parse(i) self.actions[portal_type].append(data)