Ejemplo n.º 1
0
def make_collection_response(name, elements, parent_href=None):
    """Return a collection to client"""
    if getattr(g, 'filters', None):
        g.unused_args.difference_update(
            (arg for arg in request.args.iterkeys() if ':' in arg))
        elements = apply_filters(elements, g.filters,
                                 g.collection_schema)

    # NOTE(imelnikov): size is number of element matching given
    # criteria -- calculated after filtering
    size = len(elements)

    if 'sortby' in g.unused_args:
        g.unused_args.discard('sortby')
        elements = apply_sortby(g.sortby, elements)
    elements = _apply_pagination(elements)

    result = {
        u'collection': {
            u'name': name,
            u'size': size
        },
        name: elements
    }
    if parent_href is not None:
        result[u'collection'][u'parent-href'] = parent_href
    return make_json_response(result)
Ejemplo n.º 2
0
 def test_missing_is_ok(self):
     param = [
         { 'size': 30 },
         { 'name': 'test', 'size': 30 },
     ]
     expected = [
         { 'name': 'test', 'size': 30 },
     ]
     result = apply_filters(param, self.filters, self.schema)
     self.assertEquals(expected, result)
Ejemplo n.º 3
0
 def test_not_exists_at_all(self):
     param = [
         { 'size': 30 },
         { 'name': 'test', 'size': 30 },
     ]
     filters = { 'name': {'exists': False} }
     expected = [
         { 'size': 30 },
     ]
     result = apply_filters(param, filters, self.schema)
     self.assertEquals(expected, result)
Ejemplo n.º 4
0
 def test_simple(self):
     param = [
         { 'name': 'test1', 'size': 30 },
         { 'name': 'test', 'size': 30 },
         { 'name': 'test', 'size': 33 },
         { 'name': 'test', 'size': 0 }
     ]
     expected = [
         { 'name': 'test', 'size': 30 },
     ]
     result = apply_filters(param, self.filters, self.schema)
     self.assertEquals(expected, result)
Ejemplo n.º 5
0
 def test_apply_in(self):
     param = [
         { 'name': 'test' },
         { 'name': 'foo' },
         { 'name': 'bar' }
     ]
     expected = [
         { 'name': 'test' },
         { 'name': 'bar' }
     ]
     filters = {
         'name': { 'in': ['test', 'bar'] }
     }
     result = apply_filters(param, filters, self.schema)
     self.assertEquals(expected, result)
Ejemplo n.º 6
0
 def test_missing_is_ok(self):
     param = [
         {
             'size': 30
         },
         {
             'name': 'test',
             'size': 30
         },
     ]
     expected = [
         {
             'name': 'test',
             'size': 30
         },
     ]
     result = apply_filters(param, self.filters, self.schema)
     self.assertEquals(expected, result)
Ejemplo n.º 7
0
 def test_not_exists_at_all(self):
     param = [
         {
             'size': 30
         },
         {
             'name': 'test',
             'size': 30
         },
     ]
     filters = {'name': {'exists': False}}
     expected = [
         {
             'size': 30
         },
     ]
     result = apply_filters(param, filters, self.schema)
     self.assertEquals(expected, result)
Ejemplo n.º 8
0
def make_collection_response(name, elements, parent_href=None):
    """Return a collection to client"""
    if getattr(g, 'filters', None):
        g.unused_args.difference_update(
            (arg for arg in request.args.iterkeys() if ':' in arg))
        elements = apply_filters(elements, g.filters, g.collection_schema)

    # NOTE(imelnikov): size is number of element matching given
    # criteria -- calculated after filtering
    size = len(elements)

    if 'sortby' in g.unused_args:
        g.unused_args.discard('sortby')
        elements = apply_sortby(g.sortby, elements)
    elements = _apply_pagination(elements)

    result = {u'collection': {u'name': name, u'size': size}, name: elements}
    if parent_href is not None:
        result[u'collection'][u'parent-href'] = parent_href
    return make_json_response(result)
Ejemplo n.º 9
0
 def test_simple(self):
     param = [{
         'name': 'test1',
         'size': 30
     }, {
         'name': 'test',
         'size': 30
     }, {
         'name': 'test',
         'size': 33
     }, {
         'name': 'test',
         'size': 0
     }]
     expected = [
         {
             'name': 'test',
             'size': 30
         },
     ]
     result = apply_filters(param, self.filters, self.schema)
     self.assertEquals(expected, result)
Ejemplo n.º 10
0
 def test_empty_result(self):
     self.assertEquals([], apply_filters([], self.filters, self.schema))
Ejemplo n.º 11
0
 def test_apply_in(self):
     param = [{'name': 'test'}, {'name': 'foo'}, {'name': 'bar'}]
     expected = [{'name': 'test'}, {'name': 'bar'}]
     filters = {'name': {'in': ['test', 'bar']}}
     result = apply_filters(param, filters, self.schema)
     self.assertEquals(expected, result)
Ejemplo n.º 12
0
 def test_empty_result(self):
     self.assertEquals([], apply_filters([], self.filters, self.schema))