def close_trip(trip_id): trip = get_trip_by_id(trip_id) if trip is None: raise TripNotFoundException(trip_id) if trip.closed: return trip.close() save_changes(trip)
def get_expenses(trip_id, user_id): if not trip_exists(trip_id): raise TripNotFoundException(trip_id) if not get_user_by_id(user_id): raise UserNotFoundException(user_id) return Expense.query.filter_by(trip_id=trip_id).filter_by( user_id=user_id).all()
def create_expense(expense): if not trip_exists(expense.trip_id): raise TripNotFoundException(expense.trip_id) if not get_user_by_id(expense.user_id): raise UserNotFoundException(expense.user_id) save_changes(expense) return expense
def create_step(step): if not trip_exists(step.trip_id): raise TripNotFoundException(step.trip_id) if not Step.name_min_length <= len(step.name) <= Step.name_max_length: raise StringLengthOutOfRangeException('Name', Step.name_min_length, Step.name_max_length) save_changes(step) return step
def invite_to_trip(trip_id, user_to_invite_email): trip = get_trip_by_id(trip_id) if trip is None: raise TripNotFoundException(trip_id) user = get_user_by_email(user_to_invite_email) if user is None: raise UserEmailNotFoundException(user_to_invite_email) trip.users_trips.append(user) save_changes(trip) return trip.users_trips
def update_trip_cover_picture(file_id, trip_id): trip: Trip = get_trip_by_id(trip_id) if not trip: raise TripNotFoundException(trip_id) file: File = get_file(file_id) if not file: raise FileNotFoundException() if trip.picture_path is not None: delete(trip.picture_path) trip.picture_path = file.id save_changes(trip)
def get_messages(trip_id): if not trip_exists(trip_id): raise TripNotFoundException(trip_id) return ChatMessage.query.filter_by(trip_id=trip_id).all()
def user_participates_in_trip(user_id, trip_id): if not trip_exists(trip_id): raise TripNotFoundException(trip_id) return any(user.id == user_id for user in get_trip_by_id(trip_id).users_trips)
def get_user_steps_participation(user, trip_id): if not trip_exists(trip_id): raise TripNotFoundException(trip_id) return sorted(list( filter(lambda step: step.trip_id == int(trip_id), user.users_steps)), key=lambda step: step.start_datetime)
def get_timeline(trip_id): if not trip_exists(trip_id): raise TripNotFoundException(trip_id) return Step.query.filter_by(trip_id=trip_id).order_by( Step.start_datetime).all()