def results(request): def get_queryset(f): r = Product.objects r = r.filter(ingestion_date__gte=f['min_ingestion_date'], ingestion_date__lte=f['max_ingestion_date'], satellite__startswith=f['satellite'] ) if f['orbit_direction']: r = r.filter(orbit_direction__in=f['orbit_direction']) if f['polarisation_mode']: r = r.filter(polarisation_mode__contains=f['polarisation_mode']) if f['product_type']: r = r.filter(product_type__in=f['product_type']) if f['sensor_mode']: r = r.filter(mode__in=f['sensor_mode']) if f['relative_orbit_number'] is not None: r = r.filter(relative_orbit_number=f['relative_orbit_number']) if f['search_extent_min_x'] is not None: search_extent = Polygon.from_bbox((f['search_extent_min_x'], f['search_extent_min_y'], f['search_extent_max_x'], f['search_extent_max_y']) ) r = r.filter(coordinates__intersects=search_extent) r_geom = [] for result in r: r_tuple = result.coordinates.tuple[0] r_tuple_coords = [] for point in r_tuple: r_tuple_coords.append([point[1], point[0]]) r_geom.append("L.polygon(" + str(r_tuple_coords) + ", {className: '" + result.id + "', color: '#000', " "weight: '1', " "fillOpacity: '0.1'" "}).addTo(map);" ) return r, r_geom if request.method == 'POST': form = SearchForm(request.POST) if form.is_valid(): form_data = form.cleaned_data search_extent_js = None if form_data['search_extent_min_x'] is not None: search_extent = Polygon.from_bbox((form_data['search_extent_min_x'], form_data['search_extent_min_y'], form_data['search_extent_max_x'], form_data['search_extent_max_y']) ) search_extent_js = 'L.geoJSON(' \ + search_extent.geojson \ + ', {style: ' \ '{"color": "#000", ' \ '"weight": 1, ' \ '"fillOpacity": 0, ' \ '"dashArray": "10, 5"}' \ '}).addTo(map);' cart = Cart(request) cart.set_extent(search_extent.geojson) results, results_geom = get_queryset(form_data) return render(request, 'search/results.html', context={'form': form.cleaned_data, 'results': results, 'results_geom': results_geom, 'search_extent': search_extent_js}) else: return redirect('search_form')
def cart(request): return {'cart': Cart(request)}