[CalendarServer-changes] [8771] CalendarServer/trunk/twistedcaldav
source_changes at macosforge.org
source_changes at macosforge.org
Wed Feb 29 09:01:55 PST 2012
Revision: 8771
http://trac.macosforge.org/projects/calendarserver/changeset/8771
Author: cdaboo at apple.com
Date: 2012-02-29 09:01:54 -0800 (Wed, 29 Feb 2012)
Log Message:
-----------
Fix free-busy-set changes to handle migrated values with trailing slashes and non-existent URIs.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/schedule.py
CalendarServer/trunk/twistedcaldav/test/test_schedule.py
Modified: CalendarServer/trunk/twistedcaldav/schedule.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/schedule.py 2012-02-29 00:12:03 UTC (rev 8770)
+++ CalendarServer/trunk/twistedcaldav/schedule.py 2012-02-29 17:01:54 UTC (rev 8771)
@@ -192,7 +192,7 @@
if not self.hasDeadProperty(property):
old_calendars = set()
else:
- old_calendars = set([str(href) for href in self.readDeadProperty(property).children])
+ old_calendars = set([normalizeURL(str(href)) for href in self.readDeadProperty(property).children])
added_calendars = new_calendars.difference(old_calendars)
for href in added_calendars:
cal = (yield request.locateResource(str(href)))
@@ -203,6 +203,11 @@
(caldav_namespace, "valid-calendar-url"),
"Invalid URI",
))
+ for href in tuple(new_calendars):
+ cal = (yield request.locateResource(str(href)))
+ if cal is None or not cal.exists() or not isCalendarCollectionResource(cal):
+ new_calendars.remove(href)
+ property.children = [davxml.HRef(href) for href in new_calendars]
elif property.qname() in (caldavxml.ScheduleDefaultCalendarURL.qname(), customxml.ScheduleDefaultTasksURL.qname()):
property = (yield self.writeDefaultCalendarProperty(request, property))
Modified: CalendarServer/trunk/twistedcaldav/test/test_schedule.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/test/test_schedule.py 2012-02-29 00:12:03 UTC (rev 8770)
+++ CalendarServer/trunk/twistedcaldav/test/test_schedule.py 2012-02-29 17:01:54 UTC (rev 8771)
@@ -91,6 +91,78 @@
request.stream = MemoryStream(query.toxml())
return self.send(request, propfind_cb)
+ @inlineCallbacks
+ def test_free_busy_set_remove_broken(self):
+ """
+ ???
+ """
+
+ request = SimpleRequest(self.site, "GET", "/inbox/")
+ inbox = yield request.locateResource("/inbox/")
+ self.assertTrue(inbox.hasDeadProperty(caldavxml.CalendarFreeBusySet))
+ oldfbset = set(("/calendar",))
+ oldset = caldavxml.CalendarFreeBusySet(*[davxml.HRef(url) for url in oldfbset])
+
+ newfbset = set()
+ newfbset.update(oldfbset)
+ newfbset.add("/calendar-broken")
+ newset = caldavxml.CalendarFreeBusySet(*[davxml.HRef(url) for url in newfbset])
+
+ inbox.writeDeadProperty(newset)
+ changedset = inbox.readDeadProperty(caldavxml.CalendarFreeBusySet)
+ self.assertEqual(tuple(changedset.children), tuple(newset.children))
+
+ yield inbox.writeProperty(newset, request)
+
+ changedset = inbox.readDeadProperty(caldavxml.CalendarFreeBusySet)
+ self.assertEqual(tuple(changedset.children), tuple(oldset.children))
+
+ @inlineCallbacks
+ def test_free_busy_set_strip_slash(self):
+ """
+ ???
+ """
+
+ request = SimpleRequest(self.site, "GET", "/inbox/")
+ inbox = yield request.locateResource("/inbox/")
+ self.assertTrue(inbox.hasDeadProperty(caldavxml.CalendarFreeBusySet))
+
+ oldfbset = set(("/calendar/",))
+ oldset = caldavxml.CalendarFreeBusySet(*[davxml.HRef(url) for url in oldfbset])
+ inbox.writeDeadProperty(oldset)
+
+ writefbset = set(("/calendar/",))
+ writeset = caldavxml.CalendarFreeBusySet(*[davxml.HRef(url) for url in writefbset])
+ yield inbox.writeProperty(writeset, request)
+
+ correctfbset = set(("/calendar",))
+ correctset = caldavxml.CalendarFreeBusySet(*[davxml.HRef(url) for url in correctfbset])
+ changedset = inbox.readDeadProperty(caldavxml.CalendarFreeBusySet)
+ self.assertEqual(tuple(changedset.children), tuple(correctset.children))
+
+ @inlineCallbacks
+ def test_free_busy_set_strip_slash_remove(self):
+ """
+ ???
+ """
+
+ request = SimpleRequest(self.site, "GET", "/inbox/")
+ inbox = yield request.locateResource("/inbox/")
+ self.assertTrue(inbox.hasDeadProperty(caldavxml.CalendarFreeBusySet))
+
+ oldfbset = set(("/calendar/", "/broken/"))
+ oldset = caldavxml.CalendarFreeBusySet(*[davxml.HRef(url) for url in oldfbset])
+ inbox.writeDeadProperty(oldset)
+
+ writefbset = set(("/calendar/", "/broken/"))
+ writeset = caldavxml.CalendarFreeBusySet(*[davxml.HRef(url) for url in writefbset])
+ yield inbox.writeProperty(writeset, request)
+
+ correctfbset = set(("/calendar",))
+ correctset = caldavxml.CalendarFreeBusySet(*[davxml.HRef(url) for url in correctfbset])
+ changedset = inbox.readDeadProperty(caldavxml.CalendarFreeBusySet)
+ self.assertEqual(tuple(changedset.children), tuple(correctset.children))
+
class DefaultCalendar (TestCase):
def setUp(self):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120229/9cf60dae/attachment.html>
More information about the calendarserver-changes
mailing list