330 sortedvariantes.append( (orderedkeys, variante) ) |
330 sortedvariantes.append( (orderedkeys, variante) ) |
331 return [v for ok, v in sorted(sortedvariantes)] |
331 return [v for ok, v in sorted(sortedvariantes)] |
332 |
332 |
333 from cubicweb.server.querier import ExecutionPlan |
333 from cubicweb.server.querier import ExecutionPlan |
334 _orig_check_permissions = ExecutionPlan._check_permissions |
334 _orig_check_permissions = ExecutionPlan._check_permissions |
335 _orig_init_temp_table = ExecutionPlan.init_temp_table |
|
336 |
335 |
337 def _check_permissions(*args, **kwargs): |
336 def _check_permissions(*args, **kwargs): |
338 res, restricted = _orig_check_permissions(*args, **kwargs) |
337 res, restricted = _orig_check_permissions(*args, **kwargs) |
339 res = DumbOrderedDict(sorted(res.iteritems(), lambda a, b: cmp(a[1], b[1]))) |
338 res = DumbOrderedDict(sorted(res.iteritems(), lambda a, b: cmp(a[1], b[1]))) |
340 return res, restricted |
339 return res, restricted |
341 |
340 |
342 def _dummy_check_permissions(self, rqlst): |
341 def _dummy_check_permissions(self, rqlst): |
343 return {(): rqlst.solutions}, set() |
342 return {(): rqlst.solutions}, set() |
344 |
|
345 def _init_temp_table(self, table, selection, solution): |
|
346 if self.tablesinorder is None: |
|
347 tablesinorder = self.tablesinorder = {} |
|
348 else: |
|
349 tablesinorder = self.tablesinorder |
|
350 if not table in tablesinorder: |
|
351 tablesinorder[table] = 'table%s' % len(tablesinorder) |
|
352 return _orig_init_temp_table(self, table, selection, solution) |
|
353 |
343 |
354 from cubicweb.server import rqlannotation |
344 from cubicweb.server import rqlannotation |
355 _orig_select_principal = rqlannotation._select_principal |
345 _orig_select_principal = rqlannotation._select_principal |
356 |
346 |
357 def _select_principal(scope, relations): |
347 def _select_principal(scope, relations): |
389 rqlrewrite.iter_relations = _ordered_iter_relations |
379 rqlrewrite.iter_relations = _ordered_iter_relations |
390 rqlrewrite.RQLRewriter.insert_snippets = _insert_snippets |
380 rqlrewrite.RQLRewriter.insert_snippets = _insert_snippets |
391 rqlrewrite.RQLRewriter.build_variantes = _build_variantes |
381 rqlrewrite.RQLRewriter.build_variantes = _build_variantes |
392 ExecutionPlan._check_permissions = _check_permissions |
382 ExecutionPlan._check_permissions = _check_permissions |
393 ExecutionPlan.tablesinorder = None |
383 ExecutionPlan.tablesinorder = None |
394 ExecutionPlan.init_temp_table = _init_temp_table |
|
395 |
384 |
396 def undo_monkey_patch(): |
385 def undo_monkey_patch(): |
397 rqlrewrite.iter_relations = _orig_iter_relations |
386 rqlrewrite.iter_relations = _orig_iter_relations |
398 rqlrewrite.RQLRewriter.insert_snippets = _orig_insert_snippets |
387 rqlrewrite.RQLRewriter.insert_snippets = _orig_insert_snippets |
399 rqlrewrite.RQLRewriter.build_variantes = _orig_build_variantes |
388 rqlrewrite.RQLRewriter.build_variantes = _orig_build_variantes |
400 ExecutionPlan._check_permissions = _orig_check_permissions |
389 ExecutionPlan._check_permissions = _orig_check_permissions |
401 ExecutionPlan.init_temp_table = _orig_init_temp_table |
|