from flask import render_template, url_for, flash, redirect, request, Blueprint from minibase.app import db import minibase.theme as theme import minibase.blueprints.database.utils as dbUtils import minibase.blueprints.main.utils as mainUtils import minibase.blueprints.geography.utils as geoUtils from minibase.blueprints.geography.models import City, State from minibase.blueprints.geography.forms import LocationForm from flask_wtf import FlaskForm # Declaring a blueprint geography = Blueprint('geography', __name__, template_folder='templates') country_id = 0 @geography.route('/test', methods=["GET", "POST"]) def test(): print("hello") form = LocationForm() form.country.choices = [(row.id, row.name) for row in geoUtils.queryCountryNamesWithDefault(-1)] if form.country.data: form.city.choices = [(row.id, row.name) for row in geoUtils.queryCiytNamesOfStateWithDefId(form.country.data.id)] else: form.city.choices = [(row.id, row.name) for row in City.query.filter(None).all()] if form.validate_on_submit(): print(form.country.data.name) print(form.city.data.name) return render_template("geography/index.html", form=form, theme=theme) @geography.route("/get_cities", methods=['GET', 'POST']) def get_cities(): global country_id country_id = request.args.get("country", type=int) print(f"/get_cities -> country_id: {country_id}") cities = City.query.filter_by(country_id=country_id).all() print(len(cities)) return render_template("geography/city_options.html", cities=cities) @geography.route("/get_states", methods=['GET', 'POST']) def get_states(): global country_id print(f"/get_states -> country_id: {country_id}") states = State.query.filter_by(country_id=country_id).all() return render_template("geography/state_options.html", states=states)