@@ -236,96 +236,6 @@ def get_geo_polygon_params(cls, value, field):
236236 return params
237237 return {}
238238
239- @classmethod
240- def get_range_params (cls , value , field ):
241- """Get params for `range` query.
242-
243- Example:
244-
245- /api/articles/?location__geo_distance_range=2km|10km|43.53|-12.23
246-
247- Elasticsearch query:
248-
249- {
250- "query": {
251- "bool" : {
252- "must" : {
253- "match_all" : {}
254- },
255- "filter" : {
256- "geo_distance_range" : {
257- "from" : "200km",
258- "to" : "400km",
259- "pin.location" : {
260- "lat" : 40,
261- "lon" : -70
262- }
263- }
264- }
265- }
266- }
267- }
268-
269- :param value:
270- :param field:
271- :type: str
272- :type: str
273- :return: Params to be used in `range` query.
274- :rtype: dict
275- """
276- __values = cls .split_lookup_value (value , maxsplit = 4 )
277- __len_values = len (__values )
278-
279- if __len_values < 4 :
280- return {}
281-
282- params = {
283- 'from' : __values [0 ],
284- 'to' : __values [1 ],
285- field : {
286- 'lat' : __values [2 ],
287- 'lon' : __values [3 ]
288- }
289- }
290-
291- return params
292-
293- @classmethod
294- def get_gte_lte_params (cls , value , lookup , field ):
295- """Get params for `gte`, `gt`, `lte` and `lt` query.
296-
297- Examples:
298-
299- /api/articles/?location__geo_distance_gt=2km|43.53|-12.23
300- /api/articles/?location__geo_distance_gte=2km|43.53|-12.23
301- /api/articles/?location__geo_distance_lt=2km|43.53|-12.23
302- /api/articles/?location__geo_distance_lte=2km|43.53|-12.23
303-
304- :param value:
305- :param lookup:
306- :param field:
307- :type value: str
308- :type lookup: str
309- :type field: str
310- :return: Params to be used in `range` query.
311- :rtype: dict
312- """
313- __values = cls .split_lookup_value (value , maxsplit = 3 )
314- __len_values = len (__values )
315-
316- if __len_values < 3 :
317- return {}
318-
319- params = {
320- lookup : __values [0 ],
321- field : {
322- 'lat' : __values [2 ],
323- 'lon' : __values [3 ]
324- }
325- }
326-
327- return params
328-
329239 @classmethod
330240 def apply_query_geo_distance (cls , queryset , options , value ):
331241 """Apply `geo_distance` query.
@@ -346,96 +256,6 @@ def apply_query_geo_distance(cls, queryset, options, value):
346256 )
347257 )
348258
349- @classmethod
350- def apply_query_geo_distance_range (cls , queryset , options , value ):
351- """Apply `geo_distance_range` `range` query.
352-
353- :param queryset: Original queryset.
354- :param options: Filter options.
355- :param value: value to filter on.
356- :type queryset: elasticsearch_dsl.search.Search
357- :type options: dict
358- :type value: str
359- :return: Modified queryset.
360- :rtype: elasticsearch_dsl.search.Search
361- """
362- return queryset .filter (
363- 'geo_distance_range' ,
364- ** cls .get_range_params (value , options ['field' ])
365- )
366-
367- @classmethod
368- def apply_query_geo_distance_gt (cls , queryset , options , value ):
369- """Apply `geo_distance_range` `gt` query.
370-
371- :param queryset: Original queryset.
372- :param options: Filter options.
373- :param value: value to filter on.
374- :type queryset: elasticsearch_dsl.search.Search
375- :type options: dict
376- :type value: str
377- :return: Modified queryset.
378- :rtype: elasticsearch_dsl.search.Search
379- """
380- return queryset .filter (
381- 'geo_distance_range' ,
382- ** cls .get_gte_lte_params (value , 'gt' , options ['field' ])
383- )
384-
385- @classmethod
386- def apply_query_geo_distance_gte (cls , queryset , options , value ):
387- """Apply `geo_distance_range` `gte` query.
388-
389- :param queryset: Original queryset.
390- :param options: Filter options.
391- :param value: value to filter on.
392- :type queryset: elasticsearch_dsl.search.Search
393- :type options: dict
394- :type value: str
395- :return: Modified queryset.
396- :rtype: elasticsearch_dsl.search.Search
397- """
398- return queryset .filter (
399- 'geo_distance_range' ,
400- ** cls .get_gte_lte_params (value , 'gte' , options ['field' ])
401- )
402-
403- @classmethod
404- def apply_query_geo_distance_lt (cls , queryset , options , value ):
405- """Apply `geo_distance_range` `lt` query.
406-
407- :param queryset: Original queryset.
408- :param options: Filter options.
409- :param value: value to filter on.
410- :type queryset: elasticsearch_dsl.search.Search
411- :type options: dict
412- :type value: str
413- :return: Modified queryset.
414- :rtype: elasticsearch_dsl.search.Search
415- """
416- return queryset .filter (
417- 'geo_distance_range' ,
418- ** cls .get_gte_lte_params (value , 'lt' , options ['field' ])
419- )
420-
421- @classmethod
422- def apply_query_geo_distance_lte (cls , queryset , options , value ):
423- """Apply `geo_distance_range` `lte` query.
424-
425- :param queryset: Original queryset.
426- :param options: Filter options.
427- :param value: value to filter on.
428- :type queryset: elasticsearch_dsl.search.Search
429- :type options: dict
430- :type value: str
431- :return: Modified queryset.
432- :rtype: elasticsearch_dsl.search.Search
433- """
434- return queryset .filter (
435- 'geo_distance_range' ,
436- ** cls .get_gte_lte_params (value , 'lte' , options ['field' ])
437- )
438-
439259 @classmethod
440260 def apply_query_geo_polygon (cls , queryset , options , value ):
441261 """Apply `geo_polygon` query.
0 commit comments