GAE references, thanks Christian

This commit is contained in:
mdipierro
2012-06-16 16:49:06 -05:00
parent 2877daa369
commit 7b6f5dff48
3 changed files with 15 additions and 7 deletions
+12 -4
View File
@@ -1661,7 +1661,10 @@ class BaseAdapter(ConnectionPool):
return value
def parse_id(self, value, field_type):
return int(value)
if isinstance(self, GoogleDatastoreAdapter) :
return value
else:
return int(value)
def parse_integer(self, value, field_type):
return int(value)
@@ -1722,7 +1725,12 @@ class BaseAdapter(ConnectionPool):
colset[fieldname] = value
if field.type == 'id':
id = value
if isinstance(self, GoogleDatastoreAdapter) :
id = value.key().id_or_name()
colset[fieldname] = id
colset.gae_item = value
else:
id = value
colset.update_record = lambda _ = (colset, table, id), **a: update_record(_, a)
colset.delete_record = lambda t = table, i = id: t._db(t._id==i).delete()
for (referee_table, referee_name) in table._referenced_by:
@@ -4219,7 +4227,7 @@ class GoogleDatastoreAdapter(NoSQLAdapter):
(items, tablename, fields) = self.select_raw(query,fields,attributes)
# self.db['_lastsql'] = self._select(query,fields,attributes)
rows = [[(t==self.db[tablename]._id.name and item.key().id_or_name()) or \
rows = [[(t==self.db[tablename]._id.name and item) or \
(t=='nativeRef' and item) or getattr(item, t) \
for t in fields] for item in items]
colnames = ['%s.%s' % (tablename, t) for t in fields]
@@ -4274,7 +4282,7 @@ class GoogleDatastoreAdapter(NoSQLAdapter):
tmp = table._tableobj(**dfields)
tmp.put()
rid = Reference(tmp.key().id())
(rid._table, rid._record) = (table, None)
(rid._table, rid._record, rid._gaekey) = (table, None, tmp.key())
return rid
def bulk_insert(self,table,items):