[CalendarServer-changes] [8928] CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav /directory/xmldirectorybacker.py

source_changes at macosforge.org source_changes at macosforge.org
Fri Mar 23 18:37:41 PDT 2012


Revision: 8928
          http://trac.macosforge.org/projects/calendarserver/changeset/8928
Author:   gaya at apple.com
Date:     2012-03-23 18:37:41 -0700 (Fri, 23 Mar 2012)
Log Message:
-----------
fix single dsquery.match dsFilter

Modified Paths:
--------------
    CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/xmldirectorybacker.py

Modified: CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/xmldirectorybacker.py
===================================================================
--- CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/xmldirectorybacker.py	2012-03-23 23:50:09 UTC (rev 8927)
+++ CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/xmldirectorybacker.py	2012-03-24 01:37:41 UTC (rev 8928)
@@ -179,21 +179,27 @@
                 
             # stop query for all
             clear = not allRecords and not dsFilter
-            
+                        
             if not clear:
                 
                 @inlineCallbacks
                 def recordsForDSFilter(dsFilter, recordType):
                     
                     """
-                        Whist this tests the dsFilter expression tree and recordsMatchingFields() it make little difference to the resutl of
+                        Although this exercises the dsFilter expression tree and recordsMatchingFields() it make little difference to the result of
                         a addressbook query because of post filtering.
                     """
-                    self.log_debug("recordsForDSFilter:  dsFilter=%s" % (dsFilter.generate(), ))
-                    if dsFilter.operator == dsquery.expression.NOT:
+                    #returnValue(None) # dsquery.expression.NOT not supported by recordsMatchingFields()
+
+                    if not isinstance(dsFilter, dsquery.expression):
+                        #change  match list  into an expression and recurse
+                        returnValue((yield recordsForDSFilter(dsquery.expression( dsquery.expression.OR, (dsFilter,)), recordType)))
+                        
+                    elif dsFilter.operator == dsquery.expression.NOT:
                         self.log_debug("recordsForDSFilter:  dsFilter-%s NOT NONE" % (dsFilter.generate(), ))
                         returnValue(None) # dsquery.expression.NOT not supported by recordsMatchingFields()
                     else:
+                        self.log_debug("recordsForDSFilter:  dsFilter=%s" % (dsFilter.generate(), ))
                         self.log_debug("recordsForDSFilter: #subs %s" % (len(dsFilter.subexpressions), ))
                         
                         # evaluate matches
@@ -239,7 +245,10 @@
                     returnValue(result)
                                 
                 # walk the expression tree
-                xmlDirectoryRecords = (yield recordsForDSFilter(dsFilter, queryType))
+                if allRecords:
+                    xmlDirectoryRecords = None
+                else:
+                    xmlDirectoryRecords = (yield recordsForDSFilter(dsFilter, queryType))
                 self.log_debug("doAddressBookQuery: #xmlDirectoryRecords %s" % (len(xmlDirectoryRecords) if xmlDirectoryRecords is not None else xmlDirectoryRecords, ))
                 
                 if xmlDirectoryRecords is None:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120323/e51ffa79/attachment.html>


More information about the calendarserver-changes mailing list