I made some changes in trunk that should have fixed the date/datetime issue but I am not sure. Can you try it?
On Oct 24, 7:25 pm, "H.C. v. Stockhausen" <h...@vst.io> wrote: > Hi Massimo, > > thanks for your reply. I don't think CouchDB has a datetime type but > the CouchDB-0.8 driver itself maps to and from iso string > representations '2007-04-01T15:30:00Z'. See Chapter 4 "Mapping CouchDB > documents to Python objects: couchdb.mapping" > athttp://packages.python.org/CouchDB/mapping.html > Would it make sense for DAL to use couchdb.mapping directly? > > I'd like to help but I don't understand dal well enough yet and in > particular the importance of the base class NoSQLAdapter. Does the > couchDB adapter really need to derive from it? > > Best regards, > HC > > On Oct 23, 5:48 pm, Massimo Di Pierro <massimo.dipie...@gmail.com> > wrote: > > > > > > > > > This is very helpful. I was expecting this problem. How are datetimes > > supposed to be stores in CouchDB? > > > On Oct 22, 3:13 am, "H.C. v. Stockhausen" <h...@vst.io> wrote: > > > > Hi > > > > I am just testing the CouchDB Adapter and it fails when registering a > > > new user. I tired both w2py's default auth and janrain. The problem > > > appears to be the time_stamp field. > > > > - w2py Version 1.99.2 (2011-09-26 06:55:33) stable > > > - driver CouchDB-0.8-py2.6.egg > > > > Traceback > > > ======== > > > File "/home/hcvst/web2py/gluon/dal.py", line 3510, in insert > > > ctable.save(values) > > > File "/usr/local/lib/python2.6/dist-packages/CouchDB-0.8-py2.6.egg/ > > > couchdb/client.py", line 407, in save > > > _, _, data = func(body=doc, **options) > > > File "/usr/local/lib/python2.6/dist-packages/CouchDB-0.8-py2.6.egg/ > > > couchdb/http.py", line 405, in put_json > > > status, headers, data = self.put(*a, **k) > > > File "/usr/local/lib/python2.6/dist-packages/CouchDB-0.8-py2.6.egg/ > > > couchdb/http.py", line 384, in put > > > return self._request('PUT', path, body=body, headers=headers, > > > **params) > > > File "/usr/local/lib/python2.6/dist-packages/CouchDB-0.8-py2.6.egg/ > > > couchdb/http.py", line 419, in _request > > > credentials=self.credentials) > > > File "/usr/local/lib/python2.6/dist-packages/CouchDB-0.8-py2.6.egg/ > > > couchdb/http.py", line 239, in request > > > resp = _try_request_with_retries(iter(self.retry_delays)) > > > File "/usr/local/lib/python2.6/dist-packages/CouchDB-0.8-py2.6.egg/ > > > couchdb/http.py", line 196, in _try_request_with_retries > > > return _try_request() > > > File "/usr/local/lib/python2.6/dist-packages/CouchDB-0.8-py2.6.egg/ > > > couchdb/http.py", line 222, in _try_request > > > chunk = body.read(CHUNK_SIZE) > > > AttributeError: 'dict' object has no attribute 'read' > > > > DAL CODE (dal.py at line 3510) > > > ========= > > > def insert(self,table,fields): > > > id = uuid2int(web2py_uuid()) > > > ctable = self.connection[table._tablename] > > > values = dict((k.name,NoSQLAdapter.represent(self,v,k.type)) > > > for k,v in fields) > > > values['_id'] = str(id) > > > ctable.save(values) # line 3510 > > > > DRIVER CODE (..egg/couchdb/http.py in _try_request at line 222) > > > ============ > > > if body is not None: > > > if isinstance(body, str): > > > conn.sock.sendall(body) > > > else: # assume a file-like object and send in > > > chunks > > > while 1: > > > chunk = body.read(CHUNK_SIZE) # line 222 > > > > BODY VARIABLE > > > ============== > > > {'_id': '156782505411822007491552899341462059095', 'client_ip': > > > u'127.0.0.1', 'description': u'Group > > > 128304130898558275345572010972780625739 created', 'origin': u'auth', > > > 'time_stamp': datetime.datetime(2011, 10, 22, 3, 48, 48, 413381), > > > 'user_id': None} > > > > The problem is probably that the BODY time_stamp attribute of type > > > datetime cannot be JSON serialized but I don't know dal.py well enough > > > to say what NoSQLAdapter.represent should return. > > > > Best regards, > > > HC