def queryDb(value_type, value): """Query Database to get options for each drop-down menu""" result, countRecords, minDate, maxDate = None, None, None, None db_connection = DbConnect(current_app.config) keyList = ['biomimic_type', 'country', 'state_province', 'location', 'zone', 'sub_zone', \ 'wave_exp', 'start_date', 'end_date', 'output_type', 'analysis_type'] # delete all keys in session variable "query" after the selected field for key in keyList[keyList.index(value_type) + 1:]: session['query'].pop(key, None) session['query'][value_type] = value if value_type == "biomimic_type": result, countRecords, minDate, maxDate = \ db_connection.fetch_distinct_countries_and_zones(session['query']) elif value_type == "country": result, countRecords, minDate, maxDate = \ db_connection.fetch_distinct_states(session['query']) elif value_type == "state_province": result, countRecords, minDate, maxDate = \ db_connection.fetch_distinct_locations(session['query']) elif value_type == "location": # location field doesn't have any associated dynamic behavior # except for fetching metadata. countRecords, minDate, maxDate = \ db_connection.fetch_metadata(session['query']) elif value_type == "zone": result, countRecords, minDate, maxDate = \ db_connection.fetch_distinct_sub_zones(session['query']) elif value_type == "sub_zone": result, countRecords, minDate, maxDate = \ db_connection.fetch_distinct_wave_exposures(session['query']) db_connection.close() return result, countRecords, minDate, maxDate