[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