[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