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 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 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_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_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 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 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_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 get_bill_picture(id): pic = Bill.query.get(id).picture # Logging logger.add(request.authorization.username, 'Get bill picture ({})'.format(id)) return '<img src="' + pic.decode('utf-8') + '"/>'
def get_bills(): page = request.args.get('page', 1, type=int) per_page = min(request.args.get('per_page', 10, type=int), 100) data = Bill.to_json_collection(Bill.query, page, per_page, 'api.get_bills') # Logging logger.add(request.authorization.username, 'Get all bills ({})'.format('/bills')) return jsonify(data)
def get_fleet_cars(id): page = request.args.get('page', 1, type=int) per_page = min(request.args.get('per_page', 10, type=int), 100) data = Car.to_json_collection( Fleet.query.get_or_404(id).cars, page, per_page, 'api.get_fleet_cars') # Logging logger.add(request.authorization.username, 'Get fleet cars ({})'.format(id)) return jsonify(data)
def get_addresses(): page = request.args.get('page', 1, type=int) per_page = min(request.args.get('per_page', 10, type=int), 100) data = Address.to_json_collection(Address.query, page, per_page, 'api.get_addresses') # Logging logger.add(request.authorization.username, 'Request all addresses (/addresses)') return jsonify(data)
def get_user_logs(id): page = request.args.get('page', 1, type=int) per_page = min(request.args.get('per_page', 10, type=int), 100) data = Log.to_json_collection(User.query.get(id).logs, page, per_page, 'api.get_user_logs', id=id) # Logging logger.add(request.authorization.username, 'Get user logs ({})'.format(id)) return jsonify(data)
def get_car_journeys(id): page = request.args.get('page', 1, type=int) per_page = min(request.args.get('per_page', 10, type=int), 100) data = Journey.to_json_collection(Car.query.get(id).journeys, page, per_page, 'api.get_car_journeys', id=id) # Logging logger.add(request.authorization.username, 'Create car journeys ({})'.format(id)) return jsonify(data)
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 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 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')
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 get_address(id): # Logging logger.add(request.authorization.username, 'Request address ({})'.format(id)) return jsonify(Address.query.get_or_404(id).to_json())
def get_journey(id): # Logging logger.add(request.authorization.username, 'Get journey ({})'.format(id)) return jsonify(Journey.query.get_or_404(id).to_json())
def get_user_journeys_journey(user_id, journey_id): # Logging logger.add(request.authorization.username, 'Get user journey ({})'.format(id)) return jsonify(Journey.query.get(journey_id).to_json())
def get_bill(id): # Logging logger.add(request.authorization.username, 'Get bill ({})'.format(id)) return jsonify(Bill.query.get_or_404(id).to_json())
def get_role(id): # Logging logger.add(request.authorization.username, 'Get role ({})'.format(id)) return jsonify(Role.query.get_or_404(id).to_json())
def get_fleet(id): # Logging logger.add(request.authorization.username, 'Get fleet ({})'.format(id)) return jsonify(Fleet.query.get_or_404(id))