From f2bc3cca3617cc0a6da45b1cfe2f534e93d1f700 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Tue, 8 Jul 2014 12:22:31 +0200 Subject: [PATCH 1/3] fix show_if with belongs --- gluon/sqlhtml.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index b0b4db90..4d527ae0 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -95,8 +95,11 @@ def show_if(cond): return base, "[value!='%s']" % cond.second if cond.op.__name__ == 'CONTAINS': return base, "[value~='%s']" % cond.second - if cond.op.__name__ == 'BELONGS' and isinstance(cond.second, (list, tuple)): - return base, ','.join("[value='%s']" % (v) for v in cond.second) + if cond.op.__name__ == 'BELONGS': + if isinstance(cond.second, set): + cond.second = list(cond.second) + if isinstance(cond.second, (list, tuple)): + return base, ','.join("[value='%s']" % (v) for v in cond.second) raise RuntimeError("Not Implemented Error") From e7208c65695c117e21eddd5a3e48f9d1546eb189 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Tue, 8 Jul 2014 23:14:28 +0200 Subject: [PATCH 2/3] fix unique validator with date/time fields --- gluon/dal.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gluon/dal.py b/gluon/dal.py index 0dcd6fee..95bbe4e7 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -7390,7 +7390,10 @@ def sqlhtml_validators(field): def repr_list(values, row=None): return', '.join(str(v) for v in (values or [])) field.represent = field.represent or repr_list if field.unique: - requires.insert(0, validators.IS_NOT_IN_DB(db, field)) + if db._adapter.dbengine == 'sqlite' and field_type in ['date', 'time']: + requires.append(validators.IS_NOT_IN_DB(db, field)) + else: + requires.insert(0, validators.IS_NOT_IN_DB(db, field)) sff = ['in', 'do', 'da', 'ti', 'de', 'bo'] if field.notnull and not field_type[:2] in sff: requires.insert(0, validators.IS_NOT_EMPTY()) From 609a931f915ffca2eab5239cb0d9cedfa836b512 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Wed, 9 Jul 2014 17:05:36 +0200 Subject: [PATCH 3/3] always appends IS_NOT_IN_DB --- gluon/dal.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/gluon/dal.py b/gluon/dal.py index 95bbe4e7..ecbe2bfe 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -7390,10 +7390,7 @@ def sqlhtml_validators(field): def repr_list(values, row=None): return', '.join(str(v) for v in (values or [])) field.represent = field.represent or repr_list if field.unique: - if db._adapter.dbengine == 'sqlite' and field_type in ['date', 'time']: - requires.append(validators.IS_NOT_IN_DB(db, field)) - else: - requires.insert(0, validators.IS_NOT_IN_DB(db, field)) + requires.append(validators.IS_NOT_IN_DB(db, field)) sff = ['in', 'do', 'da', 'ti', 'de', 'bo'] if field.notnull and not field_type[:2] in sff: requires.insert(0, validators.IS_NOT_EMPTY())