[CalendarServer-changes] [15075] CalendarServer/trunk/calendarserver/tools
source_changes at macosforge.org
source_changes at macosforge.org
Fri Aug 28 08:52:40 PDT 2015
Revision: 15075
http://trac.calendarserver.org//changeset/15075
Author: cdaboo at apple.com
Date: 2015-08-28 08:52:40 -0700 (Fri, 28 Aug 2015)
Log Message:
-----------
Cope with missing organizer events.
Modified Paths:
--------------
CalendarServer/trunk/calendarserver/tools/calverify.py
CalendarServer/trunk/calendarserver/tools/test/test_calverify.py
Modified: CalendarServer/trunk/calendarserver/tools/calverify.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/calverify.py 2015-08-27 20:29:31 UTC (rev 15074)
+++ CalendarServer/trunk/calendarserver/tools/calverify.py 2015-08-28 15:52:40 UTC (rev 15075)
@@ -2760,7 +2760,7 @@
if fail:
details.append(Details(resid, uid,))
if self.fix:
- yield self.fixCalendarData(cal, rname)
+ yield self.fixCalendarData(cal, rname, resid)
fixed += 1
if self.options["verbose"] and not self.options["summary"]:
@@ -2809,15 +2809,22 @@
@inlineCallbacks
- def fixCalendarData(self, cal, rname):
+ def fixCalendarData(self, cal, rname, location_resid):
"""
Fix problems in calendar data using store APIs.
"""
+ result = True
+ message = ""
+
# Extract organizer (strip off urn:x-uid:) and UID
organizer = cal.getOrganizer()[10:]
uid = cal.resourceUID()
_ignore_calendar, resid, _ignore_created, _ignore_modified = yield self.getCalendarForOwnerByUID(organizer, uid)
+ if resid is None:
+ # No organizer copy exists - it is safe to delete the location resource
+ yield self.removeEvent(location_resid)
+ returnValue((result, message,))
# Get the organizer's calendar object and data
homeID, calendarID = yield self.getAllResourceInfoForResourceID(resid)
@@ -2840,8 +2847,6 @@
comp.addProperty(Property("LOCATION", rname))
# Write out fix, commit and get a new transaction
- result = True
- message = ""
try:
yield calendarObj.setComponent(component)
except Exception, e:
Modified: CalendarServer/trunk/calendarserver/tools/test/test_calverify.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/test/test_calverify.py 2015-08-27 20:29:31 UTC (rev 15074)
+++ CalendarServer/trunk/calendarserver/tools/test/test_calverify.py 2015-08-28 15:52:40 UTC (rev 15075)
@@ -2856,10 +2856,77 @@
END:VCALENDAR
""".replace("\n", "\r\n") % subs
+ # Room as organizer event
+ ROOM_ORGANIZER_ICS = """BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.1//EN
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20100303T181216Z
+UID:ROOM_ORGANIZER_ICS
+TRANSP:OPAQUE
+SUMMARY:ROOM_ORGANIZER_ICS
+DTSTART:%(year)s%(month)02d08T120000Z
+DURATION:PT1H
+DTSTAMP:20100303T181220Z
+SEQUENCE:2
+ORGANIZER:urn:x-uid:%(uuidl1)s
+ATTENDEE:urn:x-uid:%(uuidl1)s
+END:VEVENT
+END:VCALENDAR
+""".replace("\n", "\r\n") % subs
+
+ # Room event without organizer
+ ROOM_NO_ORGANIZER_ICS = """BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.1//EN
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20100303T181216Z
+UID:ROOM_NO_ORGANIZER_ICS
+TRANSP:OPAQUE
+SUMMARY:ROOM_NO_ORGANIZER_ICS
+DTSTART:%(year)s%(month)02d08T120000Z
+DURATION:PT1H
+DTSTAMP:20100303T181220Z
+SEQUENCE:2
+END:VEVENT
+END:VCALENDAR
+""".replace("\n", "\r\n") % subs
+
+ # Invalid event with no organizer copt
+ ROOM_MISSING_ORGANIZER_ICS = """BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.1//EN
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20100303T181216Z
+UID:ROOM_MISSING_ORGANIZER_ICS
+TRANSP:OPAQUE
+SUMMARY:ROOM_MISSING_ORGANIZER_ICS
+DTSTART:%(year)s%(month)02d08T120000Z
+DURATION:PT1H
+DTSTAMP:20100303T181220Z
+SEQUENCE:2
+ORGANIZER:urn:x-uid:%(uuid1)s
+ATTENDEE:urn:x-uid:%(uuid1)s
+ATTENDEE:urn:x-uid:%(uuid2)s
+ATTENDEE:urn:x-uid:%(uuidl1)s
+END:VEVENT
+END:VCALENDAR
+""".replace("\n", "\r\n") % subs
+
allEvents = {
"invite1.ics" : (VALID_ICS, CalVerifyMismatchTestsBase.metadata,),
"invite2.ics" : (INVALID_ICS, CalVerifyMismatchTestsBase.metadata,),
}
+ allEvents_Room = {
+ "invite1.ics" : (VALID_ICS, CalVerifyMismatchTestsBase.metadata,),
+ "invite2.ics" : (INVALID_ICS, CalVerifyMismatchTestsBase.metadata,),
+ "invite3.ics" : (ROOM_ORGANIZER_ICS, CalVerifyMismatchTestsBase.metadata,),
+ "invite4.ics" : (ROOM_NO_ORGANIZER_ICS, CalVerifyMismatchTestsBase.metadata,),
+ "invite5.ics" : (ROOM_MISSING_ORGANIZER_ICS, CalVerifyMismatchTestsBase.metadata,),
+ }
requirements = {
CalVerifyMismatchTestsBase.uuid1 : {
@@ -2875,7 +2942,7 @@
"inbox" : {},
},
CalVerifyMismatchTestsBase.uuidl1 : {
- "calendar" : allEvents,
+ "calendar" : allEvents_Room,
"inbox" : {},
},
}
@@ -2918,9 +2985,9 @@
self.assertEqual(calverify.results["Number of events to process"], len(self.requirements[CalVerifyMismatchTestsBase.uuidl1]["calendar"]))
self.assertEqual(
sorted([i.uid for i in calverify.results["Bad Events"]]),
- ["INVALID_ICS", ]
+ ["INVALID_ICS", "ROOM_MISSING_ORGANIZER_ICS", "ROOM_ORGANIZER_ICS", ]
)
- self.assertEqual(calverify.results["Number of bad events"], 1)
+ self.assertEqual(calverify.results["Number of bad events"], 3)
self.assertTrue("Fix bad events" not in calverify.results)
sync_token_newl1 = (yield (yield self.calendarUnderTest(home=self.uuidl1, name="calendar")).syncToken())
@@ -2972,10 +3039,10 @@
self.assertEqual(calverify.results["Number of events to process"], len(self.requirements[CalVerifyMismatchTestsBase.uuidl1]["calendar"]))
self.assertEqual(
sorted([i.uid for i in calverify.results["Bad Events"]]),
- ["INVALID_ICS", ]
+ ["INVALID_ICS", "ROOM_MISSING_ORGANIZER_ICS", "ROOM_ORGANIZER_ICS", ]
)
- self.assertEqual(calverify.results["Number of bad events"], 1)
- self.assertEqual(calverify.results["Fix bad events"], 1)
+ self.assertEqual(calverify.results["Number of bad events"], 3)
+ self.assertEqual(calverify.results["Fix bad events"], 3)
sync_token_newl1 = (yield (yield self.calendarUnderTest(home=self.uuidl1, name="calendar")).syncToken())
self.assertNotEqual(sync_token_oldl1, sync_token_newl1)
@@ -2990,7 +3057,7 @@
calverify = MissingLocationService(self._sqlCalendarStore, options, output, reactor, config)
yield calverify.doAction()
- self.assertEqual(calverify.results["Number of events to process"], len(self.requirements[CalVerifyMismatchTestsBase.uuidl1]["calendar"]))
+ self.assertEqual(calverify.results["Number of events to process"], len(self.requirements[CalVerifyMismatchTestsBase.uuidl1]["calendar"]) - 1)
self.assertEqual(len(calverify.results["Bad Events"]), 0)
self.assertTrue("Fix bad events" not in calverify.results)
@@ -2999,4 +3066,16 @@
calobj = yield self.calendarObjectUnderTest(home=uid, calendar_name="calendar", name="invite2.ics")
caldata = yield calobj.componentForUser()
self.assertTrue("LOCATION:" in str(caldata))
+
+ calobj = yield self.calendarObjectUnderTest(home=uid, calendar_name="calendar", name="invite3.ics")
+ caldata = yield calobj.componentForUser()
+ self.assertTrue("LOCATION:" in str(caldata))
+
+ calobj = yield self.calendarObjectUnderTest(home=uid, calendar_name="calendar", name="invite4.ics")
+ caldata = yield calobj.componentForUser()
+ self.assertTrue("LOCATION:" not in str(caldata))
+
+ calobj = yield self.calendarObjectUnderTest(home=uid, calendar_name="calendar", name="invite5.ics")
+ self.assertTrue(calobj is None)
+
yield self.commit()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20150828/07289a90/attachment.html>
More information about the calendarserver-changes
mailing list