From 521e86dcc36b70bedba5ec06fb939463ef53c952 Mon Sep 17 00:00:00 2001 From: dcz <dcz@ipipan.waw.pl> Date: Tue, 5 Sep 2023 11:31:39 +0200 Subject: [PATCH] attach free lu having slowal frames --- entries/views.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/entries/views.py b/entries/views.py index cef9e17..af32964 100644 --- a/entries/views.py +++ b/entries/views.py @@ -1096,18 +1096,28 @@ def ajax_synsets(request, base, pos): return context +def lexical_units_without_empty_frames(obj_results): + for lu in obj_results.all(): + lu._frames = lu._frames[0] if lu._frames and len(lu._frames) > 0 else None + if lu._frames is None: + continue + else: + yield lu + + @ajax(method='get', encode_result=True) def ajax_free_slowal_frame_lookup(request, term): - results = [] if len(term) > 0: - obj_results = LexicalUnit.objects.filter(base__startswith=term).filter(frames__assignments=None) - results = get_ordered_lexical_units_synsets(obj_results) - return {'result': results} - + obj_results = LexicalUnit.objects.filter(base__startswith=term)\ + .filter(frames__assignments=None).order_by('base', 'sense') + obj_results = obj_results.prefetch_related( + Prefetch( + "frames", + to_attr="_frames", + ) + ) + lexical_unit_str = [] + for lexical_unit in lexical_units_without_empty_frames(obj_results): + lexical_unit_str.append(str(lexical_unit)) + return {'result': lexical_unit_str} -def get_ordered_lexical_units_synsets(lexical_units_query): - lexical_unit_bases = [] - ordered_lexical_units = lexical_units_query.order_by('base', 'sense') - for lexical_unit in ordered_lexical_units: - lexical_unit_bases.append(str(lexical_unit)) - return lexical_unit_bases -- GitLab