def finish_add_sightings_to_trip(request, trip, selected, unknowns): selected_details = add_trip_utils.bulk_lookup(selected) # Now save the selected and unknown sightings for i, details in enumerate(selected_details): trip.sightings.create( species = species_for_freebase_details(details), place = trip.place, note = '' ) for i, name in enumerate(unknowns): trip.sightings.create( place = trip.place, species_inexact = name, note = '' ) # And we're done! return HttpResponseRedirect(trip.get_absolute_url())
def finish_add_trip(request, place, selected, unknowns): selected_details = add_trip_utils.bulk_lookup(selected) if 'add_trip_form_displayed' not in request.POST: # Display form for the first time form = AddTripForm( user = request.user, place = place, initial = {'name': 'My trip'} ) else: form = AddTripForm(request.POST, user = request.user, place = place) if form.is_valid(): trip = Trip( name = form.cleaned_data['name'], start = form.cleaned_data['start'], start_accuracy = form.cleaned_data['start_accuracy'], description = form.cleaned_data['description'], rating = form.cleaned_data['rating'], place = place, ) trip.save() # Now save the selected and unknown sightings for i, details in enumerate(selected_details): trip.sightings.create( species = species_for_freebase_details(details), place = place, note = request.POST.get('selected_note_%s' % i, ''), ) for i, name in enumerate(unknowns): trip.sightings.create( place = place, species_inexact = name, note = request.POST.get('unknown_note_%s' % i, ''), ) # And we're done! return HttpResponseRedirect(trip.get_absolute_url()) return render(request, 'trips/add_trip_final.html', { 'form': form, 'place': place, 'selected': selected, 'selected_details': selected_details, 'unknowns': unknowns, 'request_path': request.path, })
def add_trip(request, country_code, slug): place, redirect_args = _get_place(country_code, slug) if redirect_args: return HttpResponseRedirect( reverse('place-add-trip', args=redirect_args) ) selected = _get_selected(request.POST) unknowns = _get_unknowns(request.POST) if 'finish' in request.POST and (selected or unknowns): return finish_add_trip(request, place, selected, unknowns) q = request.REQUEST.get('q', '').strip() # Clear search if they selected one of the options if _add_selected_was_pressed(request.POST): q = '' # Or if they hit the 'clear' button: if 'clear' in request.POST: q = '' results = [] showing_animals_seen_here = False if q: # Search for 10 but only show the first 5, so our custom ordering # that shows animals spotted here before can take effect results = add_trip_utils.search(q, limit=10, place=place)[:5] else: # Show animals that other people have seen here showing_animals_seen_here = True results = add_trip_utils.previously_seen_at(place) details = add_trip_utils.bulk_lookup(selected, place=place) return render(request, 'trips/add_trip.html', { 'place': place, 'results': results, 'selected_details': details, 'q': q, 'unknowns': unknowns, 'request_path': request.path, 'debug': pformat(request.POST.lists()), 'showing_animals_seen_here': showing_animals_seen_here, })
def add_sightings_to_trip(request, username, trip_id): if username != request.user.username: return HttpResponse('You cannot edit this trip') trip = get_object_or_404(Trip, pk = trip_id, created_by__username = username ) place = trip.place selected = _get_selected(request.POST) unknowns = _get_unknowns(request.POST) if 'finish' in request.POST and (selected or unknowns): return finish_add_sightings_to_trip(request, trip, selected, unknowns) q = request.REQUEST.get('q', '').strip() # Clear search if they selected one of the options if _add_selected_was_pressed(request.POST): q = '' results = [] if q: # Search for 10 but only show the first 5, so our custom ordering # that shows animals spotted here before can take effect results = add_trip_utils.search(q, limit=10, place=place)[:5] details = add_trip_utils.bulk_lookup(selected, place=place) return render(request, 'trips/add_trip.html', { 'place': place, 'trip': trip, 'results': results, 'selected_details': details, 'q': q, 'unknowns': unknowns, 'request_path': request.path, 'debug': pformat(request.POST.lists()) })