[Checkins] SVN: lovely.relation/trunk/ more extension and show
other use cases in tests
Juergen Kartnaller
juergen at kartnaller.at
Thu Sep 13 11:17:21 EDT 2007
Log message for revision 79615:
more extension and show other use cases in tests
Changed:
U lovely.relation/trunk/CHANGES.txt
U lovely.relation/trunk/src/lovely/relation/dataproperty.py
U lovely.relation/trunk/src/lovely/relation/dataproperty.txt
U lovely.relation/trunk/src/lovely/relation/property.py
U lovely.relation/trunk/src/lovely/relation/property.txt
-=-
Modified: lovely.relation/trunk/CHANGES.txt
===================================================================
--- lovely.relation/trunk/CHANGES.txt 2007-09-13 14:11:37 UTC (rev 79614)
+++ lovely.relation/trunk/CHANGES.txt 2007-09-13 15:17:21 UTC (rev 79615)
@@ -5,6 +5,8 @@
After
=====
+- allow to request all relations using the property relation manager
+
- extend the PropertyRelationManager to provide relations on a property based
on a relation type.
Modified: lovely.relation/trunk/src/lovely/relation/dataproperty.py
===================================================================
--- lovely.relation/trunk/src/lovely/relation/dataproperty.py 2007-09-13 14:11:37 UTC (rev 79614)
+++ lovely.relation/trunk/src/lovely/relation/dataproperty.py 2007-09-13 15:17:21 UTC (rev 79615)
@@ -30,6 +30,9 @@
class DataRelationship(O2OStringTypeRelationship):
interface.implements(IDataRelationship, IAttributeAnnotatable)
+ def __init__(self, field, target):
+ super(DataRelationship, self).__init__(None, [field._relType], target)
+
@apply
def source():
def get(self):
@@ -61,7 +64,7 @@
relType)
def new(self, target):
- return DataRelationship(None, [self._relType], target)
+ return DataRelationship(self, target)
def __set__(self, inst, value):
if self._field.readonly:
Modified: lovely.relation/trunk/src/lovely/relation/dataproperty.txt
===================================================================
--- lovely.relation/trunk/src/lovely/relation/dataproperty.txt 2007-09-13 14:11:37 UTC (rev 79614)
+++ lovely.relation/trunk/src/lovely/relation/dataproperty.txt 2007-09-13 15:17:21 UTC (rev 79615)
@@ -170,3 +170,22 @@
>>> doc1.chapters
[]
+
+Use Of Your Own Relation Class
+------------------------------
+
+It is also possible to use your own relationship implementation.
+
+ >>> from lovely.relation.dataproperty import DataRelationship
+ >>> class IMyImageRelationship(interface.Interface):
+ ... info = schema.Text(title=u'Info')
+ >>> class MyImageRelationship(DataRelationship):
+ ... interface.implements(IMyImageRelationship)
+ >>> myRel = MyImageRelationship(Document.teaser, img1)
+ >>> myRel.info = u'my info field'
+ >>> doc1.teaser = myRel
+ >>> doc1.teaser is myRel
+ True
+ >>> doc1.teaser.info
+ u'my info field'
+
Modified: lovely.relation/trunk/src/lovely/relation/property.py
===================================================================
--- lovely.relation/trunk/src/lovely/relation/property.py 2007-09-13 14:11:37 UTC (rev 79614)
+++ lovely.relation/trunk/src/lovely/relation/property.py 2007-09-13 15:17:21 UTC (rev 79615)
@@ -183,6 +183,12 @@
def getRelations(self, relType=None):
if relType is None:
relType = self._field._relType
+ return self._getRelations(relType)
+
+ def getAllRelations(self):
+ return self._getRelations(None)
+
+ def _getRelations(self, relType):
manager = self._field._manager
if isinstance(self._field, RelationPropertyOut):
return manager.getSourceRelations(self.context, relType)
@@ -192,6 +198,12 @@
def getRelationTokens(self, relType=None):
if relType is None:
relType = self._field._relType
+ return self._getRelationTokens(relType)
+
+ def getAllRelationTokens(self):
+ return self._getRelationTokens(None)
+
+ def _getRelationTokens(self, relType):
manager = self._field._manager
if isinstance(self._field, RelationPropertyOut):
return manager.getSourceRelationTokens(self.context, relType)
Modified: lovely.relation/trunk/src/lovely/relation/property.txt
===================================================================
--- lovely.relation/trunk/src/lovely/relation/property.txt 2007-09-13 14:11:37 UTC (rev 79614)
+++ lovely.relation/trunk/src/lovely/relation/property.txt 2007-09-13 15:17:21 UTC (rev 79615)
@@ -408,7 +408,12 @@
>>> [rel.sources for rel in manager.getRelations('documentRelated')]
[<document u'Doc One'>]
+We can ask for all relations.
+ >>> [rel.sources for rel in manager.getAllRelations()]
+ [<document u'Doc One'>, <document u'Doc Three'>]
+
+
Event Handlers
--------------
More information about the Checkins
mailing list