Пример #1
0
 def list(self, request, *arg, **kwargs):
     """ Lists all bookings made by users"""
     data = Booking.objects.all().select_related()
     if request.user.is_admin:
         serializer = self.serializer_class(data, many=True)
         return success_response(serializer.data, 'All Bookings', status.HTTP_200_OK)
     else:
         owner = data.filter(user_id__pk=request.user.id)
         serializer = self.serializer_class(owner, many=True)
         return success_response(serializer.data, 'Your Bookings have been retrieved', status.HTTP_200_OK)
Пример #2
0
    def create(self, request, *args, **kwargs):
        """ Creates Trip Bookings for all users who use this platform"""

        data = request.data

        try:
            trip_data = get_object_or_404(Trip, pk=data['trip_detail'])

            if trip_data:
                if trip_data.curr_bus_capacity == trip_data.bus_id.capacity:
                    return failure_response({}, 'Bus capacity is full', status.HTTP_409_CONFLICT)
                else:
                    data['user_id'] = request.user
                    data['bus_id'] = trip_data.bus_id
                    serializer = self.serializer_class(
                        data=data, context={'user': request.user})
                    serializer.is_valid(raise_exception=True)
                    trip_data.curr_bus_capacity += 1
                    trip_data.save()
                    serializer.save()
                    return success_response(serializer.data, 'Your Trip has been booked', status.HTTP_201_CREATED)
            else:
                return failure_response({}, 'trip id specified does  not exist', status.HTTP_400_BAD_REQUEST)
        except IntegrityError:
            return failure_response({}, 'You have made this booking before', status.HTTP_409_CONFLICT)
Пример #3
0
 def list(self, request, *args, **kwargs):
     "returns all available trips for both admin and regular users"
     startdate = date.today()
     enddate = startdate + timedelta(days=6)
     print(enddate)
     response = Trip.objects.filter(trip_date__range=[startdate, enddate])
     serializer = self.serializer_class(response, many=True)
     return success_response(serializer.data, 'trips retrieved successfully', status.HTTP_200_OK)
Пример #4
0
    def create(self, request, *args, **kwargs):
        """ Only admin Users can create a trip listing"""

        data = request.data
        serializer = self.serializer_class(data=data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return success_response(serializer.data, TRIP_ADDED, status.HTTP_201_CREATED)
Пример #5
0
    def update(self, request, pk):
        """ Allows Admin users to update a trip"""

        _data = request.data

        trip = get_object_or_404(Trip.objects.all(), pk=pk)
        # Here is that serialize, validate, save pattern we talked about
        # before.
        serializer = self.serializer_class(
            trip, data=_data, partial=True
        )
        serializer.is_valid(raise_exception=True)
        serializer.save()

        return success_response(serializer.data, TRIP_UPDATED, status.HTTP_200_OK)
Пример #6
0
    def post(self, request):
        """ Logs a User \n
            args: 
                request(request object): Django request object

            returns:
                JSON user data and token 
        """

        user = request.data
        serializer = self.serializer_class(data=user)
        serializer.is_valid(raise_exception=True)

        return success_response(serializer.data, LOGIN_SUCCESS,
                                status.HTTP_200_OK)
Пример #7
0
    def post(self, request):
        """Creates a user
            Args:
                request (request object): Django request object
            Returns:
                JSON: Newly crearted user
        """
        user = request.data

        email = request.data.get('email')

        user_exist = User.objects.filter(email=email)
        if (user_exist):
            response = {"error": "Email is already in use"}
            return Response(response, status=status.HTTP_409_CONFLICT)

        else:

            serializer = self.serializer_class(data=user)
            serializer.is_valid(raise_exception=True)
            serializer.save()

            return success_response(serializer.data, USER_CREATED,
                                    status.HTTP_201_CREATED)