def test_filter__contains(self): obj = ContentType.objects.get(pk=1) obj2 = ContentType.objects.get(pk=2) set_obj_attrs(obj, {'tags': 'milk, tee'}) set_obj_attrs(obj2, {'tags': 'milk'}) r = filter_by_attrs(ContentType.objects.all(), tags__contains='milk') self.assertEqual(r.count(), 2) r = filter_by_attrs(ContentType.objects.all(), tags__contains='tee') self.assertEqual(r.count(), 1)
def test_filter__in(self): obj = ContentType.objects.get(pk=1) obj2 = ContentType.objects.get(pk=2) set_obj_attrs(obj, {'width': 200}) set_obj_attrs(obj2, {'width': 400}) r = filter_by_attrs(ContentType.objects.all(), width__in=[200, 400]) self.assertEqual(r.count(), 2)
def test_filter__gt__lt(self): obj = ContentType.objects.get(pk=1) obj2 = ContentType.objects.get(pk=2) set_obj_attrs(obj, {'width': 200}) set_obj_attrs(obj2, {'width': 400}) r = filter_by_attrs(ContentType.objects.all(), width__gt=100).count() self.assertEqual(r, 2) r = filter_by_attrs(ContentType.objects.all(), width__lt=1000).count() self.assertEqual(r, 2) r = filter_by_attrs(ContentType.objects.all(), width__gt=300).count() self.assertEqual(r, 1) r = filter_by_attrs(ContentType.objects.all(), width__lt=300).count() self.assertEqual(r, 1)
def test_simple_filter(self): obj = ContentType.objects.get(pk=1) obj2 = ContentType.objects.get(pk=2) set_obj_attrs(obj, {'width': 200}) set_obj_attrs(obj2, {'width': 400}) r = filter_by_attrs(ContentType.objects.all(), width=200)[0] self.assertEqual(r.pk, obj.pk)
def map(request, id): m = Map.objects.get(id=id) # names = [x.name for x in m.fields.all()] filters = {k: type_detect(v) for k, v in request.GET.items() if v} # print(repr(filters)) objs = filter_by_attrs(m.mobjects.all(), **filters) y = prefetch_related_attrs(objs) y = dumps(create_yandex_poinrs_objects(y, operator.attrgetter('lat'), operator.attrgetter('lon'), operator.attrgetter('data'))) f = dumps([x.name for x in m.fields.all() if x.is_filter]) return render(request, 'map.html', {'map': m, 'yandex': y, 'filters': f})
def map(request, id): m = Map.objects.get(id=id) # names = [x.name for x in m.fields.all()] filters = {k: type_detect(v) for k, v in request.GET.items() if v} # print(repr(filters)) objs = filter_by_attrs(m.mobjects.all(), **filters) y = prefetch_related_attrs(objs) y = dumps( create_yandex_poinrs_objects(y, operator.attrgetter('lat'), operator.attrgetter('lon'), operator.attrgetter('data'))) f = dumps([x.name for x in m.fields.all() if x.is_filter]) return render(request, 'map.html', {'map': m, 'yandex': y, 'filters': f})
def test_unicode_name_filter(self): obj = ContentType.objects.get(pk=1) set_obj_attrs(obj, {u'тест': 200}) r = filter_by_attrs(ContentType.objects.all(), **{u'тест': 200})[0] self.assertEqual(r.id, 1)