from BTrees.OOBTree import OOBTree
from BTrees.IOBTree import IOBTree

def migrate(p) :
	if hasattr(p, '_variants') :
		delattr(p, '_variants')
	
	if not hasattr(p, 'tiles_available') :
		p.tiles_available = 0
	
	
	if hasattr(p, '_methodResultsCache') and p._methodResultsCache.has_key('_getTile'):
		p._tiles = OOBTree()
		for args, value in p._methodResultsCache['_getTile'].items() :
			args = dict(args)
			zoom = float(args['zoom'])
			x = int(args['x'])
			y = int(args['y'])

			if not p._tiles.has_key(zoom) :
				p._tiles[zoom] = IOBTree()
			if not p._tiles[zoom].has_key(x) :
				p._tiles[zoom][x] = IOBTree()
			
			p._tiles[zoom][x][y] = value
		del p._methodResultsCache['_getTile']
		
	elif not hasattr(p, '_tiles'):
		p._tiles = OOBTree()
		p.tiles_available = 0
