Revision: 9253 http://trac.macosforge.org/projects/calendarserver/changeset/9253 Author: cdaboo@apple.com Date: 2012-05-17 13:31:43 -0700 (Thu, 17 May 2012) Log Message: ----------- Clean up unused import. Handle foreign key reference for shared to someone else calendar. Modified Paths: -------------- CalendarServer/trunk/calendarserver/tools/obliterate.py Modified: CalendarServer/trunk/calendarserver/tools/obliterate.py =================================================================== --- CalendarServer/trunk/calendarserver/tools/obliterate.py 2012-05-17 17:54:21 UTC (rev 9252) +++ CalendarServer/trunk/calendarserver/tools/obliterate.py 2012-05-17 20:31:43 UTC (rev 9253) @@ -15,7 +15,6 @@ # See the License for the specific language governing permissions and # limitations under the License. ## -import time """ This tool scans wipes out user data without using slow store object apis @@ -38,7 +37,7 @@ from txdav.common.datastore.sql_tables import schema, _BIND_MODE_OWN import os import sys -import uuid +import time VERSION = "1" @@ -334,7 +333,7 @@ # Remove revisions - do before deleting calendars to remove # foreign key constraint - yield self.removeRevisionsForResourceID(homeID) + yield self.removeRevisionsForHomeResourceID(homeID) # Look at each calendar and unbind/delete-if-owned count = (yield self.deleteCalendars(homeID)) @@ -409,6 +408,9 @@ @inlineCallbacks def deleteCalendar(self, resourceID): + # Need to delete any remaining CALENDAR_OBJECT_REVISIONS entries + yield self.removeRevisionsForCalendarResourceID(resourceID) + # Delete the CALENDAR entry (will cascade to CALENDAR_BIND and CALENDAR_OBJECT) if not self.options["dry-run"]: ca = schema.CALENDAR @@ -444,7 +446,7 @@ @inlineCallbacks - def removeRevisionsForResourceID(self, resourceID): + def removeRevisionsForHomeResourceID(self, resourceID): if not self.options["dry-run"]: rev = schema.CALENDAR_OBJECT_REVISIONS kwds = { "ResourceID" : resourceID } @@ -457,6 +459,19 @@ @inlineCallbacks + def removeRevisionsForCalendarResourceID(self, resourceID): + if not self.options["dry-run"]: + rev = schema.CALENDAR_OBJECT_REVISIONS + kwds = { "ResourceID" : resourceID } + yield Delete( + From=rev, + Where=( + rev.CALENDAR_RESOURCE_ID == Parameter("ResourceID") + ), + ).on(self.txn, **kwds) + + + @inlineCallbacks def removePropertiesForResourceID(self, resourceID): if not self.options["dry-run"]: props = schema.RESOURCE_PROPERTY @@ -557,10 +572,6 @@ Stop the service. Nothing to do; everything should be finished by this time. """ - # TODO: stopping this service mid-export should really stop the export - # loop, but this is not implemented because nothing will actually do it - # except hitting ^C (which also calls reactor.stop(), so that will exit - # anyway).
participants (1)
-
source_changes@macosforge.org