0.5.2 (2010-02-24)
------------------

- Allow clients to specify the base URL for redirects via a custom header--
  X-Restler-Client-Request-URL. Previously, the URLs generated for redirects
  were relative. These were being converted to absolute URLs in the Location
  header of the redirect. Obviously, this wouldn't work for requests coming
  from a different domain.

  XXX: Is there a better way to do this, perhaps with standard headers?


0.5.1 (2010-02-18)
------------------

- Use proper HTTP redirect status code when redirecting after POST or PUT
  (303 See Other instead 302 Found). 302 means a resource moved temporarily,
  which isn't semantically correct; we really want to say, "go see this other
  resource," and this is exactly what the 303 status code is intended for.

  IE (8, didn't test other IEs) won't follow a 302 returned from an AJAX
  request, so this fixes that. Firefox will follow either a 302 or 303,
  although technically following the 302 is incorrect ("...the user agent MUST
  NOT automatically redirect the request unless it can be confirmed by the
  user...").

  XXX: Cross domain issue: When using 302, for some reason the Location
  header used the script URL of the requesting application instead of the URL
  of the Web service utilizing Restler. Now, using 303, the Location header
  uses the URL of the Web service, so if the requesting application and the WS
  are not in the same domain space, this will cause a problem as neither IE or
  FF will follow the redirect in this case. TODO: At the moment, I'm not sure
  what the best solution for this is. Is this something that can be handled in
  a generic manner with X-Forwarded-For or something like that?


0.5.0 (2010-02-12)
------------------

- Made changes needed for Pylons 1.0.


0.4.2 (2010-02-02)
------------------

This release contains a backwards-incompatible change to an undocumented
(and somewhat experimental) feature: paths in responses, which was introduced
in 0.4.0 and changed in 0.4.1.

- Reverted the change made in 0.4.1 with regard to paths. Relative paths in
  responses are now relative to the host URL instead of the application. This
  seems to better reflect how these paths will actually be used--for example,
  in an AJAX application, this style is more convenient.

  In `response.request`, removed `app_url`; added `full_url`, `host_url`, and
  `app_prefix`.


0.4.1 (2010-01-27)
------------------

- Corrected paths returned in JSON responses so that they are relative to
  the application URL instead of relative to the server root.


0.4.0 (2010-01-25)
------------------

- Upgraded SQLAlchemy from 0.5.7 to 0.5.8
- Got rid of wanky privileges scheme. Removed decorators module altogether;
  removed @privileges decorations from Controller class. Rationale: auth is
  not really within Restler's scope, and it seems very likely that users
  wouldn't want to use this simplistic scheme anyway.
- Created a top-level API by importing a few things into the top-level
  __init__.py.
- Use json module from stdlib when available (i.e., Python 2.6+).
- In addition to an object's type, inject its module and URL path into the
  corresponding JSON object. Use __double_underscore__ style for these
  attributes to indicated that they are "meta". `type` is now `__type__`
  in JSON results.
- Removed `Entity.get_column_default` method as this relies on SQLA's
  declarative extension, but Restler does/should not depend on declarative
  (it should only depend on mapped classes).
- Delegate HTTP parameter parsing to entitu instead of handling that in
  controller.
- Inject request metadata into response objects (request method, URL,
  path info, query params, etc). XXX: Account for proxy.
- Removed templates, static files, and Web helpers.
- Removed deprecated `EntityMeta` metaclass.


0.3.3 (2010-01-13)
------------------

- Use a function instead of a metaclass to instrument Entity classes with
  member_name and related class attributes. Replace usage of EntityMeta with
  instrument_class (from restler.entity).
- Upgraded SQLAlchemy from 0.5.6 to 0.5.7
- Upgraded decorator from 3.0.1 to 3.1.2


0.3.2 (2009-12-15)
------------------

- When redirecting to a member, allow original request parameters to be
  relayed to the redirect and also allow arbitrary extra params to be passed
  to the redirect.


0.3.1 (2009-12-10)
------------------

- Bumped SQLAlchemy from 0.5.5 to 0.5.6.
- Fixed small bug in JSON rendering--use `wrap` arg passed to method that
  creates object to be JSONified instead of always using `self.wrap`. When
  making the call to that method, pass a `wrap` value.

0.3.0 (2009-11-06)
------------------

- Totally revamped relative to 0.2 series. Tries to flexibly support all
  kinds of WS queries, filtering, limits, distinct, etc.
- Supports Pylons 0.9.7 and friends (probably does not work well with Pylons
  0.9.6).
- Thinking about removing templates--i.e., removing all the admin interface
  aspects and focusing just on the lower level controller aspect. All that
  other stuff could be moved to Restin (unmaintained) or just discarded.
- Added Restler-controller-friendly entity (AKA model) base class.
- Added @privileged decorator.
- Manage releases with zest.releaser.
- No longer handles database connectivity (less magical).

Ancient History
---------------

* 2007-08-13 -- Removed the MyProject sample Pylons project
* Extracted from byCycle repo at r776 and moved to Google Code
* Removed `execfile` wonkiness in favor of importing restler then calling its
  new `init_model` function (wlb 2007-04-17)
* Added restler.options dict, similar to elixir's global options
  (wlb 2007-04-22)
* Added a class factory to generate `RestController`s that are aware of a
  specific model; this replaces setting a global `model` (wlb 2007-04-22)
* Added pagination support for collections (wlb 2007-04-22)
* Allow the parent model module to be different from the resource's model
  module by adding a keyword arg to `BaseController` function and using that
  model (if given) instead of the resource's model.
* Note whether a resource has a foreign key pointer to its parent
* Allow entities to be selected by "alternate IDs"; if an entity class
  defines the list `alternate_id`, those IDs will be tried when finding an
  object in the database
* In all nav helpers and templates, instead of using named routes to generate
  URLs, set `controller`, `action`, etc as necessary. This allows the helpers
  to also be used in the case where RESTful routes are created manually (i.e.,
  using `map.connect`) without names. Although this sounds harder to do (it's
  a little more manual), I was able to move several lines of code and some
  superfluous logic. (wlb 2007-04-23)
* Updated `_get_json_content` to use `to_builtin` instead of `__simplify__`
  (wlb 2007-04-26)
* Fixed some bugs in helper `nav_list_for_resource` relating to parent args for
  nav list creation: 1) When I factored out `nav_list_for_parent`, some vars
  were moved that were still being referenced 2) The parent list was being
  *added* to the result list instead of *appended* (wlb 2007-04-27)
