Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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
     )
Ejemplo n.º 7
0
 def enabled(self):
     if IUUIDAware.providedBy(self.model):
         return str(self.model.uuid) in self.selected_uids
     return False
Ejemplo n.º 8
0
def get_uid(node, default):
    return IUUIDAware.providedBy(node) and node.uuid or default
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
 def enabled(self):
     if IUUIDAware.providedBy(self.model):
         return str(self.model.uuid) in self.selected_uids
     return False
Ejemplo n.º 11
0
    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()
Ejemplo n.º 12
0
 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