def get_destination(self, qs, name, value): radius = self.data.get('destination_radius', '5') if not radius: radius = '5' radius = min(max(float(radius), 0.05), 20) pipe = RequestPipeline('destination', self.request) result = pipe.search(value) if result is None: return qs.none() return qs.filter(destination_point__distance_lte=(result.point, D(km=radius)))
def validate(self, data): data = super().validate(data) if data.get('seats_left__gte'): data['min_seats'] = data.pop('seats_left__gte') if data.get('datetime__lte'): data['datetime_lte'] = data.pop('datetime__lte') if data.get('datetime__gte'): data['datetime_gte'] = data.pop('datetime__gte') if data.get('price__lte'): data['price'] = data.pop('price__lte') if data.get('origin'): pipe_origin = RequestPipeline(query_type='origin', request=self.context['request']) result_origin = pipe_origin.search(data['origin']) data['origin'] = result_origin.address data['origin_point'] = result_origin.point if data.get('destination'): pipe_destination = RequestPipeline(query_type='destination', request=self.context['request']) result_destination = pipe_destination.search(data['destination']) data['destination'] = result_destination.address data['destination_point'] = result_destination.point return data
def validate(self, data): data = super().validate(data) if data.get('origin'): pipe_origin = RequestPipeline(query_type='origin', request=self.context['request']) result_origin = pipe_origin.search(data['origin']) data['origin'] = result_origin.address data['origin_point'] = result_origin.point if data.get('destination'): pipe_destination = RequestPipeline(query_type='destination', request=self.context['request']) result_destination = pipe_destination.search(data['destination']) data['destination'] = result_destination.address data['destination_point'] = result_destination.point return data