[CalendarServer-changes] [8726] CalendarServer/trunk/twistedcaldav

source_changes at macosforge.org source_changes at macosforge.org
Fri Feb 17 15:34:47 PST 2012


Revision: 8726
          http://trac.macosforge.org/projects/calendarserver/changeset/8726
Author:   sagen at apple.com
Date:     2012-02-17 15:34:47 -0800 (Fri, 17 Feb 2012)
Log Message:
-----------
When normalizing CUAddrs during migration, http(s) addresses should be made "relative" -- only examine the path portion.

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/test/test_upgrade.py
    CalendarServer/trunk/twistedcaldav/upgrade.py

Modified: CalendarServer/trunk/twistedcaldav/test/test_upgrade.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/test/test_upgrade.py	2012-02-17 21:16:47 UTC (rev 8725)
+++ CalendarServer/trunk/twistedcaldav/test/test_upgrade.py	2012-02-17 23:34:47 UTC (rev 8726)
@@ -20,6 +20,7 @@
 from twistedcaldav.config import config
 from twistedcaldav.directory.xmlfile import XMLDirectoryService
 from twistedcaldav.directory.resourceinfo import ResourceInfoDatabase
+from twistedcaldav.ical import Component
 from twistedcaldav.mail import MailGatewayTokensDatabase
 from twistedcaldav.upgrade import (
     xattrname, UpgradeError, upgradeData, updateFreeBusySet,
@@ -1467,6 +1468,10 @@
                 StubRecord("User A", 123, ("mailto:a at example.com", "urn:uuid:123")),
             "mailto:b at example.com" :
                 StubRecord("User B", 234, ("mailto:b at example.com", "urn:uuid:234")),
+            "/principals/users/a" :
+                StubRecord("User A", 123, ("mailto:a at example.com", "urn:uuid:123")),
+            "/principals/users/b" :
+                StubRecord("User B", 234, ("mailto:b at example.com", "urn:uuid:234")),
         }
 
         directory = StubDirectory()
@@ -1478,6 +1483,13 @@
         # would have been 8 times without the cuaCache.
         self.assertEquals(directory.count, 3)
 
+        # Ensure normalization ignores the non-path part of http(s) CUAs
+        newData, changed = normalizeCUAddrs(normalizeEventWithHTTP, directory, cuaCache)
+        self.assertTrue("urn:uuid:123" in newData)
+        self.assertTrue("urn:uuid:234" in newData)
+        self.assertFalse("http" in newData)
+
+
 normalizeEvent = """BEGIN:VCALENDAR
 VERSION:2.0
 BEGIN:VEVENT
@@ -1495,8 +1507,24 @@
 END:VCALENDAR
 """.replace("\n", "\r\n")
 
+normalizeEventWithHTTP = """BEGIN:VCALENDAR
+VERSION:2.0
+BEGIN:VEVENT
+TRANSP:OPAQUE
+UID:1E238CA1-3C95-4468-B8CD-C8A399F78C71
+DTSTART:20090203
+DTEND:20090204
+ORGANIZER;CN="User A":http://example.com/principals/users/a/
+SUMMARY:New Event
+DESCRIPTION:Foo
+ATTENDEE;CN="User A";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:http://example.com/principals/users/a/
+ATTENDEE;CN="User B";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:http://example.com/principals/users/b/
+END:VEVENT
+END:VCALENDAR
+""".replace("\n", "\r\n")
 
 
+
 event01_before = """BEGIN:VCALENDAR
 VERSION:2.0
 PRODID:-//Apple Inc.//iCal 3.0//EN

Modified: CalendarServer/trunk/twistedcaldav/upgrade.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/upgrade.py	2012-02-17 21:16:47 UTC (rev 8725)
+++ CalendarServer/trunk/twistedcaldav/upgrade.py	2012-02-17 23:34:47 UTC (rev 8726)
@@ -20,6 +20,7 @@
 import xattr, os, zlib, hashlib, datetime, pwd, grp, shutil, errno, operator
 from zlib import compress
 from cPickle import loads as unpickle, UnpicklingError
+from urlparse import urlsplit
 
 from twext.python.log import Logger
 from twext.web2.dav import davxml
@@ -588,6 +589,12 @@
     cal = Component.fromString(data)
 
     def lookupFunction(cuaddr):
+
+        # If cuaddr is http(s), examine only the path portion, ignoring the
+        # hostname and port
+        if cuaddr.startswith("http"):
+            cuaddr = urlsplit(cuaddr)[2]
+
         # Return cached results, if any.
         if cuaCache.has_key(cuaddr):
             return cuaCache[cuaddr]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120217/42772b7a/attachment.html>


More information about the calendarserver-changes mailing list