You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by gc...@apache.org on 2022/06/01 22:15:16 UTC

[allura] 01/01: #8434 check if variable is a dict before iterating

This is an automated email from the ASF dual-hosted git repository.

gcruz pushed a commit to branch gc/8434
in repository https://gitbox.apache.org/repos/asf/allura.git

commit 448e08769d1a9400d83fb20cbce4419bcb543afb
Author: Guillermo Cruz <gu...@slashdotmedia.com>
AuthorDate: Wed Jun 1 16:15:08 2022 -0600

    #8434 check if variable is a dict before iterating
---
 Allura/allura/lib/search.py               | 23 ++++++++++++-----------
 ForgeTracker/forgetracker/model/ticket.py |  3 ++-
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/Allura/allura/lib/search.py b/Allura/allura/lib/search.py
index 9f1e94ff6..a8ed6e58e 100644
--- a/Allura/allura/lib/search.py
+++ b/Allura/allura/lib/search.py
@@ -188,17 +188,18 @@ def search_artifact(atype, q, history=False, rows=10, short_timeout=False, filte
     fq += kw.pop('fq', [])
     if isinstance(filter, str):  # may be stringified after a ticket filter, then bulk edit
         filter = ast.literal_eval(filter)
-    for name, values in (filter or {}).items():
-        field_name = name + '_s'
-        parts = []
-        for v in values:
-            # Specific solr syntax for empty fields
-            if v == '' or v is None:
-                part = f'(-{field_name}:[* TO *] AND *:*)'
-            else:
-                part = f'{field_name}:{escape_solr_arg(v)}'
-            parts.append(part)
-        fq.append(' OR '.join(parts))
+    if isinstance(filter, dict):
+        for name, values in (filter or {}).items():
+            field_name = name + '_s'
+            parts = []
+            for v in values:
+                # Specific solr syntax for empty fields
+                if v == '' or v is None:
+                    part = f'(-{field_name}:[* TO *] AND *:*)'
+                else:
+                    part = f'{field_name}:{escape_solr_arg(v)}'
+                parts.append(part)
+            fq.append(' OR '.join(parts))
     if not history:
         fq.append('is_history_b:False')
     return search(q, fq=fq, rows=rows, short_timeout=short_timeout, ignore_errors=False, **kw)
diff --git a/ForgeTracker/forgetracker/model/ticket.py b/ForgeTracker/forgetracker/model/ticket.py
index 34aa72e94..a67ed48e1 100644
--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -1306,7 +1306,6 @@ class Ticket(VersionedArtifact, ActivityObject, VotableArtifact):
             solr_error = e
             matches = None
         if matches:
-            count = matches.hits
             # ticket_matches is in sorted order
             ticket_matches = [ObjectId(match['id'].split('#')[1]) for match in matches.docs]
             query = cls.query.find(
@@ -1317,6 +1316,7 @@ class Ticket(VersionedArtifact, ActivityObject, VotableArtifact):
                 ticket_by_id[t._id] = t
             # and pull them out in the order given by ticket_numbers
             tickets = []
+            count = 0
             for t_id in ticket_matches:
                 if t_id in ticket_by_id:
                     show_deleted = show_deleted and security.has_access(
@@ -1325,6 +1325,7 @@ class Ticket(VersionedArtifact, ActivityObject, VotableArtifact):
                                             app_config.project.root_project if app_config else None) and
                             (show_deleted or ticket_by_id[t_id].deleted is False)):
                         tickets.append(ticket_by_id[t_id])
+                        count = count + 1
                     else:
                         count = count - 1
         return dict(tickets=tickets,