[CalendarServer-changes] [10638] CalendarServer/trunk/twext/who/xml.py

source_changes at macosforge.org source_changes at macosforge.org
Fri Feb 1 19:08:17 PST 2013


Revision: 10638
          http://trac.calendarserver.org//changeset/10638
Author:   wsanchez at apple.com
Date:     2013-02-01 19:08:17 -0800 (Fri, 01 Feb 2013)
Log Message:
-----------
Add self.unknownFieldElements, distinct from self.unknownFieldNames.
Improved loadRecords() logic.

Modified Paths:
--------------
    CalendarServer/trunk/twext/who/xml.py

Modified: CalendarServer/trunk/twext/who/xml.py
===================================================================
--- CalendarServer/trunk/twext/who/xml.py	2013-02-02 02:33:15 UTC (rev 10637)
+++ CalendarServer/trunk/twext/who/xml.py	2013-02-02 03:08:17 UTC (rev 10638)
@@ -165,6 +165,12 @@
         return self._unknownRecordTypes
 
     @property
+    def unknownFieldElements(self):
+        if not hasattr(self, "_unknownFieldElements"):
+            self.loadRecords()
+        return self._unknownFieldElements
+
+    @property
     def unknownFieldNames(self):
         if not hasattr(self, "_unknownFieldNames"):
             self.loadRecords()
@@ -206,29 +212,36 @@
         if not realmName:
             raise DirectoryServiceError("No realm name.")
 
-        unknownRecordTypes = set()
-        unknownFieldNames  = set()
+        unknownRecordTypes   = set()
+        unknownFieldElements = set()
+        unknownFieldNames    = set()
 
         records = set()
 
         for recordNode in directoryNode.getchildren():
             recordTypeAttribute = getAttribute(recordNode, self.AttributeClass.recordType.value)
-            if not recordTypeAttribute:
-                recordTypeAttribute = "user"
+            if recordTypeAttribute:
+                try:
+                    recordType = self.ValueClass.lookupByValue(recordTypeAttribute).recordType
+                except (ValueError, AttributeError):
+                    unknownRecordTypes.add(recordTypeAttribute)
+                    continue
+            else:
+                recordType = self.RecordTypeClass.user
 
-            try:
-                recordType = self.ValueClass.lookupByValue(recordTypeAttribute).recordType
-            except (ValueError, AttributeError):
-                unknownRecordTypes.add(recordTypeAttribute)
-                continue
-
             fields = {}
             fields[FieldName.recordType] = recordType
 
             for fieldNode in recordNode.getchildren():
                 try:
-                    fieldName = self.ElementClass.lookupByValue(fieldNode.tag).fieldName
-                except (ValueError, AttributeError):
+                    fieldElement = self.ElementClass.lookupByValue(fieldNode.tag)
+                except ValueError:
+                    unknownFieldElements.add(fieldNode.tag)
+                    continue
+
+                try:
+                    fieldName = fieldElement.fieldName
+                except AttributeError:
                     unknownFieldNames.add(fieldNode.tag)
                     continue
 
@@ -240,6 +253,7 @@
                 else:
                     fields[fieldName] = value
 
+
             records.add(DirectoryRecord(self, fields))
 
         #
@@ -264,8 +278,9 @@
 
         self._realmName = realmName
 
-        self._unknownRecordTypes = unknownRecordTypes
-        self._unknownFieldNames  = unknownFieldNames
+        self._unknownRecordTypes   = unknownRecordTypes
+        self._unknownFieldElements = unknownFieldElements
+        self._unknownFieldNames    = unknownFieldNames
 
         self._index = index
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130201/8badda68/attachment.html>


More information about the calendarserver-changes mailing list