--- a/thirdparty/google_appengine/google/appengine/api/datastore.py Sat Dec 06 14:50:45 2008 +0000
+++ b/thirdparty/google_appengine/google/appengine/api/datastore.py Sat Dec 06 16:52:21 2008 +0000
@@ -243,7 +243,7 @@
keys: Key or string or list of Keys or strings
Raises:
- TransactionFailedError, if the Put could not be committed.
+ TransactionFailedError, if the Delete could not be committed.
"""
keys, multiple = NormalizeAndTypeCheckKeys(keys)
@@ -882,7 +882,7 @@
_ToDatastoreError(err)
except datastore_errors.NeedIndexError, exc:
yaml = datastore_index.IndexYamlForQuery(
- *datastore_index.CompositeIndexForQuery(pb)[:-1])
+ *datastore_index.CompositeIndexForQuery(pb)[1:-1])
raise datastore_errors.NeedIndexError(
str(exc) + '\nThis query needs this index:\n' + yaml)
@@ -976,7 +976,7 @@
if isinstance(value, tuple):
value = list(value)
- datastore_types.ValidateProperty(' ', value)
+ datastore_types.ValidateProperty(' ', value, read_only=True)
match = self._CheckFilter(filter, value)
property = match.group(1)
operator = match.group(3)
@@ -1065,6 +1065,8 @@
property = match.group(1)
operator = match.group(3)
+ if operator is None:
+ operator = '='
if isinstance(values, tuple):
values = list(values)
@@ -1087,6 +1089,13 @@
'Inequality operators (%s) must be on the same property as the '
'first sort order, if any sort orders are supplied' %
', '.join(self.INEQUALITY_OPERATORS))
+ elif property in datastore_types._SPECIAL_PROPERTIES:
+ if property == datastore_types._KEY_SPECIAL_PROPERTY:
+ for value in values:
+ if not isinstance(value, Key):
+ raise datastore_errors.BadFilterError(
+ '%s filter value must be a Key; received %s (a %s)' %
+ (datastore_types._KEY_SPECIAL_PROPERTY, value, typename(value)))
return match