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/') 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/', 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/', methods=['DELETE']) def delete_vehicle(id): vehicle = Vehicle.query.get_or_404(id) db.session.delete(vehicle) db.session.commit() return id