Merge ssh://github.com/web2py/web2py

This commit is contained in:
Michele Comitini committed 2013-07-31 23:48:29 +02:00
commit 788b9e317f
3 files changed
+18 -9

No files matched your search

+1 -1
View File
@@ -1 +1 @@
Version 2.6.0-development+timestamp.2013.07.29.07.50.41 Version 2.6.0-development+timestamp.2013.07.31.11.44.33
+16 -7
View File
@@ -8369,21 +8369,23 @@ class Table(object):
db = self._db db = self._db
pr = db._pending_references pr = db._pending_references
self._referenced_by = [] self._referenced_by = []
self._references = []
for field in self: for field in self:
fieldname = field.name fieldname = field.name
field_type = field.type field_type = field.type
if isinstance(field_type,str) and field_type[:10] == 'reference ': if isinstance(field_type,str) and field_type[:10] == 'reference ':
ref = field_type[10:].strip() ref = field_type[10:].strip()
if not ref.split(): if not ref.strip():
raise SyntaxError('Table: reference to nothing: %s' %ref) raise SyntaxError('Table: reference to nothing: %s' %ref)
refs = ref.split('.') if '.' in ref:
rtablename = refs[0] rtablename, rfieldname = ref.split('.',1)
else:
rtablename, rfieldname = ref, None
if not rtablename in db: if not rtablename in db:
pr[rtablename] = pr.get(rtablename,[]) + [field] pr[rtablename] = pr.get(rtablename,[]) + [field]
continue continue
rtable = db[rtablename] rtable = db[rtablename]
if len(refs)==2: if rfieldname:
rfieldname = refs[1]
if not hasattr(rtable,'_primarykey'): if not hasattr(rtable,'_primarykey'):
raise SyntaxError( raise SyntaxError(
'keyed tables can only reference other keyed tables (for now)') 'keyed tables can only reference other keyed tables (for now)')
@@ -8391,10 +8393,17 @@ class Table(object):
raise SyntaxError( raise SyntaxError(
"invalid field '%s' for referenced table '%s' in table '%s'" \ "invalid field '%s' for referenced table '%s' in table '%s'" \
% (rfieldname, rtablename, self._tablename)) % (rfieldname, rtablename, self._tablename))
rfield = rtable[rfieldname]
else:
rfield = rtable._id
rtable._referenced_by.append(field) rtable._referenced_by.append(field)
field.referent = rfield
self._references.append(field)
else:
field.referent = None
for referee in pr.get(self._tablename,[]): for referee in pr.get(self._tablename,[]):
self._referenced_by.append(referee) self._referenced_by.append(referee)
def _filter_fields(self, record, id=False): def _filter_fields(self, record, id=False):
return dict([(k, v) for (k, v) in record.iteritems() if k return dict([(k, v) for (k, v) in record.iteritems() if k
in self.fields and (self[k].type!='id' or id)]) in self.fields and (self[k].type!='id' or id)])
+1 -1
View File
@@ -46,7 +46,7 @@ import hmac
try: try:
try: try:
from contrib.pbkdf2_ctypes import pbkdf2_hex from contrib.pbkdf2_ctypes import pbkdf2_hex
except ImportError: except (ImportError, AttributeError):
from contrib.pbkdf2 import pbkdf2_hex from contrib.pbkdf2 import pbkdf2_hex
HAVE_PBKDF2 = True HAVE_PBKDF2 = True
except ImportError: except ImportError: