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
+1 -1
View File
@@ -1 +1 @@
Version 2.00.0 (2012-06-15 13:17:03) dev
Version 2.00.0 (2012-06-16 16:49:01) dev
+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):
+2 -2
View File
@@ -2271,7 +2271,7 @@ class SQLTABLE(TABLE):
except TypeError:
href = '%s/%s/%s' % (linkto, tablename, r_old)
r = A(r, _href=href)
elif field.type.startswith('reference'):
elif isinstance(field.type, str) and field.type.startswith('reference'):
if linkto:
ref = field.type[10:]
try:
@@ -2294,7 +2294,7 @@ class SQLTABLE(TABLE):
(k, record[tablename][k])) or (k, record[k]) \
for k in field._table._primarykey ] ))
r = A(r, _href='%s/%s?%s' % (linkto, tablename, key))
elif field.type.startswith('list:'):
elif isinstance(field.type, str) and field.type.startswith('list:'):
r = represent(field,r or [],record)
elif field.represent:
r = represent(field,r,record)