Features
- 153 Added support for Django 1.6
- 312 Added support for Django 1.7
- 252 Added a `PERMISSIONS_ENABLED` setting to toggle when the permissions system should be enabled if django-guardian is installed. Set to `False` to explicitly disable permissions, otherwise it will be automatically applied if installed.
- 234 Models are now frozen as part of the metadata migrations.
- 268 A fallback search implementation has been added when Haystack is not installed or being used. Previously, the `search` manager method would throw an error if called and Haystack was not setup. This was problematic since Serrano uses that method. Now the search performs an `icontains` database query on the relevant fields.
- 280 Add utilities for canceling queries
- 318 Utilities for performing asynchronous (background) queries. This requires a [Redis](http://redis.io/) server to be setup and [django-rq](https://pypi.python.org/pypi/django-rq) installed.
Changes
_High Impact_
- 288 Dropped support for Django 1.4
_Medium Impact_
- 249 South migrations `0001` through `0014` have been combined. Application migrations that depend on specific Avocado migrations less than `0014` must be updated to to point to `avocado_0001` (or greater).
- 216 The deprecated `lexicon` package has been removed. A data migration is included to set `label_field_name`, `order_field_name`, and `code_field_name` of lexicon primary key fields. **Note:** This drops support for lexicon detection on foreign key-based fields.
_Low Impact_
- 2cc44b9f In 2.3.x, `DataField` aggregation methods (such as `f.count()`) returned an `Aggregator` instance that could be further manipulated and lazily evaluated. However, this prevented the actual return value of those methods from being cached. This has been changed so the value itself is returned so it can be used directly and also be properly cached.
- 194 The `DataContext` and `DataQuery` `count`-based and `tree` fields have been removed in favor of a `count` method to compute the count dynamically. This value is cached and is automatically invalidated based on the `modified` timestamp.
- 246 The `group` field has been removed from `DataField` and `DataConcept` since it was not being acknowledged in the permission system. The superior solution is to use django-guardian to define relationships between users and groups to fields and concepts.
- 250 Change the field `DataConcept.formatter_name` to just `formatter`.
- 251 Remove `ident` and `internal` unused fields from `DataField` and `DataConcept`
- 184 The deprecated `sets` package has been removed. A data migration is included to set the `label_field_name` if the `label_field` attribute is defined on the `ObjectSet` subclass.