def __init__(self, **kwargs): config = {} if hasattr(settings, "COUCHDB_STORAGE_OPTIONS"): config.update(settings.COUCHDB_STORAGE_OPTIONS) config.update(kwargs) self.base_url = config.get('server', DEFAULT_SERVER) self.db = setup_couchdb(self.base_url, config.get('database'))
def save(self): """ Save document to CouchDB. If the document exists already, get previous revision and update document """ if not (hasattr(self, 'server') or hasattr(self, 'database')): raise RuntimeError("object has not been told where to save!") couchdb = setup_couchdb(self.server, self.database) if self.id in couchdb: doc = couchdb[self.id] self.update(doc) couchdb[self.id] = self
def load_template_source(template_name, template_dirs=None): if not hasattr(settings, 'TEMPLATE_COUCHDB_SERVER'): error_msg = "CouchDB Template Loader not configured" raise TemplateDoesNotExist, error_msg server = settings.TEMPLATE_COUCHDB_SERVER databasename = getattr(settings, 'TEMPLATE_COUCHDB_DATABASE', 'templates') database = setup_couchdb(server, databasename) if template_name in database: doc = database[template_name] try: template = doc['source'] return template, urljoin(server, databasename, template_name) except KeyError: error_msg = "Document does not contain template code" else: error_msg = "No template '%s' found" % template_name raise TemplateDoesNotExist, error_msg
def couch(): """Helper function""" return setup_couchdb(settings.TEMPLATE_COUCHDB_SERVER, getattr(settings, 'TEMPLATE_COUCHDB_DATABASE', 'templates'))
def _connection(self, server=None, database=None): """Cache connection to CouchDB""" if self._couchcon is None: self._couchcon = setup_couchdb(server, database) return self._couchcon