380 except AttributeError: |
380 except AttributeError: |
381 return (something[0].r_type, something[1]) |
381 return (something[0].r_type, something[1]) |
382 return _orig_select_principal(scope, relations, |
382 return _orig_select_principal(scope, relations, |
383 _sort=lambda rels: sorted(rels, key=sort_key)) |
383 _sort=lambda rels: sorted(rels, key=sort_key)) |
384 |
384 |
385 try: |
|
386 from cubicweb.server.msplanner import PartPlanInformation |
|
387 except ImportError: |
|
388 class PartPlanInformation(object): |
|
389 def merge_input_maps(self, *args, **kwargs): |
|
390 pass |
|
391 def _choose_term(self, sourceterms): |
|
392 pass |
|
393 _orig_merge_input_maps = PartPlanInformation.merge_input_maps |
|
394 _orig_choose_term = PartPlanInformation._choose_term |
|
395 |
385 |
396 def _merge_input_maps(*args, **kwargs): |
386 def _merge_input_maps(*args, **kwargs): |
397 return sorted(_orig_merge_input_maps(*args, **kwargs)) |
387 return sorted(_orig_merge_input_maps(*args, **kwargs)) |
398 |
388 |
399 def _choose_term(self, source, sourceterms): |
389 def _choose_term(self, source, sourceterms): |
409 except AttributeError: |
399 except AttributeError: |
410 # const |
400 # const |
411 return x.value |
401 return x.value |
412 return _orig_choose_term(self, source, DumbOrderedDict2(sourceterms, get_key)) |
402 return _orig_choose_term(self, source, DumbOrderedDict2(sourceterms, get_key)) |
413 |
403 |
414 |
|
415 def _ordered_iter_relations(stinfo): |
404 def _ordered_iter_relations(stinfo): |
416 return sorted(_orig_iter_relations(stinfo), key=lambda x:x.r_type) |
405 return sorted(_orig_iter_relations(stinfo), key=lambda x:x.r_type) |
417 |
406 |
418 def do_monkey_patch(): |
407 def do_monkey_patch(): |
419 rqlrewrite.iter_relations = _ordered_iter_relations |
408 rqlrewrite.iter_relations = _ordered_iter_relations |
420 rqlrewrite.RQLRewriter.insert_snippets = _insert_snippets |
409 rqlrewrite.RQLRewriter.insert_snippets = _insert_snippets |
421 rqlrewrite.RQLRewriter.build_variantes = _build_variantes |
410 rqlrewrite.RQLRewriter.build_variantes = _build_variantes |
422 ExecutionPlan._check_permissions = _check_permissions |
411 ExecutionPlan._check_permissions = _check_permissions |
423 ExecutionPlan.tablesinorder = None |
412 ExecutionPlan.tablesinorder = None |
424 ExecutionPlan.init_temp_table = _init_temp_table |
413 ExecutionPlan.init_temp_table = _init_temp_table |
425 PartPlanInformation.merge_input_maps = _merge_input_maps |
|
426 PartPlanInformation._choose_term = _choose_term |
|
427 |
414 |
428 def undo_monkey_patch(): |
415 def undo_monkey_patch(): |
429 rqlrewrite.iter_relations = _orig_iter_relations |
416 rqlrewrite.iter_relations = _orig_iter_relations |
430 rqlrewrite.RQLRewriter.insert_snippets = _orig_insert_snippets |
417 rqlrewrite.RQLRewriter.insert_snippets = _orig_insert_snippets |
431 rqlrewrite.RQLRewriter.build_variantes = _orig_build_variantes |
418 rqlrewrite.RQLRewriter.build_variantes = _orig_build_variantes |
432 ExecutionPlan._check_permissions = _orig_check_permissions |
419 ExecutionPlan._check_permissions = _orig_check_permissions |
433 ExecutionPlan.init_temp_table = _orig_init_temp_table |
420 ExecutionPlan.init_temp_table = _orig_init_temp_table |
434 PartPlanInformation.merge_input_maps = _orig_merge_input_maps |
|
435 PartPlanInformation._choose_term = _orig_choose_term |
|