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 <[email protected]> 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,
