Example #1
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,
    })
Example #2
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())
    })
Example #3
0
def ajax_search_species(request, country_code, slug):
    place, redirect_args = _get_place(country_code, slug)
    if redirect_args:
        return HttpResponseRedirect(
            reverse('place-add-trip-ajax-search-species', args=redirect_args)
        )
    
    q = request.GET.get('q', '')
    if not q:
        results = add_trip_utils.previously_seen_at(place)
        return render(request, 'trips/ajax_search_species.html', {
            'q': '',
            'showing_animals_seen_here': True,
            'results': results,
        })
    
    if len(q) >= 3:
        return render(request, 'trips/ajax_search_species.html', {
            'q': q,
            'showing_animals_seen_here': False,
            'results': add_trip_utils.search(q, limit=10, place=place)[:5],
        })
    else:
        return render(request, 'trips/_add_trip_help.html')