Untitled

 avatar
unknown
plain_text
2 years ago
2.5 kB
9
Indexable
# app.py (continued)

@app.route('/add_city', methods=['POST'])
def add_city():
    data = request.json
    new_city = City(
        name=data['name'],
        state=data['state'],
        country=data['country'],
        tourist_rating=data['tourist_rating'],
        date_established=data['date_established'],
        estimated_population=data['estimated_population']
    )
    db.session.add(new_city)
    db.session.commit()
    return jsonify({"message": "City added successfully!"})

@app.route('/update_city/<int:city_id>', methods=['PUT'])
def update_city(city_id):
    city = City.query.get(city_id)
    if not city:
        return jsonify({"error": "City not found!"}), 404

    data = request.json
    city.tourist_rating = data.get('tourist_rating', city.tourist_rating)
    city.date_established = data.get('date_established', city.date_established)
    city.estimated_population = data.get('estimated_population', city.estimated_population)
    db.session.commit()
    return jsonify({"message": "City updated successfully!"})

@app.route('/delete_city/<int:city_id>', methods=['DELETE'])
def delete_city(city_id):
    city = City.query.get(city_id)
    if not city:
        return jsonify({"error": "City not found!"}), 404

    db.session.delete(city)
    db.session.commit()
    return jsonify({"message": "City deleted successfully!"})

@app.route('/search_city/<string:city_name>', methods=['GET'])
def search_city(city_name):
    cities = City.query.filter_by(name=city_name).all()
    if not cities:
        return jsonify({"message": "No matching cities found!"}), 404

    result = []
    for city in cities:
        # Here you can make API requests to get additional information about the city
        # For example, using the `requests` library, you can fetch weather information:
        # weather_data = requests.get('https://api.example.com/weather?city={}'.format(city.name)).json()

        city_data = {
            "id": city.id,
            "name": city.name,
            "state": city.state,
            "country": city.country,
            "tourist_rating": city.tourist_rating,
            "date_established": city.date_established,
            "estimated_population": city.estimated_population,
            # Add additional data here (2-digit Country Code, 3-digit Country Code, Currency Code, Weather)
        }
        result.append(city_data)

    return jsonify(result)

if __name__ == '__main__':
    app.run(debug=True)
Editor is loading...