@@ -123,19 +123,34 @@ def search_meilisearch(page, departement, region, query, request):
123
123
except :
124
124
return JsonResponse ({'message' : 'Le moteur de recherche est mal configuré' }, status = 500 )
125
125
126
- facets = ['departement' , 'region' , 'resume_composition_clavier' , 'facet_facteurs' , 'jeux' ]
126
+ facets = ['departement' , 'region' , 'resume_composition_clavier' , 'facet_facteurs' , 'jeux' , 'proprietaire' , 'etat' ]
127
127
options = {'attributesToHighlight' : ['*' ], 'hitsPerPage' : OrgueSearch .paginate_by , 'page' : int (page )}
128
128
129
+ # Première requête qui permet de récupérer toutes les possibilités dans chaque facet
130
+ options ["facets" ] = facets
131
+ filter_init = []
132
+ if departement :
133
+ filter_init .append ('departement="{}"' .format (departement ))
134
+ if region :
135
+ filter_init .append ('region="{}"' .format (region ))
136
+ if len (filter_init ) > 0 :
137
+ options ['filter' ] = filter_init
138
+ results_init = index .search (query , options )
139
+
140
+ # Deuxième requête pour récupérer les orgues correspondant aux filtres
129
141
filter = []
130
142
filterResult = {}
131
143
for facet in facets :
132
144
arg = request .POST .get ('filter_' + facet )
133
145
if arg :
134
- values = arg .split (', ' )
146
+ values = arg .split (';; ' )
135
147
filter .append (['{}="{}"' .format (facet , value ) for value in values ])
136
148
filterResult [facet ] = values
137
- if not filterResult and page == '1' and (query or departement or region ):
138
- options ['facets' ] = facets
149
+ init = request .POST .get ('init' )
150
+
151
+ # Si c'est l'initialisation de la page ou d'un département, alors par défaut, on n'affiche pas les orgues disparus
152
+ if init == "true" :
153
+ filter .append (['etat="{}"' .format (value [1 ]) for value in Orgue .CHOIX_ETAT if value [1 ] != "Disparu" ])
139
154
if departement :
140
155
filter .append ('departement="{}"' .format (departement ))
141
156
if region :
@@ -149,16 +164,21 @@ def search_meilisearch(page, departement, region, query, request):
149
164
options ['sort' ] = [sort ]
150
165
results = index .search (query , options )
151
166
if 'facetDistribution' in results :
152
- results ['facets' ] = OrgueSearch .convertFacets (results ['facetDistribution' ])
167
+ results ['facets' ] = OrgueSearch .convertFacets (results_init ['facetDistribution' ])
153
168
del results ['facetDistribution' ]
169
+
170
+ # Si c'est l'initialisation de la page ou d'un département,
171
+ # alors par défaut, on ne surligne pas "Disparu" dans la colonne des filtres
172
+ if init == "true" :
173
+ filterResult ['etat' ] = ['Très bon, tout à fait jouable' , 'Bon : jouable, défauts mineurs' , 'Altéré : difficilement jouable' , 'Dégradé ou en ruine : injouable' , 'En restauration (ou projet initié)' ]
154
174
results ['filter' ] = filterResult
155
175
return results
156
176
157
177
@staticmethod
158
178
def convertFacets (facetDistribution ):
159
- labels = {'departement' : 'Département' , 'region' : 'Régions' , 'resume_composition_clavier' : 'Nombres de claviers' , 'facet_facteurs' : 'Facteurs' , 'jeux' : 'Jeux' }
179
+ labels = {'departement' : 'Département' , 'region' : 'Régions' , 'resume_composition_clavier' : 'Nombres de claviers' , 'facet_facteurs' : 'Facteurs' , 'jeux' : 'Jeux' , 'proprietaire' : 'Propriétaire' , 'etat' : 'Etat' }
160
180
return [{'label' : labels [name ], 'field' : name ,
161
- 'items' : sorted ([{'name' : item , 'count' : count } for item , count in values .items ()], key = lambda k : k ['count' ], reverse = True )} for name , values in
181
+ 'items' : sorted ([{'name' : item , 'count' : count } for item , count in values .items ()], key = lambda k : k ['name' ] )} for name , values in
162
182
facetDistribution .items ()]
163
183
164
184
0 commit comments