equal
deleted
inserted
replaced
92 if len(possibletypes) > 1: |
92 if len(possibletypes) > 1: |
93 node = n.Function('IN') |
93 node = n.Function('IN') |
94 for etype in sorted(possibletypes): |
94 for etype in sorted(possibletypes): |
95 node.append(n.Constant(etype, 'etype')) |
95 node.append(n.Constant(etype, 'etype')) |
96 else: |
96 else: |
97 etype = iter(possibletypes).next() |
97 etype = next(iter(possibletypes)) |
98 node = n.Constant(etype, 'etype') |
98 node = n.Constant(etype, 'etype') |
99 comp = mytyperel.children[1] |
99 comp = mytyperel.children[1] |
100 comp.replace(comp.children[0], node) |
100 comp.replace(comp.children[0], node) |
101 else: |
101 else: |
102 # variable has already some strict types restriction. new |
102 # variable has already some strict types restriction. new |
286 sortterms.append(sortterm.copy(newselect)) |
286 sortterms.append(sortterm.copy(newselect)) |
287 for fnode in sortterm.get_nodes(n.Function): |
287 for fnode in sortterm.get_nodes(n.Function): |
288 if fnode.name == 'FTIRANK': |
288 if fnode.name == 'FTIRANK': |
289 # we've to fetch the has_text relation as well |
289 # we've to fetch the has_text relation as well |
290 var = fnode.children[0].variable |
290 var = fnode.children[0].variable |
291 rel = iter(var.stinfo['ftirels']).next() |
291 rel = next(iter(var.stinfo['ftirels'])) |
292 assert not rel.ored(), 'unsupported' |
292 assert not rel.ored(), 'unsupported' |
293 newselect.add_restriction(rel.copy(newselect)) |
293 newselect.add_restriction(rel.copy(newselect)) |
294 # remove relation from the orig select and |
294 # remove relation from the orig select and |
295 # cleanup variable stinfo |
295 # cleanup variable stinfo |
296 rel.parent.remove(rel) |
296 rel.parent.remove(rel) |
548 # XXX dunno how to handle this |
548 # XXX dunno how to handle this |
549 self.session.error( |
549 self.session.error( |
550 'cant check security of %s, ambigous type for %s in %s', |
550 'cant check security of %s, ambigous type for %s in %s', |
551 stmt, varname, key[0]) # key[0] == the rql expression |
551 stmt, varname, key[0]) # key[0] == the rql expression |
552 raise Unauthorized() |
552 raise Unauthorized() |
553 etype = iter(ptypes).next() |
553 etype = next(iter(ptypes)) |
554 eschema = self.schema.eschema(etype) |
554 eschema = self.schema.eschema(etype) |
555 if not eschema.has_perm(self.session, action): |
555 if not eschema.has_perm(self.session, action): |
556 rqlexprs = eschema.get_rqlexprs(action) |
556 rqlexprs = eschema.get_rqlexprs(action) |
557 if not rqlexprs: |
557 if not rqlexprs: |
558 raise Unauthorized() |
558 raise Unauthorized() |
682 # rebuild variantes as dict |
682 # rebuild variantes as dict |
683 variantes = [dict(variante) for variante in variantes] |
683 variantes = [dict(variante) for variante in variantes] |
684 # remove variable which have always the same type |
684 # remove variable which have always the same type |
685 for key in self.rewritten: |
685 for key in self.rewritten: |
686 it = iter(variantes) |
686 it = iter(variantes) |
687 etype = it.next()[key] |
687 etype = next(it)[key] |
688 for variante in it: |
688 for variante in it: |
689 if variante[key] != etype: |
689 if variante[key] != etype: |
690 break |
690 break |
691 else: |
691 else: |
692 for variante in variantes: |
692 for variante in variantes: |