Merge remote branch 'hmarr/master'
This commit is contained in:
		| @@ -33,14 +33,14 @@ class Q(object): | |||||||
|     AND = '&&' |     AND = '&&' | ||||||
|     OPERATORS = { |     OPERATORS = { | ||||||
|         'eq': 'this.%(field)s == %(value)s', |         'eq': 'this.%(field)s == %(value)s', | ||||||
|         'neq': 'this.%(field)s != %(value)s', |         'ne': 'this.%(field)s != %(value)s', | ||||||
|         'gt': 'this.%(field)s > %(value)s', |         'gt': 'this.%(field)s > %(value)s', | ||||||
|         'gte': 'this.%(field)s >= %(value)s', |         'gte': 'this.%(field)s >= %(value)s', | ||||||
|         'lt': 'this.%(field)s < %(value)s', |         'lt': 'this.%(field)s < %(value)s', | ||||||
|         'lte': 'this.%(field)s <= %(value)s', |         'lte': 'this.%(field)s <= %(value)s', | ||||||
|         'lte': 'this.%(field)s <= %(value)s', |         'lte': 'this.%(field)s <= %(value)s', | ||||||
|         'in': 'this.%(field)s.indexOf(%(value)s) != -1', |         'in': '%(value)s.indexOf(this.%(field)s) != -1', | ||||||
|         'nin': 'this.%(field)s.indexOf(%(value)s) == -1', |         'nin': '%(value)s.indexOf(this.%(field)s) == -1', | ||||||
|         'mod': '%(field)s %% %(value)s', |         'mod': '%(field)s %% %(value)s', | ||||||
|         'all': ('%(value)s.every(function(a){' |         'all': ('%(value)s.every(function(a){' | ||||||
|                 'return this.%(field)s.indexOf(a) != -1 })'), |                 'return this.%(field)s.indexOf(a) != -1 })'), | ||||||
| @@ -265,7 +265,7 @@ class QuerySet(object): | |||||||
|     def _transform_query(cls, _doc_cls=None, **query): |     def _transform_query(cls, _doc_cls=None, **query): | ||||||
|         """Transform a query from Django-style format to Mongo format. |         """Transform a query from Django-style format to Mongo format. | ||||||
|         """ |         """ | ||||||
|         operators = ['neq', 'gt', 'gte', 'lt', 'lte', 'in', 'nin', 'mod', |         operators = ['ne', 'gt', 'gte', 'lt', 'lte', 'in', 'nin', 'mod', | ||||||
|                      'all', 'size', 'exists'] |                      'all', 'size', 'exists'] | ||||||
|  |  | ||||||
|         mongo_query = {} |         mongo_query = {} | ||||||
| @@ -283,7 +283,7 @@ class QuerySet(object): | |||||||
|  |  | ||||||
|                 # Convert value to proper value |                 # Convert value to proper value | ||||||
|                 field = fields[-1] |                 field = fields[-1] | ||||||
|                 if op in (None, 'neq', 'gt', 'gte', 'lt', 'lte'): |                 if op in (None, 'ne', 'gt', 'gte', 'lt', 'lte'): | ||||||
|                     value = field.prepare_query_value(value) |                     value = field.prepare_query_value(value) | ||||||
|                 elif op in ('in', 'nin', 'all'): |                 elif op in ('in', 'nin', 'all'): | ||||||
|                     # 'in', 'nin' and 'all' require a list of values |                     # 'in', 'nin' and 'all' require a list of values | ||||||
|   | |||||||
| @@ -331,6 +331,15 @@ class QuerySetTest(unittest.TestCase): | |||||||
|  |  | ||||||
|         BlogPost.drop_collection() |         BlogPost.drop_collection() | ||||||
|  |  | ||||||
|  |         # Check the 'in' operator | ||||||
|  |         self.Person(name='user1', age=20).save() | ||||||
|  |         self.Person(name='user2', age=20).save() | ||||||
|  |         self.Person(name='user3', age=30).save() | ||||||
|  |         self.Person(name='user4', age=40).save() | ||||||
|  |          | ||||||
|  |         self.assertEqual(len(self.Person.objects(Q(age__in=[20]))), 2) | ||||||
|  |         self.assertEqual(len(self.Person.objects(Q(age__in=[20, 30]))), 3) | ||||||
|  |  | ||||||
|     def test_exec_js_query(self): |     def test_exec_js_query(self): | ||||||
|         """Ensure that queries are properly formed for use in exec_js. |         """Ensure that queries are properly formed for use in exec_js. | ||||||
|         """ |         """ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user