allow for IS_IN_DB(db,db.thing.id,db.thing.name)
This commit is contained in:
+13
-5
@@ -22,7 +22,7 @@ import decimal
|
|||||||
import unicodedata
|
import unicodedata
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
from gluon.utils import simple_hash, web2py_uuid, DIGEST_ALG_BY_SIZE
|
from gluon.utils import simple_hash, web2py_uuid, DIGEST_ALG_BY_SIZE
|
||||||
from pydal.objects import FieldVirtual, FieldMethod
|
from pydal.objects import Field, FieldVirtual, FieldMethod
|
||||||
|
|
||||||
regex_isint = re.compile('^[+-]?\d+$')
|
regex_isint = re.compile('^[+-]?\d+$')
|
||||||
|
|
||||||
@@ -512,13 +512,18 @@ class IS_IN_DB(Validator):
|
|||||||
left=None
|
left=None
|
||||||
):
|
):
|
||||||
from pydal.objects import Table
|
from pydal.objects import Table
|
||||||
if isinstance(field, Table):
|
|
||||||
field = field._id
|
|
||||||
|
|
||||||
if hasattr(dbset, 'define_table'):
|
if hasattr(dbset, 'define_table'):
|
||||||
self.dbset = dbset()
|
self.dbset = dbset()
|
||||||
else:
|
else:
|
||||||
self.dbset = dbset
|
self.dbset = dbset
|
||||||
|
|
||||||
|
if isinstance(field, Table):
|
||||||
|
field = field._id
|
||||||
|
elif isinstance(field, str):
|
||||||
|
items = field.split('.')
|
||||||
|
if len(items)==1: items+=['id']
|
||||||
|
field = self.dbset.db[items[0]][items[1]]
|
||||||
|
|
||||||
(ktable, kfield) = str(field).split('.')
|
(ktable, kfield) = str(field).split('.')
|
||||||
if not label:
|
if not label:
|
||||||
label = '%%(%s)s' % kfield
|
label = '%%(%s)s' % kfield
|
||||||
@@ -532,7 +537,8 @@ class IS_IN_DB(Validator):
|
|||||||
else:
|
else:
|
||||||
ks = [kfield]
|
ks = [kfield]
|
||||||
fields = 'all'
|
fields = 'all'
|
||||||
self.fields = fields
|
self.field = field # the lookup field
|
||||||
|
self.fields = fields # fields requires to build the formatting
|
||||||
self.label = label
|
self.label = label
|
||||||
self.ktable = ktable
|
self.ktable = ktable
|
||||||
self.kfield = kfield
|
self.kfield = kfield
|
||||||
@@ -579,6 +585,8 @@ class IS_IN_DB(Validator):
|
|||||||
self.theset = [str(r[self.kfield]) for r in records]
|
self.theset = [str(r[self.kfield]) for r in records]
|
||||||
if isinstance(self.label, str):
|
if isinstance(self.label, str):
|
||||||
self.labels = [self.label % r for r in records]
|
self.labels = [self.label % r for r in records]
|
||||||
|
elif isinstance(self.label, Field):
|
||||||
|
self.labels = [r[self.label.name] for r in records]
|
||||||
else:
|
else:
|
||||||
self.labels = [self.label(r) for r in records]
|
self.labels = [self.label(r) for r in records]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user