Exemplo n.º 1
0
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())
Exemplo n.º 2
0
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,
    })
Exemplo n.º 3
0
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,
    })
Exemplo n.º 4
0
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())
    })