[Checkins] SVN: lovely.relation/trunk/src/lovely/relation/ allow None to be used for data relation properties

Juergen Kartnaller juergen at kartnaller.at
Thu Sep 13 02:38:36 EDT 2007


Log message for revision 79608:
  allow None to be used for data relation properties

Changed:
  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

-=-
Modified: lovely.relation/trunk/src/lovely/relation/dataproperty.py
===================================================================
--- lovely.relation/trunk/src/lovely/relation/dataproperty.py	2007-09-12 21:55:28 UTC (rev 79607)
+++ lovely.relation/trunk/src/lovely/relation/dataproperty.py	2007-09-13 06:38:35 UTC (rev 79608)
@@ -82,8 +82,11 @@
                 val.source = inst
         self._manager.setTargetRelations(inst, v, self._relType)
         if self._ordered:
-            inst.__dict__['_o_' + self._name] = \
-                        list(self._manager.tokenizeValues(value, 'relations'))
+            if value is not None:
+                values = list(self._manager.tokenizeValues(value, 'relations'))
+            else:
+                values = []
+            inst.__dict__['_o_' + self._name] = values
 
     def __get__(self, inst, klass):
         if inst is None:

Modified: lovely.relation/trunk/src/lovely/relation/dataproperty.txt
===================================================================
--- lovely.relation/trunk/src/lovely/relation/dataproperty.txt	2007-09-12 21:55:28 UTC (rev 79607)
+++ lovely.relation/trunk/src/lovely/relation/dataproperty.txt	2007-09-13 06:38:35 UTC (rev 79608)
@@ -93,6 +93,8 @@
 
 We can bind it :
 
+  >>> doc1.teaser is None
+  True
   >>> doc1.teaser = rel1
   >>> doc1.teaser is rel1
   True
@@ -136,10 +138,16 @@
   >>> doc1.teaser is rel1
   True
 
+  >>> doc1.teaser = None
+  >>> doc1.teaser is None
+  True
 
+
 Use of lists
 ------------
 
+  >>> doc1.chapters
+  []
   >>> chapter1 = Chapter(u'Chapter One')
   >>> chapterRel1 = Document.chapters.new(chapter1)
   >>> chapterRel1
@@ -158,3 +166,7 @@
   >>> chapter2.document
   <document u'Doc One'>
 
+  >>> doc1.chapters = None
+  >>> doc1.chapters
+  []
+

Modified: lovely.relation/trunk/src/lovely/relation/property.py
===================================================================
--- lovely.relation/trunk/src/lovely/relation/property.py	2007-09-12 21:55:28 UTC (rev 79607)
+++ lovely.relation/trunk/src/lovely/relation/property.py	2007-09-13 06:38:35 UTC (rev 79608)
@@ -111,13 +111,14 @@
 
     def setTargetRelations(self, source, relations, relType):
         util = self.util
-        if not self.seqOut:
-            relations = [relations]
-        targets = [rel.target for rel in relations]
-        if targets is not None:
+        if relations is not None:
+            if not self.seqOut:
+                relations = [relations]
+            targets = [rel.target for rel in relations]
             newTargetTokens = list(util.relationIndex.tokenizeValues(
                                                         targets, 'targets'))
         else:
+            relations = []
             newTargetTokens = []
         sourceToken = util.relationIndex.tokenizeValues([source],
                                                         'sources').next()
@@ -132,7 +133,6 @@
                                          'relations': relType,
                                          'targets': tt})
             util.remove(rel.next())
-        rels = [(rel.target, rel) for rel in relations]
         for token, rel in zip(newTargetTokens, relations):
             if token in addTT:
                 util.add(rel)



More information about the Checkins mailing list