# Copyright (c) 2009 Volker Mische (http://vmx.cx/) # Licensed under MIT. import sys, os, time, warnings from TileCache.Cache import Cache from couchdbkit import Server, ResourceNotFound class Couchdb(Cache): def __init__ (self, server = 'localhost:5984', db='tilecache', **kwargs): Cache.__init__(self, **kwargs) self.server = Server('http://' + server + '/') self.db = self.server.get_or_create_db(db) def getKey (self, tile): return "/".join(map(str, [tile.layer.name, tile.x, tile.y, tile.z])) def get (self, tile): key = self.getKey(tile) tile.data = self.db.fetch_attachment(key, key) return tile.data def set (self, tile, data): if self.readonly: return data key = self.getKey(tile) try: doc = self.db[key] except ResourceNotFound: doc = {} self.db[key] = doc self.db.put_attachment(doc, data, key, 'image/png') return data def delete (self, tile): key = self.getKey(tile) del self.db[key] def attemptLock (self, tile): pass def unlock (self, tile): pass