18
18
from readthedocs .projects .models import Project
19
19
20
20
# Structures used for storing cached data of a version mostly.
21
- ProjectData = namedtuple (' ProjectData' , [' version' , ' alias' ])
22
- VersionData = namedtuple (' VersionData' , [' slug' , ' docs_url' ])
21
+ ProjectData = namedtuple (" ProjectData" , [" version" , " alias" ])
22
+ VersionData = namedtuple (" VersionData" , [" slug" , " docs_url" ])
23
23
24
24
25
25
class ProjectHighlightSerializer (serializers .Serializer ):
@@ -29,31 +29,31 @@ class ProjectHighlightSerializer(serializers.Serializer):
29
29
description = serializers .SerializerMethodField ()
30
30
31
31
def get_name (self , obj ):
32
- return list (getattr (obj , ' name' , []))
32
+ return list (getattr (obj , " name" , []))
33
33
34
34
def get_slug (self , obj ):
35
- return list (getattr (obj , ' slug' , []))
35
+ return list (getattr (obj , " slug" , []))
36
36
37
37
def get_description (self , obj ):
38
- return list (getattr (obj , ' description' , []))
38
+ return list (getattr (obj , " description" , []))
39
39
40
40
41
41
class ProjectSearchSerializer (serializers .Serializer ):
42
42
43
- type = serializers .CharField (default = ' project' , source = None , read_only = True )
43
+ type = serializers .CharField (default = " project" , source = None , read_only = True )
44
44
name = serializers .CharField ()
45
45
slug = serializers .CharField ()
46
- link = serializers .CharField (source = ' url' )
46
+ link = serializers .CharField (source = " url" )
47
47
description = serializers .CharField ()
48
- highlights = ProjectHighlightSerializer (source = ' meta.highlight' , default = dict )
48
+ highlights = ProjectHighlightSerializer (source = " meta.highlight" , default = dict )
49
49
50
50
51
51
class PageHighlightSerializer (serializers .Serializer ):
52
52
53
53
title = serializers .SerializerMethodField ()
54
54
55
55
def get_title (self , obj ):
56
- return list (getattr (obj , ' title' , []))
56
+ return list (getattr (obj , " title" , []))
57
57
58
58
59
59
class PageSearchSerializer (serializers .Serializer ):
@@ -66,14 +66,14 @@ class PageSearchSerializer(serializers.Serializer):
66
66
It's a dictionary mapping the project slug to a ProjectData object.
67
67
"""
68
68
69
- type = serializers .CharField (default = ' page' , source = None , read_only = True )
69
+ type = serializers .CharField (default = " page" , source = None , read_only = True )
70
70
project = serializers .CharField ()
71
71
project_alias = serializers .SerializerMethodField ()
72
72
version = serializers .CharField ()
73
73
title = serializers .CharField ()
74
74
path = serializers .SerializerMethodField ()
75
75
domain = serializers .SerializerMethodField ()
76
- highlights = PageHighlightSerializer (source = ' meta.highlight' , default = dict )
76
+ highlights = PageHighlightSerializer (source = " meta.highlight" , default = dict )
77
77
blocks = serializers .SerializerMethodField ()
78
78
79
79
def _get_project_data (self , obj ):
@@ -85,16 +85,18 @@ def _get_project_data(self, obj):
85
85
If the result is fetched from the database,
86
86
it's cached into ``projects_data``.
87
87
"""
88
- project_data = self .context .get (' projects_data' , {}).get (obj .project )
88
+ project_data = self .context .get (" projects_data" , {}).get (obj .project )
89
89
if project_data :
90
90
return project_data
91
91
92
92
project = Project .objects .filter (slug = obj .project ).first ()
93
93
if project :
94
94
docs_url = project .get_docs_url (version_slug = obj .version )
95
- project_alias = project .superprojects .values_list ('alias' , flat = True ).first ()
95
+ project_alias = project .superprojects .values_list (
96
+ "alias" , flat = True
97
+ ).first ()
96
98
97
- projects_data = self .context .setdefault (' projects_data' , {})
99
+ projects_data = self .context .setdefault (" projects_data" , {})
98
100
version_data = VersionData (
99
101
slug = obj .version ,
100
102
docs_url = docs_url ,
@@ -116,7 +118,7 @@ def get_domain(self, obj):
116
118
full_path = self ._get_full_path (obj )
117
119
if full_path :
118
120
parsed = urlparse (full_path )
119
- return f' { parsed .scheme } ://{ parsed .netloc } '
121
+ return f" { parsed .scheme } ://{ parsed .netloc } "
120
122
return None
121
123
122
124
def get_path (self , obj ):
@@ -136,16 +138,16 @@ def _get_full_path(self, obj):
136
138
# and always end it with / so it goes directly to proxito.
137
139
# For a generic doctype we just strip the index.html part if it exists.
138
140
if obj .doctype in {SPHINX_HTMLDIR , MKDOCS , GENERIC }:
139
- path = re .sub (' (^|/)index.html$' , '/' , path )
141
+ path = re .sub (" (^|/)index.html$" , "/" , path )
140
142
141
- return docs_url .rstrip ('/' ) + '/' + path .lstrip ('/' )
143
+ return docs_url .rstrip ("/" ) + "/" + path .lstrip ("/" )
142
144
return None
143
145
144
146
def get_blocks (self , obj ):
145
147
"""Combine and sort inner results (domains and sections)."""
146
148
serializers = {
147
- ' domain' : DomainSearchSerializer ,
148
- ' section' : SectionSearchSerializer ,
149
+ " domain" : DomainSearchSerializer ,
150
+ " section" : SectionSearchSerializer ,
149
151
}
150
152
151
153
inner_hits = obj .meta .inner_hits
@@ -154,19 +156,16 @@ def get_blocks(self, obj):
154
156
155
157
# Make them identifiable before merging them
156
158
for s in sections :
157
- s .type = ' section'
159
+ s .type = " section"
158
160
for d in domains :
159
- d .type = ' domain'
161
+ d .type = " domain"
160
162
161
163
sorted_results = sorted (
162
164
itertools .chain (sections , domains ),
163
- key = attrgetter (' meta.score' ),
165
+ key = attrgetter (" meta.score" ),
164
166
reverse = True ,
165
167
)
166
- sorted_results = [
167
- serializers [hit .type ](hit ).data
168
- for hit in sorted_results
169
- ]
168
+ sorted_results = [serializers [hit .type ](hit ).data for hit in sorted_results ]
170
169
return sorted_results
171
170
172
171
@@ -176,20 +175,20 @@ class DomainHighlightSerializer(serializers.Serializer):
176
175
content = serializers .SerializerMethodField ()
177
176
178
177
def get_name (self , obj ):
179
- return list (getattr (obj , ' domains.name' , []))
178
+ return list (getattr (obj , " domains.name" , []))
180
179
181
180
def get_content (self , obj ):
182
- return list (getattr (obj , ' domains.docstrings' , []))
181
+ return list (getattr (obj , " domains.docstrings" , []))
183
182
184
183
185
184
class DomainSearchSerializer (serializers .Serializer ):
186
185
187
- type = serializers .CharField (default = ' domain' , source = None , read_only = True )
188
- role = serializers .CharField (source = ' role_name' )
186
+ type = serializers .CharField (default = " domain" , source = None , read_only = True )
187
+ role = serializers .CharField (source = " role_name" )
189
188
name = serializers .CharField ()
190
- id = serializers .CharField (source = ' anchor' )
191
- content = serializers .CharField (source = ' docstrings' )
192
- highlights = DomainHighlightSerializer (source = ' meta.highlight' , default = dict )
189
+ id = serializers .CharField (source = " anchor" )
190
+ content = serializers .CharField (source = " docstrings" )
191
+ highlights = DomainHighlightSerializer (source = " meta.highlight" , default = dict )
193
192
194
193
195
194
class SectionHighlightSerializer (serializers .Serializer ):
@@ -198,16 +197,16 @@ class SectionHighlightSerializer(serializers.Serializer):
198
197
content = serializers .SerializerMethodField ()
199
198
200
199
def get_title (self , obj ):
201
- return list (getattr (obj , ' sections.title' , []))
200
+ return list (getattr (obj , " sections.title" , []))
202
201
203
202
def get_content (self , obj ):
204
- return list (getattr (obj , ' sections.content' , []))
203
+ return list (getattr (obj , " sections.content" , []))
205
204
206
205
207
206
class SectionSearchSerializer (serializers .Serializer ):
208
207
209
- type = serializers .CharField (default = ' section' , source = None , read_only = True )
208
+ type = serializers .CharField (default = " section" , source = None , read_only = True )
210
209
id = serializers .CharField ()
211
210
title = serializers .CharField ()
212
211
content = serializers .CharField ()
213
- highlights = SectionHighlightSerializer (source = ' meta.highlight' , default = dict )
212
+ highlights = SectionHighlightSerializer (source = " meta.highlight" , default = dict )
0 commit comments