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