Exemplo n.º 1
0
    def cancel_reservation(self, token, reservationid):
        """Cancel Reservation"""
        response = self.authservice.get_email_from_token(token)
        if not response['status']:
            return False
        user = User(response['email'])
        if user.balance is None:
            user.balance = Decimal(0)
        reservation = self.get_user_reservation_for_id(user, reservationid)
        if reservation is None or reservation.reservation_start is None:
            return False
        if reservation.parking_start is not None:
            return False

        spot = ParkingSpot(reservation.spot_id)
        lot = ParkingLot(spot.lot_id)
        reservation.parking_start = reservation.parking_end = datetime.now()

        user.balance -= reservation.reservation_fee
        user.save()
        user.flush()

        lot.removeReservation(reservation.spot_id)
        reservation.remove_mapping()
        return True