[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