9
9
PageDocument ,
10
10
ProjectDocument ,
11
11
)
12
- from readthedocs .search .signals import (
13
- before_domain_search ,
14
- before_file_search ,
15
- before_project_search ,
16
- )
17
-
18
12
from readthedocs .core .utils .extend import SettingsOverrideObject
19
13
20
14
log = logging .getLogger (__name__ )
21
15
22
16
23
- ALL_FACETS = ['project' , 'version' , 'doc_type' , 'language' , 'index' ]
24
-
25
-
26
17
class RTDFacetedSearch (FacetedSearch ):
27
18
28
19
def __init__ (self , user , ** kwargs ):
@@ -31,12 +22,7 @@ def __init__(self, user, **kwargs):
31
22
for facet in self .facets :
32
23
if facet in kwargs :
33
24
kwargs .setdefault ('filters' , {})[facet ] = kwargs .pop (facet )
34
-
35
- # Don't pass along unnecessary filters
36
- for f in ALL_FACETS :
37
- if f in kwargs :
38
- del kwargs [f ]
39
- super (RTDFacetedSearch , self ).__init__ (** kwargs )
25
+ super ().__init__ (** kwargs )
40
26
41
27
def search (self ):
42
28
"""
@@ -49,15 +35,6 @@ def search(self):
49
35
"""
50
36
s = super ().search ()
51
37
s = s .source (exclude = ['content' , 'headers' ])
52
- resp = self .signal .send (sender = self , user = self .user , search = s )
53
- if resp :
54
- # Signal return a search object
55
- try :
56
- s = resp [0 ][1 ]
57
- except AttributeError :
58
- log .exception (
59
- 'Failed to return a search object from search signals'
60
- )
61
38
# Return 25 results
62
39
return s [:25 ]
63
40
@@ -89,23 +66,8 @@ def query(self, search, query):
89
66
return search
90
67
91
68
92
- class DomainSearch (RTDFacetedSearch ):
93
- facets = {
94
- 'project' : TermsFacet (field = 'project' ),
95
- 'version' : TermsFacet (field = 'version' ),
96
- 'doc_type' : TermsFacet (field = 'doc_type' ),
97
- }
98
- signal = before_domain_search
99
- doc_types = [DomainDocument ]
100
- index = DomainDocument ._doc_type .index
101
- fields = ('display_name^5' , 'name' )
102
-
103
-
104
- class ProjectSearch (RTDFacetedSearch ):
105
- facets = {
106
- 'language' : TermsFacet (field = 'language' )
107
- }
108
- signal = before_project_search
69
+ class ProjectSearchBase (RTDFacetedSearch ):
70
+ facets = {'language' : TermsFacet (field = 'language' )}
109
71
doc_types = [ProjectDocument ]
110
72
index = ProjectDocument ._doc_type .index
111
73
fields = ('name^10' , 'slug^5' , 'description' )
@@ -121,6 +83,47 @@ class PageSearchBase(RTDFacetedSearch):
121
83
fields = ['title^10' , 'headers^5' , 'content' ]
122
84
123
85
86
+ class DomainSearchBase (RTDFacetedSearch ):
87
+ facets = {
88
+ 'project' : TermsFacet (field = 'project' ),
89
+ 'version' : TermsFacet (field = 'version' ),
90
+ 'doc_type' : TermsFacet (field = 'doc_type' ),
91
+ }
92
+ doc_types = [DomainDocument ]
93
+ index = DomainDocument ._doc_type .index
94
+ fields = ('display_name^5' , 'name' )
95
+
96
+
97
+ class PageSearch (SettingsOverrideObject ):
98
+
99
+ """
100
+ Allow this class to be overridden based on CLASS_OVERRIDES setting.
101
+ This is primary used on the .com to adjust how we filter our search queries
102
+ """
103
+
104
+ _default_class = PageSearchBase
105
+
106
+
107
+ class ProjectSearch (SettingsOverrideObject ):
108
+
109
+ """
110
+ Allow this class to be overridden based on CLASS_OVERRIDES setting.
111
+ This is primary used on the .com to adjust how we filter our search queries
112
+ """
113
+
114
+ _default_class = ProjectSearchBase
115
+
116
+
117
+ class DomainSearch (SettingsOverrideObject ):
118
+
119
+ """
120
+ Allow this class to be overridden based on CLASS_OVERRIDES setting.
121
+ This is primary used on the .com to adjust how we filter our search queries
122
+ """
123
+
124
+ _default_class = DomainSearchBase
125
+
126
+
124
127
class AllSearch (RTDFacetedSearch ):
125
128
facets = {
126
129
'project' : TermsFacet (field = 'project' ),
@@ -129,7 +132,6 @@ class AllSearch(RTDFacetedSearch):
129
132
'doc_type' : TermsFacet (field = 'doc_type' ),
130
133
'index' : TermsFacet (field = '_index' ),
131
134
}
132
- signal = before_file_search
133
135
doc_types = [DomainDocument , PageDocument , ProjectDocument ]
134
136
index = [DomainDocument ._doc_type .index ,
135
137
PageDocument ._doc_type .index ,
0 commit comments