@@ -141,7 +141,8 @@ def __getitem__(self, name):
141
141
:rtype: `Database`
142
142
:raise ResourceNotFound: if no database with that name exists
143
143
"""
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 )
145
146
db .resource .head () # actually make a request to the database
146
147
return db
147
148
@@ -154,7 +155,7 @@ def config(self):
154
155
155
156
:rtype: `dict`
156
157
"""
157
- status , headers , data = self .resource .get_json ('_config' )
158
+ status , headers , data = self .resource ( '_node' , '_local' ) .get_json ('_config' )
158
159
return data
159
160
160
161
def version (self ):
@@ -371,14 +372,15 @@ class Database(object):
371
372
>>> db.resource.session.disable_ssl_verification()
372
373
"""
373
374
374
- def __init__ (self , url , name = None , session = None ):
375
+ def __init__ (self , url , name = None , session = None , uses_nouveau = False ):
375
376
if isinstance (url , util .strbase ):
376
377
if not url .startswith ('http' ):
377
378
url = DEFAULT_BASE_URL + url
378
379
self .resource = http .Resource (url , session )
379
380
else :
380
381
self .resource = url
381
382
self ._name = name
383
+ self .uses_nouveau = uses_nouveau
382
384
383
385
def __repr__ (self ):
384
386
return '<%s %r>' % (type (self ).__name__ , self .name )
@@ -1158,10 +1160,12 @@ def search(self, name, wrapper=None, **options):
1158
1160
:return: the view results
1159
1161
:rtype: `ViewResults`
1160
1162
"""
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' )
1162
1167
return PermanentView (self .resource (* path ), '/' .join (path ),
1163
- wrapper = wrapper )(** options )
1164
-
1168
+ wrapper = wrapper , uses_nouveau = self .uses_nouveau )(** options )
1165
1169
1166
1170
def _doc_resource (base , doc_id ):
1167
1171
"""Return the resource for the given document id.
@@ -1216,12 +1220,13 @@ def rev(self):
1216
1220
class View (object ):
1217
1221
"""Abstract representation of a view or query."""
1218
1222
1219
- def __init__ (self , url , wrapper = None , session = None ):
1223
+ def __init__ (self , url , wrapper = None , session = None , uses_nouveau = False ):
1220
1224
if isinstance (url , util .strbase ):
1221
1225
self .resource = http .Resource (url , session )
1222
1226
else :
1223
1227
self .resource = url
1224
1228
self .wrapper = wrapper
1229
+ self .uses_nouveau = uses_nouveau
1225
1230
1226
1231
def __call__ (self , ** options ):
1227
1232
return ViewResults (self , options )
@@ -1236,8 +1241,8 @@ def _exec(self, options):
1236
1241
class PermanentView (View ):
1237
1242
"""Representation of a permanent view on the server."""
1238
1243
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 )
1241
1246
self .name = name
1242
1247
1243
1248
def __repr__ (self ):
@@ -1252,8 +1257,8 @@ class TemporaryView(View):
1252
1257
"""Representation of a temporary view."""
1253
1258
1254
1259
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 )
1257
1262
if isinstance (map_fun , FunctionType ):
1258
1263
map_fun = getsource (map_fun ).rstrip ('\n \r ' )
1259
1264
self .map_fun = dedent (map_fun .lstrip ('\n \r ' ))
@@ -1380,8 +1385,12 @@ def __len__(self):
1380
1385
def _fetch (self ):
1381
1386
data = self .view ._exec (self .options )
1382
1387
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' )
1385
1394
self ._offset = data .get ('offset' , 0 )
1386
1395
self ._update_seq = data .get ('update_seq' )
1387
1396
0 commit comments