def create_address(): data = request.get_json() or {} # Request verification if 'id' in data: return errors.bad_request( 'Your request is invalid', 'The address id is automatically assigned by the system') if 'user_id' in data: return errors.bad_request( 'Your request is invalid', 'The address creator is automatically assigned by the system') # Update database address = Address() address.from_json(data) address.user_id = User.query.get(request.authorization.username).id db.session.add(address) db.session.commit() # Build response response = jsonify(address.to_json()) response.status_code = 201 response.headers['Location'] = url_for('api.get_address', id=address.id) # Logging logger.add(request.authorization.username, 'Create address ({})'.format(address)) return response
def remove_fleet_car(fleet_id, user_id): data = request.get_json() or {} # Request verification if not all(k in data for k in ('fleet_id', 'car_id')): return errors.bad_request( 'Your request is invalid', 'You need to specify at least fleet- and car id') if not Fleet.query.get(id).first(): return errors.bad_request('Your request is invalid', 'Cannot find given fleet id') if not Car.query.get(data['car_id']).first(): return errors.bad_request('Your request is invalid', 'Cannot find given car id') if not Fleet.query.get(id).first() in Car.query.get( data['car_id']).first().fleets: return errors.bad_request( 'Your request is invalid', 'The given car is not in the specified fleet') # Update database car = Car.query.get(data['car_id']) car.fleets.remove(Fleet.query.get(id)) db.session.add(car) db.session.commit() # Logging logger.add(request.authorization.username, 'Remove car from fleet ({})'.format(car)) return info.ok('The user has been removed')
def create_fleet(): data = request.get_json() or {} # Request verification if 'id' in data: return errors.bad_request( 'Your request is invalid', 'The fleet id is automatically assigned by the system') if 'name' not in data: return errors.bad_request( 'Your request is invalid', 'You need to specify at least the fleet name') if Fleet.query.filter_by(name=data['name']).first(): return errors.bad_request('Your request is invalid', 'The given fleet name is already in use') # Update database fleet = Fleet() fleet.from_json(data) db.session.add(fleet) db.session.commit() # Build response response = jsonify(fleet.to_json()) response.status_code = 201 response.headers['Location'] = url_for('api.get_fleet', id=fleet.id) # Logging logger.add(request.authorization.username, 'Create fleet ({})'.format(fleet)) return response
def create_user(): data = request.get_json() or {} # Request verification if not all(k in data for k in ('id', 'email', 'password')): return errors.bad_request( 'Your request is invalid', 'You need to specify at least id, email and password') if User.query.filter_by(id=data['id']).first(): return errors.bad_request('Your request is invalid', 'The given user id is already in use') if User.query.filter_by(email=data['email']).first(): return errors.bad_request('Your request is invalid', 'The given email address is already in use') # Update database user = User() user.from_json(data) db.session.add(user) db.session.commit() # Build response response = jsonify(user.to_json()) response.status_code = 201 response.headers['Location'] = url_for('api.get_user', id=user.id) # Logging logger.add(request.authorization.username, 'Create user ({})'.format(user)) return response
def add_fleet_user(id): data = request.get_json() or {} # Request verification if not all(k in data for k in ('fleet_id', 'user_id')): return errors.bad_request( 'Your request is invalid', 'You need to specify at least fleet- and user id') if not Fleet.query.get(id).first(): return errors.bad_request('Your request is invalid', 'Cannot find given fleet id') if not User.query.get(data['user_id']).first(): return errors.bad_request('Your request is invalid', 'Cannot find given user id') if Fleet.query.get(id).first() in User.query.get( data['user_id']).first().fleets: return errors.bad_request( 'Your request is invalid', 'The given user is already in the specified fleet') # Update database user = User.query.get(data['user_id']) user.fleets.add(Fleet.query.get(id)) db.session.add(user) db.session.commit() # Logging logger.add(request.authorization.username, 'Add user to fleet ({})'.format(user)) return info.ok('The user has been added')
def create_car(): data = request.get_json() or {} # Request verification if 'id' not in data: return errors.bad_request('Your request is invalid', 'You need to specify at least the car id') if Car.query.filter_by(id=data['id']).first(): return errors.bad_request('Your request is invalid', 'The given car id is already in use') # Update database car = Car() car.from_json(data) db.session.add(car) db.session.commit() # Build response response = jsonify(car.to_json()) response.status_code = 201 response.headers['Location'] = url_for('api.get_car', id=car.id) # Logging logger.add(request.authorization.username, 'Create car ({})'.format(car)) return response
def create_journey(): data = request.get_json() or {} # Request verification # Should we do a pre-check to require all fields? if 'id' or 'user_id' in data: return errors.bad_request( 'Your request is invalid', 'The journey- and creator id is automatically assigned by the system' ) # Update database journey = Journey journey.from_json(data) journey.user_id = User.query.get(request.authorization.username).id db.session.add(journey) db.session.commit() # Build response response = jsonify(journey.to_json()) response.status_code = 201 response.headers['Location'] = url_for('api.get_address', id=journey.id) # Logging logger.add(request.authorization.username, 'Create journey ({})'.format(journey)) return response
def create_bill(): data = request.get_json() or {} # Request verification if 'id' in data: return errors.bad_request( 'Your request is invalid', 'The address id is automatically assigned by the system') # Update database bill = Bill() bill.from_json(data) db.session.add(bill) db.session.commit() # Build response response = jsonify(bill.to_json()) response.status_code = 201 response.headers['Location'] = url_for('api.get_bill', id=bill.id) # Logging logger.add(request.authorization.username, 'Create bill ({})'.format(bill)) return response
def update_user(id): user = User.query.get_or_404(id) data = request.get_json() or {} # Request verification if 'id' in data and data['id'] != user.id: return errors.bad_request('Your request is invalid', 'The user id cannot be changed') if 'email' in data and data['email'] != user.email and User.query.filter_by( email=data['email']).first(): return errors.bad_request('Your request is invalid', 'The given email address is already in use') # Update database user.from_json(data) db.session.commit() # Logging logger.add(request.authorization.username, 'Update user ({})'.format(user)) return info.ok('The user has been updated')
def update_address(id): address = Address.query.get_or_404(id) data = request.get_json() or {} # Request verification if 'id' in data and data['id'] != address.id: return errors.bad_request('Your request is invalid', 'The address id cannot be changed') if 'user_id' in data: return errors.bad_request( 'Your request is invalid', 'The address creator is automatically assigned by the system') # Update database address.from_json(data) db.session.commit() # Logging logger.add(request.authorization.username, 'Update address ({})'.format(address)) return info.ok('The address has been updated')
def update_fleet(id): fleet = Fleet.query.get_or_404(id) data = request.get_json() or {} # Request verification if 'id' in data and data['id'] != fleet.id: return errors.bad_request('Your request is invalid', 'The fleet id cannot be changed') if 'name' in data and data['name'] != fleet.name and Fleet.query.filter_by( name=data['name']).first(): return errors.bad_request('Your request is invalid', 'The given fleet name is already in use') # Update database fleet.from_json(data) db.session.commit() # Logging logger.add(request.authorization.username, 'Update fleet ({})'.format(fleet)) return info.ok('The fleet has been updated')
def delete_address(id): try: Address.query.get_or_404(id).delete() db.session.commit() # Logging logger.add(request.authorization.username, 'Delete address ({})'.format(id)) return info.ok('The address has been deleted') except Exception: return errors.bad_request( 'The specified address cannot be deleted', 'Addresses with references to other resources like journeys or users cannot be deleted' )
def delete_fleet(id): try: Fleet.query.get_or_404(id).delete() db.session.commit() # Logging logger.add(request.authorization.username, 'Delete fleet ({})'.format(id)) return info.ok('The fleet has been deleted') except Exception: return errors.bad_request( 'The specified fleet cannot be deleted', 'Fleets with references to other resources like cars or users cannot be deleted' )
def delete_car(id): try: Car.query.get_or_404(id).delete() db.session.commit() # Logging logger.add(request.authorization.username, 'Delete car ({})'.format(id)) return info.ok('The user has been deleted') except Exception: return errors.bad_request( 'The specified car cannot be deleted', 'Cars with references to other resources like journeys or pools cannot be deleted' )
def update_car(id): car = Car.query.get_or_404(id) data = request.get_json() or {} # Request verification if 'id' in data and data['id'] != car.id: return errors.bad_request('Your request is invalid', 'The user id cannot be changed') # Update database car.from_json(data) db.session.commit() # Logging logger.add(request.authorization.username, 'Update car ({})'.format(car)) return info.ok('The car has been updated')