cqle: don't mess with Token values in iff conditional
This commit is contained in:
@@ -550,25 +550,13 @@ class AbstractQuerySet(object):
|
|||||||
clone._transaction.append(operator)
|
clone._transaction.append(operator)
|
||||||
|
|
||||||
for col_name, val in kwargs.items():
|
for col_name, val in kwargs.items():
|
||||||
|
if isinstance(val, Token):
|
||||||
|
raise QueryException("Token() values are not valid in conditionals")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
column = self.model._get_column(col_name)
|
column = self.model._get_column(col_name)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
if col_name == 'pk__token':
|
raise QueryException("Can't resolve column name: '{0}'".format(col_name))
|
||||||
if not isinstance(val, Token):
|
|
||||||
raise QueryException("Virtual column 'pk__token' may only be compared to Token() values")
|
|
||||||
column = columns._PartitionKeysToken(self.model)
|
|
||||||
else:
|
|
||||||
raise QueryException("Can't resolve column name: '{0}'".format(col_name))
|
|
||||||
|
|
||||||
if isinstance(val, Token):
|
|
||||||
if col_name != 'pk__token':
|
|
||||||
raise QueryException("Token() values may only be compared to the 'pk__token' virtual column")
|
|
||||||
partition_columns = column.partition_columns
|
|
||||||
if len(partition_columns) != len(val.value):
|
|
||||||
raise QueryException(
|
|
||||||
'Token() received {0} arguments but model has {1} partition keys'.format(
|
|
||||||
len(val.value), len(partition_columns)))
|
|
||||||
val.set_columns(partition_columns)
|
|
||||||
|
|
||||||
if isinstance(val, BaseQueryFunction):
|
if isinstance(val, BaseQueryFunction):
|
||||||
query_val = val
|
query_val = val
|
||||||
|
|||||||
Reference in New Issue
Block a user