Exemplo n.º 1
0
    def test_single_conditions(self):
        raw_node = {
            "type": "and",
            "children": [
                {"id": 1, "operator": "icontains", "value": "test"},
                {"id": 2, "operator": "iexact", "value": "test2"},
            ],
        }

        q1 = logictree.transform(raw_node).condition
        q2 = Q(keywords__iexact=u"test2") & Q(name__icontains=u"test")
        self.assertEqual(str(q1), str(q2))

        raw_node["type"] = "or"

        q3 = logictree.transform(raw_node).condition
        q4 = Q(keywords__iexact=u"test2") | Q(name__icontains=u"test")
        self.assertEqual(str(q3), str(q4))
Exemplo n.º 2
0
    def POST(self, request):
        json = uni2str(request.data.copy())

        if not any([x in json for x in ('type', 'operator')]):
            return http.BAD_REQUEST, 'Invalid data format'

        text = logictree.transform(json).text

        j = ''
        if text.has_key('type'):
            j = ' %s ' % text['type']

        return j.join(text['conditions'])
Exemplo n.º 3
0
    def test_multi_level_condition(self):
        raw_node = {
            "type": "and",
            "children": [
                {"id": 1, "operator": "in", "value": ["one", "two"]},
                {
                    "type": "or",
                    "children": [
                        {"id": 3, "operator": "iexact", "value": "foobar"},
                        {"id": 3, "operator": "iexact", "value": "barbaz"},
                    ],
                },
            ],
        }

        q1 = logictree.transform(raw_node).condition
        q2 = (Q(fields__name__iexact=u"barbaz") | Q(fields__name__iexact=u"foobar")) & Q(name__in=[u"one", u"two"])

        self.assertEqual(str(q1), str(q2))
Exemplo n.º 4
0
 def get_text(self):
     node = logictree.transform(self._get_obj())
     return node.text
Exemplo n.º 5
0
 def _parse_contents(self, obj, *args, **kwargs):
     self._node = logictree.transform(obj)
     return self._node.apply
Exemplo n.º 6
0
 def _get_contents(self, obj):
     self._node = logictree.transform(obj)
     return self._node.get_field_ids()
Exemplo n.º 7
0
    def test_single_field(self):
        raw_node = {"id": 1, "operator": "iexact", "value": "foobar"}

        q = logictree.transform(raw_node).condition
        self.assertEqual(str(q), str(Q(name__iexact=u"foobar")))