Merge ssh://github.com/web2py/web2py
This commit is contained in:
commit
788b9e317f
3 files changed
+16
-7
No files matched your search
@@ -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
|
||||||
+14
-5
@@ -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,7 +8393,14 @@ 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)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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:
|
||||||
|
|||||||
Reference in new issue
Block a user