From 87194b18e206357f331c7bcf6e97e36487d6b187 Mon Sep 17 00:00:00 2001
From: dcz <dcz@ipipan.waw.pl>
Date: Tue, 10 Oct 2023 21:00:39 +0200
Subject: [PATCH] Entries list with lu bugfix and optimalization.

---
 entries/views.py | 38 ++++++++------------------------------
 1 file changed, 8 insertions(+), 30 deletions(-)

diff --git a/entries/views.py b/entries/views.py
index e9be919..7891091 100644
--- a/entries/views.py
+++ b/entries/views.py
@@ -412,7 +412,6 @@ def get_entries(request):
         total = entries.count()
         if scroller_params['filter']:
             entries = entries.filter(name__startswith=scroller_params['filter'])
-        filtered = entries.count()
 
         local_frame_form = None
         if 'frame_form' in request.session:
@@ -452,6 +451,11 @@ def get_entries(request):
         )
 
         if with_lexical_units:
+            if exclude_status is not None:
+                entries = entries.filter(lexical_units__frames__status__iexact=exclude_status)
+            entries = entries.filter(lexical_units__frames__isnull=False)
+            if has_unified_frame == 'true':
+                entries = entries.filter(lexical_units__frames__slowal_frame_2_unified_frame__isnull=False)
             frameQueryset = Frame.objects.select_related("slowal_frame_2_unified_frame").prefetch_related(Prefetch("assignments", to_attr="_assignments"));
             entries = entries.prefetch_related(
                 Prefetch(
@@ -466,6 +470,8 @@ def get_entries(request):
                 )
             )
 
+        filtered = entries.count()
+
         status_names = STATUS()
         POS_names = POS()
 
@@ -476,10 +482,6 @@ def get_entries(request):
                     continue
                 else:
                     yield lu
-        import datetime
-        now = datetime.datetime.now()
-        print("1 Current date and time : ")
-        print(now.strftime("%Y-%m-%d %H:%M:%S"))
 
         result = {
             'draw' : scroller_params['draw'],
@@ -509,34 +511,10 @@ def get_entries(request):
                         }
                         if with_lexical_units else {}
                     ),
-                } for e in (entries if with_lexical_units else entries[first_index:last_index])
+                } for e in entries[first_index:last_index]
             ],
         }
 
-        now = datetime.datetime.now()
-        print("2 Current date and time : ")
-        print(now.strftime("%Y-%m-%d %H:%M:%S"))
-
-        if with_lexical_units:
-            filteredData = []
-            for entry in result['data']:
-                lexicalUnits = entry['lexical_units']
-                filteredLexicalUnits = []
-                for lexicalUnit in lexicalUnits:
-                    if (exclude_status is None or lexicalUnit['status'] != exclude_status) and \
-                            (restrict_to_user is None or lexicalUnit['assignee_username'] == restrict_to_user) and \
-                                (has_unified_frame != 'true' or lexicalUnit['unified_frame_id'] != -1):
-                        filteredLexicalUnits.append(lexicalUnit)
-                entry['lexical_units'] = filteredLexicalUnits
-                if len(filteredLexicalUnits) > 0:
-                    filteredData.append(entry)
-
-            result['data'] = filteredData[first_index:last_index]
-
-        now = datetime.datetime.now()
-        print("3 Current date and time : ")
-        print(now.strftime("%Y-%m-%d %H:%M:%S"))
-
         return JsonResponse(result)
     return JsonResponse({})
 
-- 
GitLab