2014-04-06 2.3.1

    - #42 added FAQ: Some data fail to import or don't import like I want, how
      to skip them ?
    - #45 django-rest-framework support update by @almalki.
    - #49 Added country_items_pre_import and region_items_pre_import by
      @mauricioabreu
    - #51 Slug should be used in unique_together along with name.
    - #51 Skip duplicate cities with no regions
    - #52 Added FAQ on MySQL and UTF-8
    - #53 Country phone prefix support by @csarcom
    - Forms update.

2014-03-06 2.3.0

    - Fix #50: added country_items_pre_import singal by @mauricioabreu

    Apparently I've slightly messed up version numbers so we're starting over
    at 2.3.0.

2014-02-24 2.2.13

    - Fix #46: south migrations were not installed with django 1.6.

2014-02-24 2.2.12

    - Fixed #43: load cities with the same name from different
      regions, by @dpoirier
 
2014-02-02 2.1.11

    - Django 1.7 support: remove migrations in pre-install.

2014-01-28 2.1.10

    - Removed dependency_links

2014-01-27 2.1.9

    - Changed a requirement version, let's hope that it works on weird
      Python setups.

2013-12-12 2.1.8

    - Bugfix: a django 1.7 migration from my WC made it in 2.1.7.

2013-12-12 2.1.7

    - #37: Richard Barran fixed translation import progress bar.

2013-11-23 2.1.6

    - #34: Greg Gaughan fixed model ordering.

2013-10-03 2.1.5

    - Removed dead decorator.

2013-10-02 2.1.4

    - Restored Python3 support broken by 2.1.2
    - PostgreSQL support for feature introduced in 2.1.2.

2013-10-02 2.1.3

    - Automatically force import unless cities_light command has completed
      once.

2013-10-02 2.1.2

    - Expect IntegrityErrors as they seem to be caused only by duplicates. A
      non-blocking warning is logged instead.

2013-09-30 2.1.1

    - Do not decorate Base subclasses with @python_2_unicode_compatible. See
      https://code.djangoproject.com/ticket/21198

2013-09-27 2.1.0

    - Added Python 3 support using
      https://docs.djangoproject.com/en/dev/topics/python3/
    - Added featurecode and population, contributed by Chris Vigelius (@chrisv2)
    - Fixed ascii slug generation based on advice by Max Arnolds
    - Import of cities1000.zip now tested automatically on sqlite, postgres and
      mysql (python2 only) by travis.

Upgrade instructions:

    pip install -U django-cities-light
    ./manage.py migrate cities_light

2013-07-30 2.0.9

Awesome contributions were merged:

    - Fixed bug in city migration where if there were two cities in the same
      country with the same name only the first would be imported. This was due
      to not taking into account the region checking for the records existence
      before creating a new one.
    - Increase performance by caching region_id and country_id in migration
      function variables.
    - Added debugging flag '--verify-city-import' which cerifies city import
      and print out missing cities. For debug purposes only.
    - Fixed bug in city migration where if the name_ascii field is null it
      would set the slug name as 'city.' It now sets it to the geoname_id.
    - Added to AUTHORS: Mike Mepham, Jeff Rudokas

2013-06-26 2.0.8

    - Merge #22: ugettext_lazy instead of ugettext. 
    - Added Aaron VanDerlip to AUTHORS.
    - Promoted dev status to 5 Stable.

2012-10-26 2.0.7

    - Bugfix: zips were not imported anymore because of a bug introduced in 2.0.6

2012-10-26 2.0.6

    - Don't re-extract downloaded files over and over again,
    - Bugfix: removed import of pympler
    - Setup travis to test that database installation works on both postgres
      and mysql. It was working indeed but we just have it continuously tested
      now.
    - Made --force less picky on arguments

2012-10-26 2.0.5

    - Optimized cities_light command, from 400M of RAM used to 30M on
      django-autocomplete-light's test project. Thanks sandino for reporting.
    - Made --force-import less picky on arguments

