def test_slice(self): es = FakeXFormES() for i in xrange(0, 1300): es.add_doc(i, {'i': i}) queryset = ESQuerySet(es_client=es, payload={}) qs_slice = list(queryset[3:7]) self.assertEqual(es.queries[0]['from'], 3) self.assertEqual(es.queries[0]['size'], 4) self.assertEqual(len(qs_slice), 4) queryset = ESQuerySet(es_client=es, payload={}) qs_slice = list(queryset[10:20]) self.assertEqual(es.queries[1]['from'], 10) self.assertEqual(es.queries[1]['size'], 10) self.assertEqual(len(qs_slice), 10) queryset = ESQuerySet(es_client=es, payload={}) qs_slice = list(queryset[500:1000]) self.assertEqual(es.queries[2]['from'], 500) self.assertEqual(es.queries[2]['size'], 500) self.assertEqual(len(qs_slice), 500)
def test_order_by(self): es = FakeXFormES() for i in xrange(0, 1300): es.add_doc(i, {'i': i}) queryset = ESQuerySet(es_client=es, payload={}) qs_asc = list(queryset.order_by('foo')) self.assertEqual(es.queries[0]['sort'], [{'foo': 'asc'}]) qs_desc = list(queryset.order_by('-foo')) self.assertEqual(es.queries[1]['sort'], [{'foo': 'desc'}]) qs_overwrite = list(queryset.order_by('bizzle').order_by('-baz')) self.assertEqual(es.queries[2]['sort'], [{'baz': 'desc'}]) qs_multi = list(queryset.order_by('one', '-two', 'three')) self.assertEqual(es.queries[3]['sort'], [{'one': 'asc'}, {'two': 'desc'}, {'three': 'asc'}])
def test_order_by(self): es = FakeXFormES() for i in xrange(0, 1300): es.add_doc(i, {"i": i}) queryset = ESQuerySet(es_client=es, payload={}) qs_asc = list(queryset.order_by("foo")) self.assertEqual(es.queries[0]["sort"], [{"foo": "asc"}]) qs_desc = list(queryset.order_by("-foo")) self.assertEqual(es.queries[1]["sort"], [{"foo": "desc"}]) qs_overwrite = list(queryset.order_by("bizzle").order_by("-baz")) self.assertEqual(es.queries[2]["sort"], [{"baz": "desc"}]) qs_multi = list(queryset.order_by("one", "-two", "three")) self.assertEqual(es.queries[3]["sort"], [{"one": "asc"}, {"two": "desc"}, {"three": "asc"}])
def obj_get_list(self, bundle, domain, **kwargs): try: es_query = es_search(bundle.request, domain) except Http400 as e: raise BadRequest(e.message) es_query['filter']['and'].append({'term': {'doc_type': 'xforminstance'}}) # Note that XFormES is used only as an ES client, for `run_query` against the proper index return ESQuerySet(payload = es_query, model = XFormInstance, es_client=self.xform_es(domain)).order_by('-received_on')
def obj_get_list(self, bundle, domain, **kwargs): es_query = es_search(bundle.request, domain) es_query['filter']['and'].append( {'term': { 'doc_type': 'xforminstance' }}) return ESQuerySet( payload=es_query, model=XFormInstance, es_client=self.xform_es(domain) ) # Not that XFormES is used only as an ES client, for `run_query` against the proper index
def obj_get_list(self, bundle, domain, **kwargs): filters = v0_3.CaseListFilters(bundle.request.GET).filters # Since tastypie handles the "from" and "size" via slicing, we have to wipe them out here # since ElasticCaseQuery adds them. I believe other APIs depend on the behavior of ElasticCaseQuery # hence I am not modifying that query = ElasticCaseQuery(domain, filters).get_query() if 'from' in query: del query['from'] if 'size' in query: del query['size'] return ESQuerySet(payload = query, model = CommCareCase, es_client = self.case_es(domain)).order_by('server_modified_on') # Not that CaseES is used only as an ES client, for `run_query` against the proper index
def obj_get_list(self, bundle, domain, **kwargs): filters = v0_3.CaseListFilters(bundle.request.GET).filters # Since tastypie handles the "from" and "size" via slicing, we have to wipe them out here # since ElasticCaseQuery adds them. I believe other APIs depend on the behavior of ElasticCaseQuery # hence I am not modifying that query = ElasticCaseQuery(domain, filters).get_query() if 'from' in query: del query['from'] if 'size' in query: del query['size'] return ESQuerySet( payload=query, model=lambda jvalue: dict_object( CommCareCase.wrap(jvalue).get_json()), es_client=CaseES(domain) ) # Not that XFormES is used only as an ES client, for `run_query` against the proper index
def test_order_by(self): es = FakeXFormES() for i in xrange(0, 1300): es.add_doc(i, {'i': i}) queryset = ESQuerySet(es_client=es, payload={}) qs_asc = list(queryset.order_by('foo')) self.assertEqual(es.queries[0]['sort'], [{'foo': 'asc'}]) qs_desc = list(queryset.order_by('-foo')) self.assertEqual(es.queries[1]['sort'], [{'foo': 'desc'}]) qs_overwrite = list(queryset.order_by('bizzle').order_by('-baz')) self.assertEqual(es.queries[2]['sort'], [{'baz': 'desc'}]) qs_multi = list(queryset.order_by('one', '-two', 'three')) self.assertEqual(es.queries[3]['sort'], [{'one': 'asc'}, {'two': 'desc'}, {'three': 'asc'}])
def obj_get_list(self, bundle, domain, **kwargs): include_archived = 'include_archived' in bundle.request.GET try: es_query = es_search(bundle.request, domain, ['include_archived']) except Http400 as e: raise BadRequest(e.message) if include_archived: es_query['filter']['and'].append({ 'or': [ { 'term': { 'doc_type': 'xforminstance' } }, { 'term': { 'doc_type': 'xformarchived' } }, ] }) else: es_query['filter']['and'].append( {'term': { 'doc_type': 'xforminstance' }}) def wrapper(doc): if doc['doc_type'] in xform_doc_types: return xform_doc_types[doc['doc_type']].wrap(doc) else: return doc # Note that XFormES is used only as an ES client, for `run_query` against the proper index return ESQuerySet( payload=es_query, model=wrapper, es_client=self.xform_es(domain)).order_by('-received_on')