[Checkins] SVN: z3c.dobbin/trunk/src/z3c/dobbin/ Explicitly name relation as an 'ordered relation'.

Malthe Borch mborch at gmail.com
Sat Jun 21 11:34:40 EDT 2008


Log message for revision 87628:
  Explicitly name relation as an 'ordered relation'.

Changed:
  U   z3c.dobbin/trunk/src/z3c/dobbin/bootstrap.py
  U   z3c.dobbin/trunk/src/z3c/dobbin/collections.py
  U   z3c.dobbin/trunk/src/z3c/dobbin/mapper.py
  U   z3c.dobbin/trunk/src/z3c/dobbin/relations.py

-=-
Modified: z3c.dobbin/trunk/src/z3c/dobbin/bootstrap.py
===================================================================
--- z3c.dobbin/trunk/src/z3c/dobbin/bootstrap.py	2008-06-21 15:20:54 UTC (rev 87627)
+++ z3c.dobbin/trunk/src/z3c/dobbin/bootstrap.py	2008-06-21 15:34:39 UTC (rev 87628)
@@ -13,34 +13,34 @@
     setUp(metadata)
     
 def setUp(metadata):
-    uuid = rdb.String(length=32)
-    fk = rdb.ForeignKey("soup.uuid")
+    soup_uuid = rdb.String(length=32)
+    soup_fk = rdb.ForeignKey("dobbin:soup.uuid")
     
     soup = rdb.Table(
-        'soup',
+        'dobbin:soup',
         metadata,
         rdb.Column('id', rdb.Integer, primary_key=True, autoincrement=True),
-        rdb.Column('uuid', uuid, unique=True, index=True),
+        rdb.Column('uuid', soup_uuid, unique=True, index=True),
         rdb.Column('spec', rdb.String, index=True),
         )
 
-    relation = rdb.Table(
-        'relation',
+    int_relation = rdb.Table(
+        'dobbin:relation:int',
         metadata,
         rdb.Column('id', rdb.Integer, primary_key=True, autoincrement=True),
-        rdb.Column('left', uuid, fk, index=True),
-        rdb.Column('right', uuid, fk),
+        rdb.Column('left', soup_uuid, soup_fk, index=True),
+        rdb.Column('right', soup_uuid, soup_fk),
         rdb.Column('order', rdb.Integer, nullable=False))
 
     catalog = rdb.Table(
         'catalog',
         metadata,
         rdb.Column('id', rdb.Integer, primary_key=True, autoincrement=True),
-        rdb.Column('left', uuid, fk, index=True),
-        rdb.Column('right', uuid, fk),
+        rdb.Column('left', soup_uuid, soup_fk, index=True),
+        rdb.Column('right', soup_uuid, soup_fk),
         rdb.Column('name', rdb.String))
     
-    orm.mapper(relations.Relation, relation)
+    orm.mapper(relations.OrderedRelation, int_relation)
     orm.mapper(Soup, soup)
     
     metadata.create_all()

Modified: z3c.dobbin/trunk/src/z3c/dobbin/collections.py
===================================================================
--- z3c.dobbin/trunk/src/z3c/dobbin/collections.py	2008-06-21 15:20:54 UTC (rev 87627)
+++ z3c.dobbin/trunk/src/z3c/dobbin/collections.py	2008-06-21 15:34:39 UTC (rev 87628)
@@ -35,7 +35,7 @@
                 item = soup.persist(item)
 
             # set up relation
-            relation = relations.Relation()
+            relation = relations.OrderedRelation()
             relation.target = item
             relation.order = len(converted)
 
@@ -79,7 +79,7 @@
             item = soup.persist(item)
 
         # set up relation
-        relation = relations.Relation()
+        relation = relations.OrderedRelation()
         relation.target = item
         relation.order = len(self.data)
 

Modified: z3c.dobbin/trunk/src/z3c/dobbin/mapper.py
===================================================================
--- z3c.dobbin/trunk/src/z3c/dobbin/mapper.py	2008-06-21 15:20:54 UTC (rev 87627)
+++ z3c.dobbin/trunk/src/z3c/dobbin/mapper.py	2008-06-21 15:34:39 UTC (rev 87628)
@@ -75,21 +75,30 @@
     collection_class = None
     
     def __call__(self, field, column, metadata):
-        relation_table = metadata.tables['relation']
-        soup_table = metadata.tables['soup']
+        relation_table = self.getRelationTable(metadata)
+        soup_table = self.getSoupTable(metadata)
         
         return {
             field.__name__: orm.relation(
-                relations.Relation,
+                relations.OrderedRelation,
                 primaryjoin=soup_table.c.uuid==relation_table.c.left,
                 collection_class=self.collection_class,
                 enable_typechecks=False)
             }
 
+    def getRelationTable(self, metadata):
+        return NotImplementedError("Must be implemented by subclass.")
+
+    def getSoupTable(self, metadata):
+        return metadata.tables['dobbin:soup']
+
 class ListProperty(CollectionProperty):
     collection_class = collections.OrderedList
 
-class TupleProperty(CollectionProperty):
+    def getRelationTable(self, metadata):
+        return metadata.tables['dobbin:relation:int']
+
+class TupleProperty(ListProperty):
     collection_class = collections.Tuple
                     
 class DictProperty(object):
@@ -195,7 +204,7 @@
                 exclude.append(name)
 
     # create joined table
-    soup_table = table = metadata.tables['soup']
+    soup_table = table = metadata.tables['dobbin:soup']
     properties = {}
     first_table = None
     
@@ -309,7 +318,7 @@
     table = rdb.Table(
         name,
         metadata,
-        rdb.Column('id', rdb.Integer, rdb.ForeignKey("soup.id"), primary_key=True),
+        rdb.Column('id', rdb.Integer, rdb.ForeignKey("dobbin:soup.id"), primary_key=True),
         *columns,
         **kw)
 

Modified: z3c.dobbin/trunk/src/z3c/dobbin/relations.py
===================================================================
--- z3c.dobbin/trunk/src/z3c/dobbin/relations.py	2008-06-21 15:20:54 UTC (rev 87627)
+++ z3c.dobbin/trunk/src/z3c/dobbin/relations.py	2008-06-21 15:34:39 UTC (rev 87628)
@@ -28,6 +28,9 @@
 
     source = property(_get_source, _set_source)
     target = property(_get_target, _set_target)
+
+class OrderedRelation(Relation):
+    pass
     
 class RelationProperty(property):
     



More information about the Checkins mailing list