1 # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
1 # copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
3 # |
3 # |
4 # This file is part of CubicWeb. |
4 # This file is part of CubicWeb. |
5 # |
5 # |
6 # CubicWeb is free software: you can redistribute it and/or modify it under the |
6 # CubicWeb is free software: you can redistribute it and/or modify it under the |
36 from cubicweb import server, typed_eid |
36 from cubicweb import server, typed_eid |
37 from cubicweb.rset import ResultSet |
37 from cubicweb.rset import ResultSet |
38 |
38 |
39 from cubicweb.server.utils import cleanup_solutions |
39 from cubicweb.server.utils import cleanup_solutions |
40 from cubicweb.server.rqlannotation import SQLGenAnnotator, set_qdata |
40 from cubicweb.server.rqlannotation import SQLGenAnnotator, set_qdata |
41 from cubicweb.server.ssplanner import READ_ONLY_RTYPES, add_types_restriction, EditedEntity |
41 from cubicweb.server.ssplanner import READ_ONLY_RTYPES, add_types_restriction |
|
42 from cubicweb.server.edition import EditedEntity |
42 from cubicweb.server.session import security_enabled |
43 from cubicweb.server.session import security_enabled |
43 |
44 |
44 def empty_rset(rql, args, rqlst=None): |
45 def empty_rset(rql, args, rqlst=None): |
45 """build an empty result set object""" |
46 """build an empty result set object""" |
46 return ResultSet([], rql, args, rqlst=rqlst) |
47 return ResultSet([], rql, args, rqlst=rqlst) |
351 if not lcheckdef: |
352 if not lcheckdef: |
352 continue |
353 continue |
353 myrqlst = select.copy(solutions=lchecksolutions) |
354 myrqlst = select.copy(solutions=lchecksolutions) |
354 myunion.append(myrqlst) |
355 myunion.append(myrqlst) |
355 # in-place rewrite + annotation / simplification |
356 # in-place rewrite + annotation / simplification |
356 lcheckdef = [((var, 'X'), rqlexprs) for var, rqlexprs in lcheckdef] |
357 lcheckdef = [({var: 'X'}, rqlexprs) for var, rqlexprs in lcheckdef] |
357 rewrite(myrqlst, lcheckdef, lchecksolutions, self.args) |
358 rewrite(myrqlst, lcheckdef, lchecksolutions, self.args) |
358 add_noinvariant(noinvariant, restricted, myrqlst, nbtrees) |
359 add_noinvariant(noinvariant, restricted, myrqlst, nbtrees) |
359 if () in localchecks: |
360 if () in localchecks: |
360 select.set_possible_types(localchecks[()]) |
361 select.set_possible_types(localchecks[()]) |
361 add_types_restriction(self.schema, select) |
362 add_types_restriction(self.schema, select) |