[CalendarServer-changes] [13171] CalendarServer/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Apr 4 16:55:03 PDT 2014


Revision: 13171
          http://trac.calendarserver.org//changeset/13171
Author:   gaya at apple.com
Date:     2014-04-04 16:55:03 -0700 (Fri, 04 Apr 2014)
Log Message:
-----------
More directory gateway adjustments

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/directorybackedaddressbook.py
    CalendarServer/trunk/twistedcaldav/method/report_addressbook_query.py
    CalendarServer/trunk/twistedcaldav/method/report_multiget_common.py
    CalendarServer/trunk/txdav/who/vcard.py

Modified: CalendarServer/trunk/twistedcaldav/directorybackedaddressbook.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directorybackedaddressbook.py	2014-04-04 23:10:03 UTC (rev 13170)
+++ CalendarServer/trunk/twistedcaldav/directorybackedaddressbook.py	2014-04-04 23:55:03 UTC (rev 13171)
@@ -157,7 +157,7 @@
 
 
     @inlineCallbacks
-    def doAddressBookDirectoryQuery(self, addressBookFilter, addressBookQuery, maxResults, defaultKind=None):
+    def doAddressBookDirectoryQuery(self, addressBookFilter, addressBookQuery, maxResults, defaultKind="individual"):
         """
         Get vCards for a given addressBookFilter and addressBookQuery
         """
@@ -372,7 +372,6 @@
                     return andOrExpression(allOf, matchList)
                     '''
 
-
             def andOrExpression(propFilterAllOf, matchList):
                 matchList = list(set(matchList))
                 if propFilterAllOf and len(matchList) > 1:

Modified: CalendarServer/trunk/twistedcaldav/method/report_addressbook_query.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_addressbook_query.py	2014-04-04 23:10:03 UTC (rev 13170)
+++ CalendarServer/trunk/twistedcaldav/method/report_addressbook_query.py	2014-04-04 23:55:03 UTC (rev 13171)
@@ -157,7 +157,7 @@
         def queryDirectoryBackedAddressBook(directoryBackedAddressBook, addressBookFilter):
             """
             """
-            results, limited[0] = yield directoryBackedAddressBook.doAddressBookDirectoryQuery(addressBookFilter, query, max_number_of_results[0], defaultKind="individual")
+            results, limited[0] = yield directoryBackedAddressBook.doAddressBookDirectoryQuery(addressBookFilter, query, max_number_of_results[0])
             for vCardResult in results:
 
                 # match against original filter if different from addressBookFilter

Modified: CalendarServer/trunk/twistedcaldav/method/report_multiget_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_multiget_common.py	2014-04-04 23:10:03 UTC (rev 13170)
+++ CalendarServer/trunk/twistedcaldav/method/report_multiget_common.py	2014-04-04 23:55:03 UTC (rev 13171)
@@ -267,7 +267,7 @@
 
                 #get vCards and filter
                 limit = config.DirectoryAddressBook.MaxQueryResults
-                results, limited = (yield self.doAddressBookDirectoryQuery(addressBookFilter, propertyreq, limit))
+                results, limited = (yield self.doAddressBookDirectoryQuery(addressBookFilter, propertyreq, limit, defaultKind=None))
                 if limited:
                     log.error("Too many results in multiget report: {count}", count=len(resources))
                     raise HTTPError(ErrorResponse(

Modified: CalendarServer/trunk/txdav/who/vcard.py
===================================================================
--- CalendarServer/trunk/txdav/who/vcard.py	2014-04-04 23:10:03 UTC (rev 13170)
+++ CalendarServer/trunk/txdav/who/vcard.py	2014-04-04 23:55:03 UTC (rev 13171)
@@ -55,7 +55,8 @@
 # all possible generated parameters.
 vCardPropToParamMap = {
     #"PHOTO": {"ENCODING": ("B",), "TYPE": ("JPEG",), },
-    "ADR": {"TYPE": ("WORK", "PREF", "POSTAL", "PARCEL",), },
+    "ADR": {"TYPE": ("WORK", "PREF", "POSTAL", "PARCEL",),
+            "LABEL": None, "GEO": None, },
     #"LABEL": {"TYPE": ("POSTAL", "PARCEL",)},
     #"TEL": {"TYPE": None, },  # None means param can contain can be anything
     "EMAIL": {"TYPE": None, },
@@ -188,17 +189,29 @@
     # 3.2 Delivery Addressing Types http://tools.ietf.org/html/rfc2426#section-3.2
     #===========================================================================
     # 3.2.1 ADR
+    #
+    # Experimental:
+    #     Use vCard 4.0 ADR: http://tools.ietf.org/html/rfc6350#section-6.3.1
+    params = {}
+    geo = record.fields.get(CalFieldName.geographicLocation)
+    if geo:
+        params["GEO"] = geo.encode("utf-8")
+    label = record.fields.get(CalFieldName.streetAddress)
+    if label:
+        params["LABEL"] = label.encode("utf-8")
 
+    #
     extended = record.fields.get(CalFieldName.floor)
 
-    #TODO: parse !
+    # TODO: Parse?
     street = record.fields.get(CalFieldName.streetAddress)
     city = None
     region = None
     postalcode = None
     country = None
 
-    if extended or street or city or region or postalcode or country:
+    if extended or street or city or region or postalcode or country or params:
+        params["TYPE"] = ("WORK", "PREF", "POSTAL", "PARCEL",)
         vcard.addProperty(
             Property(
                 "ADR", Adr(
@@ -210,7 +223,7 @@
                     postalcode=postalcode.encode("utf-8") if postalcode else None,
                     country=country.encode("utf-8") if country else None,
                 ),
-                params={"TYPE": ("WORK", "PREF", "POSTAL", "PARCEL",), }
+                params=params
             )
         )
 
@@ -308,7 +321,8 @@
     # add members
     # FIXME:  members() is a deferred, so all of vCardFromRecord is deferred.
     for memberRecord in (yield record.members()):
-        vcard.addProperty(Property("X-ADDRESSBOOKSERVER-MEMBER", "urn:uuid:" + memberRecord.fields[FieldName.uid].encode("utf-8")))
+        if memberRecord:
+            vcard.addProperty(Property("X-ADDRESSBOOKSERVER-MEMBER", "urn:uuid:" + memberRecord.fields[FieldName.uid].encode("utf-8")))
 
     #===================================================================
     # vCard 4.0  http://tools.ietf.org/html/rfc6350
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140404/5ef42eb6/attachment.html>


More information about the calendarserver-changes mailing list