def set_uuid_for(self, node, override=False, recursiv=False): if IUUIDAware.providedBy(node): if override or not node.uuid: node.uuid = self.uuid_factory() if recursiv: for k, v in node.items(): self.set_uuid_for(v, override, recursiv) if IUUIDAware.providedBy(v) and override: if IOrdered.providedBy(v): # XXX: improve node.storage.alter_key(k, v.name) else: del node[k] node[v.name] = v
def set_uuid_for(self, node, override=False, recursiv=False): if IUUIDAware.providedBy(node): if override or not node.uuid: node.uuid = uuid.uuid4() if recursiv: for k, v in node.items(): self.set_uuid_for(v, override, recursiv) if IUUIDAware.providedBy(v) and override: if IOrdered.providedBy(v): # XXX: improve node.storage.alter_key(k, v.name) else: del node[k] node[v.name] = v
def set_uuid_for(self, node, override=False, recursiv=False): if IUUIDAware.providedBy(node): if override or not node.uuid: node.uuid = uuid.uuid4() if recursiv: for child in node.values(): self.set_uuid_for(child, override, recursiv)
def display(self): referencable = self.request.params['referencable'] referencable = [ it for it in self.request.params['referencable'].split(',') if it ] return (IUUIDAware.providedBy(self.model) and self.model.node_info_name in referencable)
def display(self): referencable = self.request.params['referencable'] referencable = [ it for it in self.request.params['referencable'].split(',') if it ] return ( IUUIDAware.providedBy(self.model) and self.model.node_info_name in referencable )
def enabled(self): if IUUIDAware.providedBy(self.model): return str(self.model.uuid) in self.selected_uids return False
def get_uid(node, default): return IUUIDAware.providedBy(node) and node.uuid or default
def display(self): referencable = self.request.params['referencable'] referencable = referencable.find(',') > -1 \ and referencable.split(',') or [referencable] return IUUIDAware.providedBy(self.model) \ and self.model.node_info_name in referencable
def test_entry(self): self.layer.new_request() # Create node containing ZODBEntry root = BaseNode(name='root') root['myentry'] = ZODBEntry() entry = root['myentry'] self.assertTrue(isinstance(entry, ZODBEntry)) # ZODB entry node of entry is looked up by db_name from db root self.assertTrue(isinstance(entry.storage, ZODBEntryNode)) self.assertEqual(entry.storage.name, 'myentry') # ``metadata`` and ``properties`` are returned from entry self.assertTrue(isinstance(entry.storage.metadata, Metadata)) self.assertTrue(isinstance(entry.storage.properties, Properties)) # Create children foo = ZODBDummyNode() entry['foo'] = foo bar = ZODBDummyNode() bar.attrs['title'] = 'bar' entry['bar'] = bar # ``__iter__`` self.assertEqual([k for k in entry], ['foo', 'bar']) # ``__getitem__`` self.assertTrue(entry['foo'] is foo) # ``keys`` self.assertEqual(foo.attrs.keys(), ['title', 'uuid']) # IZODBEntry and IZODBEntryNode self.assertTrue(IZODBEntry.providedBy(entry)) self.assertTrue(IZODBEntryNode.providedBy(entry.storage)) # ZODBDummyNode is UUIDAware self.assertTrue(IUUIDAware.providedBy(foo)) self.assertTrue(isinstance(foo.uuid, uuid.UUID)) # Entry and entry node result in the same tree self.check_output(""" <class 'cone.zodb.entry.ZODBEntry'>: myentry <class 'cone.zodb.testing.ZODBDummyNode'>: foo <class 'cone.zodb.testing.ZODBDummyNode'>: bar """, entry.treerepr()) self.check_output(""" <class 'cone.zodb.entry.ZODBEntryNode'>: myentry <class 'cone.zodb.testing.ZODBDummyNode'>: foo <class 'cone.zodb.testing.ZODBDummyNode'>: bar """, entry.storage.treerepr()) # ``__parent__`` self.assertTrue(foo.parent is entry.storage) self.assertTrue(foo.parent.parent is root) # ``__delitem__`` del entry['foo'] self.check_output(""" <class 'cone.zodb.entry.ZODBEntry'>: myentry <class 'cone.zodb.testing.ZODBDummyNode'>: bar """, entry.treerepr()) # ``__call__`` delegates to storage, which is the ZODB entry node entry() # ``zodb_entry_for`` self.assertTrue(zodb_entry_for(entry['bar']) is entry) self.assertTrue(zodb_entry_for(entry.storage) is entry) self.assertTrue(zodb_entry_for(root) is None) # DB name class CustomZODBEntry(ZODBEntry): @property def db_name(self): return 'custom_entry_storage' @property def name(self): return 'entry_storage' root['custom_entry_storage'] = CustomZODBEntry(name='custom_entry') entry = root['custom_entry_storage'] self.assertEqual(entry.name, 'entry_storage') child = ZODBDummyNode() entry['child'] = child child = entry['child'] self.assertEqual(child.path, ['root', 'entry_storage', 'child']) self.assertEqual(entry.db_name, 'custom_entry_storage') transaction.commit()