Revision: 9324 http://trac.macosforge.org/projects/calendarserver/changeset/9324 Author: glyph@apple.com Date: 2012-06-01 12:33:48 -0700 (Fri, 01 Jun 2012) Log Message: ----------- Normalize UUIDs when migrating from the file store as well. Modified Paths: -------------- CalendarServer/trunk/txdav/caldav/datastore/util.py CalendarServer/trunk/txdav/common/datastore/upgrade/migrate.py Property Changed: ---------------- CalendarServer/trunk/ Modified: CalendarServer/trunk/txdav/caldav/datastore/util.py =================================================================== --- CalendarServer/trunk/txdav/caldav/datastore/util.py 2012-06-01 17:45:07 UTC (rev 9323) +++ CalendarServer/trunk/txdav/caldav/datastore/util.py 2012-06-01 19:33:48 UTC (rev 9324) @@ -191,8 +191,7 @@ continue try: # Must account for metadata - component = (yield calendarObject.component()) - # ^ FIXME: TESTME: SHOULD CALL 'getComponent' argument + component = yield getComponent(calendarObject) component.md5 = calendarObject.md5() yield outCalendar.createCalendarObjectWithName( calendarObject.name(), Modified: CalendarServer/trunk/txdav/common/datastore/upgrade/migrate.py =================================================================== --- CalendarServer/trunk/txdav/common/datastore/upgrade/migrate.py 2012-06-01 17:45:07 UTC (rev 9323) +++ CalendarServer/trunk/txdav/common/datastore/upgrade/migrate.py 2012-06-01 19:33:48 UTC (rev 9324) @@ -46,16 +46,39 @@ from txdav.base.propertystore.xattr import PropertyStore as XattrPropertyStore from txdav.base.propertystore.appledouble_xattr import (PropertyStore as AppleDoubleStore) +from txdav.caldav.datastore.util import fixOneCalendarObject +from txdav.base.datastore.util import normalizeUUIDOrNot + +@inlineCallbacks +def _getFixedComponent(cobj): + """ + Retrieve a UUID-normalized component from a calendar object (for migrating + from the file store). + + @param cobj: a calendar object from the file store. + @type cobj: L{ICalendarObject} + + @return: a L{Deferred} which fires with the appropriate L{Component}. + """ + comp = yield cobj.component() + fixes, fixed = fixOneCalendarObject(comp) + returnValue(fixed) + + + homeTypeLookup = { - "calendar": (migrateCalendarHome, - lambda txn: txn.calendarHomeWithUID), + "calendar": ( + lambda inHome, outHome, getComponent=None, merge=False: + migrateCalendarHome(inHome, outHome, _getFixedComponent, merge), + lambda txn: txn.calendarHomeWithUID), "addressbook": (migrateAddressbookHome, lambda txn: txn.addressbookHomeWithUID) } + def swapAMP(oldAMP, newAMP): """ Swap delivery of messages from an old L{AMP} instance to a new one. @@ -309,7 +332,7 @@ Migrate an individual calendar or addressbook home. """ migrateFunc, destFunc = homeTypeLookup.get(homeType) - uid = fileHome.uid() + uid = normalizeUUIDOrNot(fileHome.uid()) self.log_warn("Starting migration transaction %s UID %r" % (homeType, uid)) sqlTxn = self.sqlStore.newTransaction() @@ -341,7 +364,6 @@ fileHome._path.remove() - @inlineCallbacks def doMigration(self): """
participants (1)
-
source_changes@macosforge.org