We should replace the strings that currently stand for geographic data with true geographic data. This is a big change, and likely includes at least the following: * Prevent people from adding region before country; prevent people from adding city before region (if region exists) or country (if region does not exist). * Prepopulate country dropdown from a list of actual countries * Prepopulate region dropdown from a list of actual regions in selected country * Propopulate city dropdown from a list of actual cities in selected region or country * Refresh those lists regularly from a reliable source of geographic data * Do not require region/city * On profile save, lookup lat/long of selected location and store in hidden profile field * Figure out how to migrate existing string data -- probably geocode strings, then reverse geocode (or equivalent) to get canonical location names, then blank out non-geocodable location strings, then urge people to review location This bug will track the effort. We can add the above (and others) as bugs when we undertake this effort. This bug replaces bug 838744, which is poorly specified, and takes on its blockers and dependencies.
Here is one example of a source of the geographic data necessary to prepopulate dropdowns and such: http://www.geonames.org/
This looks promising, too: http://www.coderholic.com/django-cities-countries-regions-cities-and-districts-for-django/