예제 #1
0
 def test_count(self, m_connection):
     """Tests counting number of results."""
     data = FakeRecords()
     data.append({'total': 13})
     data = [data]
     m_connection.return_value = FakeConnection(data)
     q = Query('Environment')
     self.assertEquals(q.count(), 13)
예제 #2
0
    def search(self, request):
        """Search objects by type, identity, and property filters."""
        search = SearchSerializer(data=request.data)
        if not search.is_valid():
            raise ValidationError(search.errors)

        vd = search.validated_data
        query = Query(vd.get('model')) \
            .identity(vd.get('identity')) \
            .time(vd.get('time'))

        for f in vd.get('filters', []):
            query.filter(f['prop'],
                         f['operator'],
                         f['value'],
                         label=f['model'])

        for o in vd.get('orders', []):
            query.orderby(o['prop'], o['direction'], label=o['model'])

        count = query.count()

        records = query.page(page=vd['page'],
                             pagesize=vd['pagesize'],
                             index=vd.get('index'))

        serializer = GenericSerializer({
            'query': str(query),
            'data': vd,
            'params': query.params,
            'count': count,
            'pagesize': vd['pagesize'],
            'page': vd['page'],
            'records': records
        })
        return Response(serializer.data)