Skip to content

Commit 733b030

Browse files
committed
fixing python3 compatibility
1 parent e2e8cbb commit 733b030

File tree

5 files changed

+23
-38
lines changed

5 files changed

+23
-38
lines changed

readthedocs/search/api.py

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from readthedocs.search.filters import SearchFilterBackend
88
from readthedocs.search.pagination import SearchPagination
99
from readthedocs.search.serializers import PageSearchSerializer
10+
from readthedocs.search.utils import get_project_list_or_404
1011

1112

1213
class PageSearchAPIView(generics.ListAPIView):
@@ -41,27 +42,16 @@ def validate_query_params(self):
4142

4243
def get_serializer_context(self):
4344
context = super(PageSearchAPIView, self).get_serializer_context()
44-
context['projects_info'] = self.get_projects_info()
45+
context['projects_url'] = self.get_all_projects_url()
4546
return context
4647

47-
def _get_all_projects(self):
48-
"""Return list of project and its subprojects."""
49-
project_slug = self.request.query_params.get('project')
50-
queryset = Project.objects.api(self.request.user).only('slug')
51-
52-
project = generics.get_object_or_404(queryset, slug=project_slug)
53-
subprojects = queryset.filter(superprojects__parent_id=project.id)
54-
55-
project_list = list(subprojects) + [project]
56-
return project_list
57-
58-
def get_projects_info(self):
48+
def get_all_projects_url(self):
5949
version_slug = self.request.query_params.get('version')
60-
all_projects = self._get_all_projects()
61-
projects_info = {}
50+
project_slug = self.request.query_params.get('project')
51+
all_projects = get_project_list_or_404(project_slug=project_slug, user=self.request.user)
52+
projects_url = {}
6253

6354
for project in all_projects:
64-
data = {'docs_url': project.get_docs_url(version_slug=version_slug)}
65-
projects_info[project.slug] = data
55+
projects_url[project.slug] = project.get_docs_url(version_slug=version_slug)
6656

67-
return projects_info
57+
return projects_url

readthedocs/search/filters.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ def filter_queryset(self, request, queryset, view):
1111
# So change the variable name
1212
es_search = queryset
1313
version_slug = request.query_params.get('version')
14-
projects_info = view.get_projects_info()
15-
project_slug_list = projects_info.keys()
14+
projects_info = view.get_all_projects_url()
15+
project_slug_list = list(projects_info.keys())
1616
# Elasticsearch ``terms`` query can take multiple values as list,
1717
# while ``term`` query takes single value.
1818
filtered_es_search = (es_search.filter('terms', project=project_slug_list)

readthedocs/search/serializers.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ class PageSearchSerializer(serializers.Serializer):
1212
highlight = serializers.SerializerMethodField()
1313

1414
def get_link(self, obj):
15-
projects_info = self.context.get('projects_info')
16-
if projects_info:
17-
project_data = projects_info[obj.project]
18-
docs_url = project_data['docs_url']
15+
projects_url = self.context.get('projects_url')
16+
if projects_url:
17+
docs_url = projects_url[obj.project]
1918
return docs_url + obj.path
2019

2120
def get_highlight(self, obj):

readthedocs/search/utils.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -312,17 +312,12 @@ def parse_sections(documentation_type, content):
312312

313313
# TODO: Rewrite all the views using this in Class Based View,
314314
# and move this function to a mixin
315-
def get_project_slug_list_or_404(project_slug, user):
316-
"""
317-
Return list of subproject's slug including own slug.
318-
319-
If the project is not available to user, redirect to 404
320-
"""
315+
def get_project_list_or_404(project_slug, user):
316+
"""Return list of project and its subprojects."""
321317
queryset = Project.objects.api(user).only('slug')
322-
project = get_object_or_404(queryset, slug=project_slug)
323318

324-
subprojects_slug = (queryset.filter(superprojects__parent_id=project.id)
325-
.values_list('slug', flat=True))
319+
project = get_object_or_404(queryset, slug=project_slug)
320+
subprojects = queryset.filter(superprojects__parent_id=project.id)
326321

327-
slug_list = [project.slug] + list(subprojects_slug)
328-
return slug_list
322+
project_list = list(subprojects) + [project]
323+
return project_list

readthedocs/search/views.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from readthedocs.projects.models import Project
1515
from readthedocs.search import lib as search_lib
1616
from readthedocs.search.documents import ProjectDocument, PageDocument
17-
from readthedocs.search.utils import get_project_slug_list_or_404
17+
from readthedocs.search.utils import get_project_list_or_404
1818

1919
log = logging.getLogger(__name__)
2020
LOG_TEMPLATE = u'(Elastic Search) [{user}:{type}] [{project}:{version}:{language}] {msg}'
@@ -55,8 +55,9 @@ def elastic_search(request):
5555
elif user_input.type == 'file':
5656
kwargs = {}
5757
if user_input.project:
58-
project_slug_list = get_project_slug_list_or_404(project_slug=user_input.project,
59-
user=request.user)
58+
projects_list = get_project_list_or_404(project_slug=user_input.project,
59+
user=request.user)
60+
project_slug_list = [project.slug for project in projects_list]
6061
kwargs['projects_list'] = project_slug_list
6162
if user_input.version:
6263
kwargs['versions_list'] = user_input.version

0 commit comments

Comments
 (0)