54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
from flask import Blueprint, request
|
|
from app.extensions import db
|
|
from app.models.vehicle import Vehicle, VehicleSchema
|
|
|
|
vehicle_routes = Blueprint('vehicle_routes', __name__)
|
|
|
|
@vehicle_routes.route('/vehicles')
|
|
def list_vehicles():
|
|
vehicles_schema = VehicleSchema(many=True)
|
|
vehicles = Vehicle.query.all()
|
|
return vehicles_schema.dumps(vehicles)
|
|
|
|
@vehicle_routes.route('/vehicles/<id>')
|
|
def get_vehicle(id):
|
|
vehicles_schema = VehicleSchema(many=False)
|
|
vehicle = Vehicle.query.get_or_404(id)
|
|
return vehicles_schema.dumps(vehicle)
|
|
|
|
@vehicle_routes.route('/vehicles', methods=['POST'])
|
|
def create_vehicle():
|
|
new_vehicle = Vehicle(**{
|
|
"license_plate": request.form.get('license_plate'),
|
|
"battery_level": request.form.get('battery_level', 100),
|
|
"in_use": bool(request.form.get('in_use', True)),
|
|
"model": request.form.get('model'),
|
|
"location_lat": request.form.get('location_lat'),
|
|
"location_long": request.form.get('location_long'),
|
|
})
|
|
db.session.add(new_vehicle)
|
|
db.session.commit()
|
|
vehicles_schema = VehicleSchema(many=False)
|
|
|
|
return vehicles_schema.dumps(new_vehicle)
|
|
|
|
@vehicle_routes.route('/vehicles/<id>', methods=['POST'])
|
|
def update_vehicle(id):
|
|
vehicles_schema = VehicleSchema(many=False)
|
|
vehicle = Vehicle.query.get_or_404(id)
|
|
vehicle.license_plate = request.form.get('license_plate', vehicle.license_plate)
|
|
vehicle.battery_level = request.form.get('battery_level', vehicle.battery_level)
|
|
vehicle.in_use = request.form.get('in_use', vehicle.in_use)
|
|
vehicle.model = request.form.get('model', vehicle.model)
|
|
vehicle.location_lat = request.form.get('location_lat', vehicle.location_lat)
|
|
vehicle.location_long = request.form.get('location_long', vehicle.location_long)
|
|
|
|
db.session.commit()
|
|
return vehicles_schema.dumps(vehicle)
|
|
|
|
@vehicle_routes.route('/vehicles/<id>', methods=['DELETE'])
|
|
def delete_vehicle(id):
|
|
vehicle = Vehicle.query.get_or_404(id)
|
|
db.session.delete(vehicle)
|
|
db.session.commit()
|
|
return id |