def create(request): """Create a ride(as owner)""" # Authentication if not request.user.is_authenticated: return HttpResponse(status=401) # GET if request.method == 'GET': return render(request, 'rides/create.html') # POST if request.method == 'POST': user = get_object_or_404(User, id=request.user.id) destination = request.POST['destination'] required_arrival_time = str_to_datetime(request.POST['arrival_time']) passenger_number_from_owner = request.POST['number_of_passengers'] requested_vehicle_type = request.POST['vehicle_type'] special_request = request.POST['special_request'] can_be_shared = get_checkbox_input('can_be_shared', request) # create object Ride.objects.create( owner=user, destination=destination, required_arrival_time=required_arrival_time, passenger_number_from_owner=passenger_number_from_owner, passenger_number_in_total=passenger_number_from_owner, can_be_shared=can_be_shared, requested_vehicle_type=requested_vehicle_type, special_request=special_request, ) # send message & return messages.success(request, 'You have successfully made a request.') return redirect('rides')
def edit(request, ride_id): """Edit a ride""" # Authentication if not request.user.is_authenticated: return HttpResponse(status=401) # Identify User's role user = get_object_or_404(User, id=request.user.id) ride = get_object_or_404(Ride, id=ride_id) user_role = user_role_in_ride(user, ride) # GET: Display ride information if request.method == 'GET': context = { 'ride': ride, 'edit_as': user_role, } return render(request, 'rides/edit.html', context) # POST: Update ride information(for owner only), driver and sharer user different methods below if request.method == 'POST' and user_role == 'owner' and ride.ride_status == 'open': # get form inputs destination = request.POST['destination'] required_arrival_time = str_to_datetime( request.POST['arrival_time'] ) passenger_number_from_owner = int(request.POST['number_of_passengers']) requested_vehicle_type = request.POST['vehicle_type'] special_request = request.POST['special_request'] can_be_shared = get_checkbox_input('can_be_shared', request) # Update ride information ride.destination = destination ride.required_arrival_time = required_arrival_time ride.can_be_shared = can_be_shared ride.requested_vehicle_type = requested_vehicle_type ride.special_request = special_request old_passenger_number_from_owner = ride.passenger_number_from_owner # pay special attention ride.passenger_number_from_owner = passenger_number_from_owner # pay special attention ride.passenger_number_in_total += (passenger_number_from_owner - old_passenger_number_from_owner) ride.save() return redirect('rides')