Revision: 4126 http://trac.macosforge.org/projects/calendarserver/changeset/4126 Author: wsanchez@apple.com Date: 2009-05-01 09:57:11 -0700 (Fri, 01 May 2009) Log Message: ----------- Pulled up r4115 r4114 from trunk. Modified Paths: -------------- CalendarServer/branches/release/CalendarServer-2.2-dev/run CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/icaldiff.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/test/test_icaldiff.py Property Changed: ---------------- CalendarServer/branches/release/CalendarServer-2.2-dev/ CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.txt CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.xml CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.txt CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.xml Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev ___________________________________________________________________ Modified: svn:mergeinfo - /CalendarServer/branches/users/sagen/resource-delegates-4038:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066:4068-4075 /CalendarServer/trunk:4105-4107 + /CalendarServer/branches/users/sagen/resource-delegates-4038:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066:4068-4075 /CalendarServer/trunk:4105-4107,4114-4115 Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.txt ___________________________________________________________________ Modified: svn:mergeinfo - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.txt:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.txt:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.txt:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.txt:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.txt:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.txt:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.txt:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-privatecomments.txt:4105-4107 + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.txt:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.txt:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.txt:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.txt:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.txt:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.txt:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.txt:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-privatecomments.txt:4105-4107,4114-4115 Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.xml ___________________________________________________________________ Modified: svn:mergeinfo - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.xml:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.xml:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.xml:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.xml:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.xml:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.xml:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.xml:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-privatecomments.xml:4105-4107 + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.xml:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.xml:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.xml:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.xml:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.xml:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.xml:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.xml:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-privatecomments.xml:4105-4107,4114-4115 Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.txt ___________________________________________________________________ Modified: svn:mergeinfo - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.txt:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.txt:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.txt:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.txt:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.txt:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.txt:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.txt:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.txt:4105-4107 + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.txt:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.txt:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.txt:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.txt:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.txt:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.txt:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.txt:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.txt:4105-4107,4114-4115 Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.xml ___________________________________________________________________ Modified: svn:mergeinfo - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.xml:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.xml:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.xml:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.xml:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.xml:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.xml:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.xml:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.xml:4105-4107 + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.xml:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.xml:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.xml:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.xml:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.xml:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.xml:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.xml:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.xml:4105-4107,4114-4115 Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/run =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/run 2009-05-01 16:55:04 UTC (rev 4125) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/run 2009-05-01 16:57:11 UTC (rev 4126) @@ -727,7 +727,7 @@ caldavtester="${top}/CalDAVTester"; -svn_get "CalDAVTester" "${caldavtester}" "${svn_uri_base}/CalDAVTester/trunk" 4088; +svn_get "CalDAVTester" "${caldavtester}" "${svn_uri_base}/CalDAVTester/trunk" 4114; # # PyFlakes Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/icaldiff.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/icaldiff.py 2009-05-01 16:55:04 UTC (rev 4125) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/icaldiff.py 2009-05-01 16:57:11 UTC (rev 4126) @@ -268,9 +268,10 @@ master = component # Normalize each master by adding any STATUS:CANCELLED components as EXDATEs - exdates = set() + exdates = None if master: # Get all EXDATEs in UTC + exdates = set() for exdate in master.properties("EXDATE"): exdates.update([normalizeToUTC(value) for value in exdate.value()]) @@ -288,7 +289,7 @@ component = map1[key] if component.propertyValue("STATUS") != "CANCELLED": # Attendee may decline by EXDATE'ing an instance - we need to handle that - if rid in exdates2: + if exdates2 is None or rid in exdates2: # Mark Attendee as DECLINED in the server instance if self._attendeeDecline(self.newCalendar.overriddenComponent(rid)): changeCausesReply = True @@ -297,7 +298,7 @@ log.debug("attendeeMerge: Missing uncancelled component from first calendar: %s" % (key,)) return False, False, (), None else: - if rid not in exdates2: + if exdates2 is not None and rid not in exdates2: log.debug("attendeeMerge: Missing EXDATE for cancelled components from first calendar: %s" % (key,)) return False, False, (), None else: @@ -315,7 +316,7 @@ _ignore_name, _ignore_uid, rid = key component2 = map2[key] if component2.propertyValue("STATUS") == "CANCELLED": - if rid not in exdates1: + if exdates1 is None or rid not in exdates1: log.debug("attendeeMerge: Cancelled component not found in first calendar (or no EXDATE): %s" % (key,)) return False, False, (), None else: Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/test/test_icaldiff.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/test/test_icaldiff.py 2009-05-01 16:55:04 UTC (rev 4125) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/test/test_icaldiff.py 2009-05-01 16:57:11 UTC (rev 4126) @@ -1838,6 +1838,70 @@ END:VCALENDAR """) ), + ( + "#1.5 Two components, no master, one removal", + """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080601T120000Z +DTSTART:20080601T120000Z +DTEND:20080601T130000Z +ORGANIZER;CN="User 01":mailto:user1@example.com +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +END:VEVENT +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080604T120000Z +DTSTART:20080604T130000Z +DTEND:20080604T140000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""", + """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080604T120000Z +DTSTART:20080604T130000Z +DTEND:20080604T140000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""", + "mailto:user2@example.com", + (True, True, ("20080601T120000Z",), """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080601T120000Z +DTSTART:20080601T120000Z +DTEND:20080601T130000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=DECLINED:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080604T120000Z +DTSTART:20080604T130000Z +DTEND:20080604T140000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""") + ), ) for description, calendar1, calendar2, attendee, result in data: @@ -1979,6 +2043,203 @@ END:VCALENDAR """) ), + ( + "#1.3 Removed CANCELLED no master", + """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +DTSTART:20080604T120000Z +DTEND:20080604T130000Z +RECURRENCE-ID:20080604T120000Z +ORGANIZER;CN="User 01":mailto:user1@example.com +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=ACCEPTED:mailto:user2@example.com +STATUS:CANCELLED +END:VEVENT +BEGIN:VEVENT +UID:12345-67890 +DTSTART:20080605T120000Z +DTEND:20080605T130000Z +RECURRENCE-ID:20080605T120000Z +ORGANIZER;CN="User 01":mailto:user1@example.com +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=ACCEPTED:mailto:user2@example.com +END:VEVENT +END:VCALENDAR +""", + """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +DTSTART:20080605T120000Z +DTEND:20080605T130000Z +RECURRENCE-ID:20080605T120000Z +ORGANIZER;CN="User 01":mailto:user1@example.com +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=ACCEPTED:mailto:user2@example.com +END:VEVENT +END:VCALENDAR +""", + "mailto:user2@example.com", + (True, False, (), """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080605T120000Z +DTSTART:20080605T120000Z +DTEND:20080605T130000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=ACCEPTED:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""") + ), + ( + "#1.4 Two components, no master, cancelled removed", + """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080601T120000Z +DTSTART:20080601T120000Z +DTEND:20080601T130000Z +ORGANIZER;CN="User 01":mailto:user1@example.com +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +STATUS:CANCELLED +END:VEVENT +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080604T120000Z +DTSTART:20080604T130000Z +DTEND:20080604T140000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""", + """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080604T120000Z +DTSTART:20080604T130000Z +DTEND:20080604T140000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""", + "mailto:user2@example.com", + (True, False, (), """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080604T120000Z +DTSTART:20080604T130000Z +DTEND:20080604T140000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""") + ), + ( + "#1.5 Add cancelled component, no master", + """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080604T120000Z +DTSTART:20080604T130000Z +DTEND:20080604T140000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""", + """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080601T120000Z +DTSTART:20080601T120000Z +DTEND:20080601T130000Z +ORGANIZER;CN="User 01":mailto:user1@example.com +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +STATUS:CANCELLED +END:VEVENT +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080604T120000Z +DTSTART:20080604T130000Z +DTEND:20080604T140000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""", + "mailto:user2@example.com", + (False, False, (), None,) + ), + ( + "#1.6 Add uncancelled component, no master", + """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080604T120000Z +DTSTART:20080604T130000Z +DTEND:20080604T140000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""", + """BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080601T120000Z +DTSTART:20080601T120000Z +DTEND:20080601T130000Z +ORGANIZER;CN="User 01":mailto:user1@example.com +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +END:VEVENT +BEGIN:VEVENT +UID:12345-67890 +RECURRENCE-ID:20080604T120000Z +DTSTART:20080604T130000Z +DTEND:20080604T140000Z +ATTENDEE:mailto:user1@example.com +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:user2@example.com +ORGANIZER;CN=User 01:mailto:user1@example.com +END:VEVENT +END:VCALENDAR +""", + "mailto:user2@example.com", + (False, False, (), None,) + ), ) for description, calendar1, calendar2, attendee, result in data: