Skip to content

Commit db14e2b

Browse files
committed
nouveau, and fixed config()
Signed-off-by: electimon <electi@yzu.moe>
1 parent f6e718d commit db14e2b

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

couchdb/client.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ def __getitem__(self, name):
141141
:rtype: `Database`
142142
:raise ResourceNotFound: if no database with that name exists
143143
"""
144-
db = Database(self.resource(name), name)
144+
uses_nouveau = self.config().get('nouveau', {}).get('enable', False)
145+
db = Database(self.resource(name), name, uses_nouveau=uses_nouveau)
145146
db.resource.head() # actually make a request to the database
146147
return db
147148

@@ -154,7 +155,7 @@ def config(self):
154155
155156
:rtype: `dict`
156157
"""
157-
status, headers, data = self.resource.get_json('_config')
158+
status, headers, data = self.resource('_node', '_local').get_json('_config')
158159
return data
159160

160161
def version(self):
@@ -371,14 +372,15 @@ class Database(object):
371372
>>> db.resource.session.disable_ssl_verification()
372373
"""
373374

374-
def __init__(self, url, name=None, session=None):
375+
def __init__(self, url, name=None, session=None, uses_nouveau=False):
375376
if isinstance(url, util.strbase):
376377
if not url.startswith('http'):
377378
url = DEFAULT_BASE_URL + url
378379
self.resource = http.Resource(url, session)
379380
else:
380381
self.resource = url
381382
self._name = name
383+
self.uses_nouveau = uses_nouveau
382384

383385
def __repr__(self):
384386
return '<%s %r>' % (type(self).__name__, self.name)
@@ -1158,10 +1160,12 @@ def search(self, name, wrapper=None, **options):
11581160
:return: the view results
11591161
:rtype: `ViewResults`
11601162
"""
1161-
path = _path_from_name(name, '_search')
1163+
if self.uses_nouveau:
1164+
path = _path_from_name(name, '_nouveau')
1165+
else:
1166+
path = _path_from_name(name, '_search')
11621167
return PermanentView(self.resource(*path), '/'.join(path),
1163-
wrapper=wrapper)(**options)
1164-
1168+
wrapper=wrapper, uses_nouveau=self.uses_nouveau)(**options)
11651169

11661170
def _doc_resource(base, doc_id):
11671171
"""Return the resource for the given document id.
@@ -1216,12 +1220,13 @@ def rev(self):
12161220
class View(object):
12171221
"""Abstract representation of a view or query."""
12181222

1219-
def __init__(self, url, wrapper=None, session=None):
1223+
def __init__(self, url, wrapper=None, session=None, uses_nouveau=False):
12201224
if isinstance(url, util.strbase):
12211225
self.resource = http.Resource(url, session)
12221226
else:
12231227
self.resource = url
12241228
self.wrapper = wrapper
1229+
self.uses_nouveau = uses_nouveau
12251230

12261231
def __call__(self, **options):
12271232
return ViewResults(self, options)
@@ -1236,8 +1241,8 @@ def _exec(self, options):
12361241
class PermanentView(View):
12371242
"""Representation of a permanent view on the server."""
12381243

1239-
def __init__(self, uri, name, wrapper=None, session=None):
1240-
View.__init__(self, uri, wrapper=wrapper, session=session)
1244+
def __init__(self, uri, name, wrapper=None, session=None, uses_nouveau=False):
1245+
View.__init__(self, uri, wrapper=wrapper, session=session, uses_nouveau=uses_nouveau)
12411246
self.name = name
12421247

12431248
def __repr__(self):
@@ -1252,8 +1257,8 @@ class TemporaryView(View):
12521257
"""Representation of a temporary view."""
12531258

12541259
def __init__(self, uri, map_fun, reduce_fun=None,
1255-
language='javascript', wrapper=None, session=None):
1256-
View.__init__(self, uri, wrapper=wrapper, session=session)
1260+
language='javascript', wrapper=None, session=None, uses_nouveau=False):
1261+
View.__init__(self, uri, wrapper=wrapper, session=session, uses_nouveau=uses_nouveau)
12571262
if isinstance(map_fun, FunctionType):
12581263
map_fun = getsource(map_fun).rstrip('\n\r')
12591264
self.map_fun = dedent(map_fun.lstrip('\n\r'))
@@ -1380,8 +1385,12 @@ def __len__(self):
13801385
def _fetch(self):
13811386
data = self.view._exec(self.options)
13821387
wrapper = self.view.wrapper or Row
1383-
self._rows = [wrapper(row) for row in data['rows']]
1384-
self._total_rows = data.get('total_rows')
1388+
if self.view.uses_nouveau:
1389+
self._rows = [wrapper(row) for row in data['hits']]
1390+
self._total_rows = data.get('total_hits')
1391+
else:
1392+
self._rows = [wrapper(row) for row in data['rows']]
1393+
self._total_rows = data.get('total_rows')
13851394
self._offset = data.get('offset', 0)
13861395
self._update_seq = data.get('update_seq')
13871396

0 commit comments

Comments
 (0)