def rate(self, request, *args, **kwargs): """Rate ride.""" ride = self.get_object() serializer_class = self.get_serializer_class() context = self.get_serializer_context() context['ride'] = ride serializer = serializer_class(data=request.data, context=context) serializer.is_valid(raise_exception=True) ride = serializer.save() data = RideModelSerializer(ride).data return Response(data, status=status.HTTP_201_CREATED)
def join(self, request, *args, **kwargs): """Add requesting user to ride.""" ride = self.get_object() serializer_class = self.get_serializer_class() serializer = JoinRideSerializer( ride, data={'passenger': request.user.pk}, context={'ride': ride, 'circle': self.circle}, partial=True ) serializer.is_valid(raise_exception=True) ride = serializer.save() data = RideModelSerializer(ride).data return Response(data, status=status.HTTP_200_OK)
def finish(self, request, *args, **kwargs): """Call by owners to finish a ride.""" ride = self.get_object() serializer_class = self.get_serializer_class() serializer = serializer_class( ride, data={'is_active': False, 'current_time': timezone.now()}, context=self.get_serializer_context(), partial=True ) serializer.is_valid(raise_exception=True) ride = serializer.save() data = RideModelSerializer(ride).data return Response(data, status=status.HTTP_200_OK)
def qualify(self, request, *args, **kwargs): """Manages giving qualification to a ride""" serializer_class = self.get_serializer_class() serializer = serializer_class( data=request.data, context=self.get_serializer_context(), ) if serializer.is_valid(raise_exception=True): ride = serializer.save() data = RideModelSerializer(ride).data return Response(data=data, status=HTTP_200_OK)
def join(self, request, *args, **kwargs): """Añade usuario solicitante para viajar.""" ride = self.get_object() # Traemos al ride(viaje) que se coloco en la url. # TODO usar el metodo get_serializer_class. --Ya se corrigio serializer_class = self.get_serializer_class() serializer = serializer_class( ride, data={'passenger': request.user.pk}, # Enviamos el id del objeto User. context={'ride': ride, 'circle': self.circle}, # Eliminamos los datos que ya venian en el context.¿? partial=True ) serializer.is_valid(raise_exception=True) # Valida los campos que son Enviamos y devueltos # verificando su validez, en caso que no sea validos. Al colocar raise_exception=True esto mostrara # al cliente los errores que ocurrieron. Desde datos Json. ride = serializer.save() data = RideModelSerializer(ride).data # Mostraramos de nuevo los datos del viaje return Response(data, status=status.HTTP_200_OK)
def finish(self, request, *args, **kwargs): """Llama a los propietarios para terminar un viaje.""" ride = self.get_object() serializer_class = self.get_serializer_class() serializer = serializer_class( ride, data={'is_active': False, 'current_time': timezone.now()}, # Traemos la fecha actual en la envia el post. context=self.get_serializer_context(), partial=True # Cuando mandamos partial= True logramos solo actualizar campos especificos del # modelos, por otro lado tambien podemos enviar otros tipos de datos, pero solo tomara los que # estan en el modelos(is_active). Y los actualizara al instancia de ride que enviamos tambien. ) serializer.is_valid(raise_exception=True) # Valida los campos que son Enviamos y devueltos # verificando su validez, en caso que no sea validos. Al colocar raise_exception=True esto mostrara # al cliente los errores que ocurrieron. Desde datos Json. ride = serializer.save() data = RideModelSerializer(ride).data # Mostraramos de nuevo los datos del viaje return Response(data, status=status.HTTP_200_OK)
def join(self, request, *args, **kwargs): """Handles joining to a circle.""" ride = self.get_object() serializer_class = self.get_serializer_class() serializer = serializer_class( ride, data={ 'passenger': request.user.pk }, context=self.get_serializer_context(), partial=True ) if serializer.is_valid(raise_exception=True): ride = serializer.save() data = RideModelSerializer(ride).data return Response(data=data, status=HTTP_200_OK)