Changelog
Here you can see the full list of changes between each Flask-Restless release.
Numbers following a pound sign (#) refer to GitHub issues.
Note
As of version 0.6, Flask-Restless supports both pure SQLAlchemy and
Flask-SQLAlchemy models. Before that, it supported only Elixir models.
Version 0.10.1
Released on May 8, 2013.
- #115: change assertEqual() methods to assert statements in tests.
- #184, #186: Switch to nose for testing.
- #197: documents technique for adding filters in processors when there are
none initially.
Version 0.10.0
Released on April 30, 2013.
- #2: adds basic GET access to one level of relationship depth
for models.
- #113: interpret empty strings for date fields as None objects.
- #115: use Python’s built-in assert statements for testing
- #128: allow disjunctions when filtering search queries.
- #130: documentation and examples now more clearly show search examples.
- #135: added support for hybrid properties.
- #139: remove custom code for authentication in favor of user-defined pre- and
postprocessors (this supercedes the fix from #154).
- #141: relax requirement for version of python-dateutil to be not equal to 2.0 if using Python
version 2.6 or 2.7.
- #146: preprocessors now really execute before other code.
- #148: adds support for SQLAlchemy association proxies.
- #154 (this fix is irrelevant due to #139): authentication function now may
raise an exception instead of just returning a Boolean.
- #157: POST requests now receive a response containing all
fields of the created instance.
- #162: allow pre- and postprocessors to indicate that no change has occurred.
- #164, #172, and #173: PATCH requests update fields on related
instances.
- #165: fixed bug in automatic exposing of URLs for related instances.
- #170: respond with correct HTTP status codes when a query for a single
instance results in none or multiple instances.
- #174: allow dynamically loaded relationships for automatically exposed URLs
of related instances.
- #176: get model attribute instead of column name when getting name of primary
key.
- #182: allow POST requests that set hybrid properties.
- #152: adds some basic server-side logging for exceptions raised by views.
Version 0.9.3
Released on February 4, 2013.
- Fixes incompatibility with Python 2.5 try/except syntax.
- #116: handle requests which raise IntegrityError.
Version 0.9.2
Released on February 4, 2013.
- #82, #134, #136: added request pre- and postprocessors.
- #120: adds support for JSON-P callbacks in GET requests.
Version 0.9.1
Released on January 17, 2013.
- #126: fix documentation build failure due to bug in a dependency.
- #127: added “ilike” query operator.
Version 0.9.0
Released on January 16, 2013.
- Removed ability to provide a Session class
when initializing APIManager; provide an instance of the class
instead.
- Changes some dynamically loaded relationships used for testing and in
examples to be many-to-one instead of the incorrect one-to-many. Versions of
SQLAlchemy after 0.8.0b2 raise an exception when the latter is used.
- #105: added ability to set a list of related model instances on a model.
- #107: server responds with an error code when a PATCH or
POST request specifies a field which does not exist on the
model.
- #108: dynamically loaded relationships should now be rendered correctly by
the views._to_dict() function regardless of whether they are a list or
a single object.
- #109: use sphinxcontrib-issuetracker to render links to GitHub issues in
documentation.
- #110: enable results_per_page query parameter for clients, and added
max_results_per_page keyword argument to APIManager.create_api().
- #114: fix bug where string representations of integers were converted to
integers.
- #117: allow adding related instances on PATCH requests for
one-to-one relationships.
- #123: PATCH requests to instances which do not exist result in
a 404 Not Found response.
Version 0.8.0
Released on November 19, 2012.
- #94: views._to_dict() should return a single object instead of a list
when resolving dynamically loaded many-to-one relationships.
- #104: added num_results key to paginated JSON responses.
Version 0.7.0
Released on October 9, 2012.
- Added working include and exclude functionality to the
views._to_dict() function.
- Added exclude_columns keyword argument to APIManager.create_api().
- #79: attempted to access attribute of None in constructor of
APIManager.
- #83: allow POST requests with one-to-one related instances.
- #86: allow specifying include and exclude for related models.
- #91: correctly handle POST requests to nullable
DateTime columns.
- #93: Added a total_pages mapping to the JSON response.
- #98: GET requests to the function evaluation endpoint should
not have a data payload.
- #101: exclude in views._to_dict() function now correctly excludes
requested fields from the returned dictionary.
Version 0.6
Released on June 20, 2012.
- Added support for accessing model instances via arbitrary primary keys,
instead of requiring an integer column named id.
- Added example which uses curl as a client.
- Added support for pagination of responses.
- Fixed issue due to symbolic link from README to README.md
when running pip bundle foobar Flask-Restless.
- Separated API blueprint creation from registration, using
APIManager.create_api() and APIManager.create_api_blueprint().
- Added support for pure SQLAlchemy in addition to Flask-SQLAlchemy.
- #74: Added post_form_preprocessor keyword argument to
APIManager.create_api().
- #77: validation errors are now correctly handled on PATCH
requests.
Version 0.5
Released on April 10, 2012.
- Dual-licensed under GNU AGPLv3+ and 3-clause BSD license.
- Added capturing of exceptions raised during field validation.
- Added examples/separate_endpoints.py, showing how to create separate
API endpoints for a single model.
- Added include_columns keyword argument to
create_api() method to allow users to
specify which columns of the model are exposed in the API.
- Replaced Elixir with Flask-SQLAlchemy. Flask-Restless now only supports
Flask-SQLAlchemy.
Version 0.4
Released on March 29, 2012.
- Added Python 2.5 and Python 2.6 support.
- Allow users to specify which HTTP methods for a particular API will require
authentication and how that authentication will take place.
- Created base classes for test cases.
- Moved the evaluate_functions function out of the
flask_restless.search module and corrected documentation about how
function evaluation works.
- Added allow_functions keyword argument to
create_api().
- Fixed bug where we weren’t allowing PUT requests in
create_api().
- Added collection_name keyword argument to
create_api() to allow user provided names in
URLs.
- Added allow_patch_many keyword argument to
create_api() to allow enabling or disabling
the PATCH many functionality.
- Disable the PATCH many functionality by default.
Version 0.3
Released on March 4, 2012.
- Initial release in Flask extension format.