[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