2012-08-22 2.0.4

    - Avoid indexing of search_names on MySQL

2012-08-22 2.0.3

    - Hint the user about MySQL's issue with migration 0003

2012-07-12 2.0.2

    - Wrap management command in a transaction. (contributed by Piet Delport)

2012-07-10 2.0.1

    - Added support for q GET argument to contrib.restframework

2012-07-09 2.0.0

    - Added support for django-autocomplete-light 1.0.0 in
      contrib.autocompletes

2012-06-25 1.9.4

    - Fixed south migration and PEP8.
    - Some code for 2.0 accidently was in the previous release.

2012-06-12 1.9.3

    Fixed contrib stuff.

2012-06-12 1.9.2

    Fixed region import for malta.

2012-06-10 1.9.1

    - Fixed chinese city name_ascii support
    - Fixed support for regions without names
    - to_search() now automatically called when filtering on
      search_names

    In 1.9.0, you had to query like::

        City.objects.filter(search_names__icontains=to_search('Paris, Fra'))

    In 1.9.1, passing the value through to_search() is automatic::

        City.objects.filter(search_names__icontains='Paris, Fra')

    Keep in mind that 'Paris, Fra' will be converted in 'parisfra',
    which is useable against search_names column.

2012-06-07 1.9.0 Added Regions/states

    - Run migrations: added Region, for USA state support because for example
      there is a city called "Greenville" in almost every state.
    - Remove CityAutocompleteWidget, in favor of a google-maps-like
      autocomplete channel, which you can use with the normal widget.
    - Update your querysets using search_names__icontains=some_value to do
      search_names__icontains=cities_light.models.to_ascii(some_value).
    - Run: ./manage.py cities_light --noinsert to update data, set
      search_names, alternate_names, region ...
    - If filtering cities to import with city_items_pre_import, make a matching
      signal reciever for region_items_pre_import new signal. For example::

            COUNTRIES = ('FR', 'US', 'BE', 'GB', 'ES', 'PT', 'DE', 'NL')

            def filter_city_import(sender, items, **kwargs):
                if items[8] not in COUNTRIES:
                    raise cities_light.InvalidItems()
            cities_light.signals.city_items_pre_import.connect(filter_city_import)

            def filter_region_import(sender, items, **kwargs):
                if items[0].split('.')[0] not in COUNTRIES:
                    raise cities_light.InvalidItems()
            cities_light.signals.region_items_pre_import.connect(filter_region_import)

    Also there is now a progress bar in the cities_light command.

    Note that the cities_light command now has very performant implementation
    of alternateNames parser, which opens possibilities:

    - it parses postal codes, but doesn't do anything with them yet
    - it parses the name of every country/region/city in any language, used
      only for search_names in this version

    For 2.0, we aim at:

    - including cities_light.contrib.postal_codes,
    - including po files with the translation for every country/region/city
      name

    Contributions are really welcome so please if you need any of these
    features don't hesitate to implement and do pull requests !

2012-05-24 1.3+ to 1.5.1

    We had to fix migration 0003 for mysql. So to upgrade from 1.3, 1.4, or 1.5
    to 1.5.1, do::

        ./manage.py migrate cities_light 0002
        pip install -U django-cities-light
        ./manage.py migrate cities_light


2012-05-19 1.0 to 1.1

    Backward compatibility breaks:
        - cities_light.widgets moved to
          cities_light.contrib.autocomplete_light_widgets,

        - cities_light.lookups moved to
          cities_light.contrib.ajax_selects_lookups,

        - cities_light.autocomplete_light_registry moved to
          cities_light.contrib.autocomplete_light_channels,

        - cities_light does not auto-register channels anymore (because you now
          have the choice between a basic channel and the remote channel.

    New features:

        - latitude and longitude fields,
        - search_names,
        - djangorestframework integration,
        - autocomplete_light+djangorestframework integration.

    New author:

        - Riccardo Magliocchetti
