def test_cycles(self): # Python 2.4 does not support recursive comparisons to the # same extent as Python 2.3, so we test these recursive # structures by comparing the standard pickles of the original # and pickled/unpickled copy. This works for things like # lists and tuples, but could easily break for dictionaries. l = [1, 2, 3] l.append(l) xml = dumps(l) newl = loads(xml) p1 = pickle.dumps(l) p2 = pickle.dumps(newl) self.assertEqual(p1, p2) t = l, l l.append(t) xml = dumps(l) newl = loads(xml) p1 = pickle.dumps(l) p2 = pickle.dumps(newl) self.assertEqual(p1, p2)
def importAllData(self, xml_str): """get data file for all objects""" from pprint import pprint print "#" * 80 data_structure = loads(xml_str) print 'objects' pprint(data_structure['objects']) print 'conns' pprint(data_structure['conns']) print "#" * 80 for obj in data_structure['objects']: print "Obj: ", obj['ikName'] print "myFactory: ", obj['meta']['myFactory'] o2 = zapi.createObject(obj['meta']['myFactory'], **obj) print o2 o2.importAllData(obj) IBrwsOverview(o2).setTitle(obj['ikName']) o2.__post_init__() c2 = o2.getFirstContainer() print c2 print "len1: ", len(c2) c2[o2.objectID] = o2 print "len2: ", len(c2) #print data_structure print "conn" my_catalog = zapi.getUtility(ICatalog) for conn in data_structure['conns']: #(('obj1Id'. 'obj1AttrName'), ('obj2Id'. 'obj2AttrName')) ((obj1Id, obj1AttrName), (obj2Id, obj2AttrName)) = conn print "()(): ", ((obj1Id, obj1AttrName), (obj2Id, obj2AttrName)) res1 = my_catalog.searchResults(oid_index=obj1Id) res2 = my_catalog.searchResults(oid_index=obj2Id) if len(res1) > 0 and len(res2) > 0: obj1 = iter(res1).next() obj2 = iter(res2).next() print "obj1: ", obj1 print "obj2: ", obj2 attr1 = getattr(obj1, obj1AttrName, None) if attr1 is not None: if type(attr1) is list: attr1.append(obj2) else: attr1 = obj2 obj1._p_changed = 1 obj2._p_changed = 1 # for relation in # res = my_catalog.searchResults(oid_index=arg_oid) # if len(res) > 0: # return iter(res).next().getDcTitle() # return True
def objmq_subscribe(self, data): """inject obj from mq.""" #logger.info(u"inject obj from mq. data:%s" % data) # cut first line with message id python_pickle = loads(data[1 + data.find("\n"):]) my_catalog = zapi.getUtility(ICatalog) if python_pickle['cmd'].lower() == "connect": if self.context.objectID == \ python_pickle['header']['to_oid']: self.context.appendSlave(\ python_pickle['header'], python_pickle['nodename']) return u"connected" else: return u"unknown system" elif python_pickle['cmd'].lower() == "connected": if self.context.objectID == \ python_pickle['header']['to_oid']: self.context.status2Master = u"connected" #self.context.lastSeenMaster = datetime.now(berlinTZ) else: return u"unknown system" elif python_pickle['cmd'].lower() == "ping": if self.context.objectID == \ python_pickle['header']['to_oid']: #self.context.sendPong(python_pickle['header']) self.context.receivedPing(python_pickle['header']) #self.context.lastSeenMaster = datetime.now(berlinTZ) else: return u"unknown system" elif python_pickle['cmd'].lower() == "pong": if self.context.objectID == \ python_pickle['header']['to_oid']: #self.context.lastSeenMaster = datetime.now(berlinTZ) self.context.receivedPong(python_pickle['header']) else: return u"unknown system" elif python_pickle['cmd'].lower() == "obj_added": if self.context.objectID == \ python_pickle['header']['to_oid']: #self.context.lastSeenMaster = datetime.now(berlinTZ) self.context.addObject(python_pickle['header'], python_pickle['oldparent'], python_pickle['newparent'], python_pickle['obj']) else: return u"unknown system" elif python_pickle['cmd'].lower() == "obj_removed": if self.context.objectID == \ python_pickle['header']['to_oid']: #self.context.lastSeenMaster = datetime.now(berlinTZ) self.context.removeObject(python_pickle['header'], python_pickle['oldparent'], python_pickle['newparent'], python_pickle['objectOid']) else: return u"unknown system" elif python_pickle['cmd'].lower() == "obj_modified": if self.context.objectID == \ python_pickle['header']['to_oid']: #self.context.lastSeenMaster = datetime.now(berlinTZ) self.context.modifyObject(python_pickle['header'], python_pickle['obj']) else: return u"unknown system" elif python_pickle['cmd'].lower() == "obj_moved": if self.context.objectID == \ python_pickle['header']['to_oid']: #self.context.lastSeenMaster = datetime.now(berlinTZ) self.context.moveObject(python_pickle['header'], python_pickle['oldparent'], python_pickle['newparent'], python_pickle['objectOid']) else: return u"unknown system" else: return u"unknown command" return u"permission denied"
def __test(self, v, expected_xml=None): xml = dumps(v) if expected_xml: self.assertEqual(xml, expected_xml) newv = loads(xml) self.assertEqual(newv, v)
def test_False(self): self.__test(False) self.assertEqual(loads('<pickle><false/></pickle>'), False)
def test_True(self): self.__test(True) self.assertEqual(loads('<pickle><true/></pickle>'), True)