Skip to content

Commit de0e916

Browse files
authored
Merge pull request #5794 from stsewd/fix-unbound-var
Fix unbound var in search view
2 parents d36d453 + ccde7c5 commit de0e916

File tree

1 file changed

+20
-25
lines changed

1 file changed

+20
-25
lines changed

readthedocs/search/views.py

+20-25
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
# -*- coding: utf-8 -*-
2-
31
"""Search views."""
42
import collections
53
import logging
@@ -10,9 +8,14 @@
108
from readthedocs.builds.constants import LATEST
119
from readthedocs.projects.models import Project
1210
from readthedocs.search.faceted_search import (
13-
AllSearch, ProjectSearch, PageSearch, DomainSearch, ALL_FACETS
11+
ALL_FACETS,
12+
AllSearch,
13+
DomainSearch,
14+
PageSearch,
15+
ProjectSearch,
1416
)
1517

18+
1619
log = logging.getLogger(__name__)
1720
LOG_TEMPLATE = '(Elastic Search) [%(user)s:%(type)s] [%(project)s:%(version)s:%(language)s] %(msg)s'
1821

@@ -56,8 +59,17 @@ def elastic_search(request, project_slug=None):
5659
role_name=request.GET.get('role_name'),
5760
index=request.GET.get('index'),
5861
)
62+
search_facets = collections.defaultdict(
63+
lambda: ProjectSearch,
64+
{
65+
'project': ProjectSearch,
66+
'domain': DomainSearch,
67+
'file': PageSearch,
68+
'all': AllSearch,
69+
}
70+
)
5971

60-
results = ''
72+
results = None
6173
facets = {}
6274

6375
if user_input.query:
@@ -68,26 +80,9 @@ def elastic_search(request, project_slug=None):
6880
if value:
6981
kwargs[avail_facet] = value
7082

71-
if user_input.type == 'project':
72-
search = ProjectSearch(
73-
query=user_input.query, user=request.user, **kwargs
74-
)
75-
76-
elif user_input.type == 'domain':
77-
search = DomainSearch(
78-
query=user_input.query, user=request.user, **kwargs
79-
)
80-
81-
elif user_input.type == 'file':
82-
search = PageSearch(
83-
query=user_input.query, user=request.user, **kwargs
84-
)
85-
86-
elif user_input.type == 'all':
87-
search = AllSearch(
88-
query=user_input.query, user=request.user, **kwargs
89-
)
90-
83+
search = search_facets[user_input.type](
84+
query=user_input.query, user=request.user, **kwargs
85+
)
9186
results = search[:50].execute()
9287
facets = results.facets
9388

@@ -105,7 +100,7 @@ def elastic_search(request, project_slug=None):
105100

106101
# Make sure our selected facets are displayed even when they return 0 results
107102
for avail_facet in ALL_FACETS:
108-
value = getattr(user_input, avail_facet)
103+
value = getattr(user_input, avail_facet, None)
109104
if not value or avail_facet not in facets:
110105
continue
111106
if value not in [val[0] for val in facets[avail_facet]]:

0 commit comments

Comments
 (0)