django-ddp/CHANGES.rst
2015-10-29 10:06:17 +11:00

296 lines
9.7 KiB
ReStructuredText

Change Log
==========
0.17.2
------
* Python 3 fixes using `six` compatibility library (#16, #17).
0.17.1
------
* Fix minor issue where some subscription queries still used slow queries.
0.17.0
------
* Make the SQL for subscriptions much faster for PostgreSQL.
* Repeatable builds using ye olde make.
* Use tox test runner - no tests yet (#11).
* Add concrete requirement files for test suite (#11).
* Started documentation using Sphinx (#10).
* Python 3 style exception handling.
0.16.0
------
* New setting: `DDP_API_ENDPOINT_DECORATORS`.
This setting takes a list of dotted import paths to decorators which are applied to API endpoints. For example, enable New Relic instrumentation by adding the line below to your Django `settings.py`:
.. code:: python
DDP_API_ENDPOINT_DECORATORS = ['newrelic.agent.background_task']
* Fixed #7 -- Warn if using DB engines other than psycopg2 - thanks @Matvey-Kuk.
* Improvements to error/exception handling.
* Warn if many TX chunks are queued in case WebSocket has stalled.
* Bugfix thread locals setup when opening WebSocket.
* Add missing import for print function (Python 2).
* Work towards #16 -- Use `psycopg2cffi` compatibility if `psycopg2` not
installed.
0.15.0
------
* Renamed `Logs` collection and publication to `dddp.logs` to be consistent with naming conventions used elsewhere.
* Pass all attributes from `logging.LogRecord` via `dddp.logs` collection.
* Use select_related() and resultant cached relational fields to speed up Colleciton.serialize() by significantly reducing round-trips to the database.
* Fix bug in `get_meteor_ids()` which caused many extra database hits.
0.14.0
------
* Correctly handle serving app content from the root path of a domain.
* Account security tokens are now calculated for each minute allowing for finer grained token expiry.
* Fix bug in error handling where invalid arguments were being passed to `logging.error()`.
* Change setting names (and implied meanings):
- DDP_PASSWORD_RESET_DAYS_VALID becomes
DDP_PASSWORD_RESET_MINUTES_VALID.
- DDP_LOGIN_RESUME_DAYS_VALID becomes DDP_LOGIN_RESUME_MINUTES_VALID.
* Include `created` field in logs collection.
* Stop depending on `Referrer` HTTP header which is optional.
* Honour `--verbosity` in `dddp` command, now showing API endpoints in more verbose modes.
* Updated `dddp.test` to Meteor 1.2 and also showing example of URL config to serve Meteor files from Python.
0.13.0
------
* Abstract DDPLauncher out from dddp.main.serve to permit use from other contexts.
* Allow Ctrl-C (Break) handling at any time.
* Only run async DB connection when PostgresGreenlet is running.
* Remove unused import `os.path` from setup.
* Include `name` and `levelno` attributes in DDP emitted log records.
* Don't attempt to monkey patch more than once.
* Include exception info in `logger.error` logging call.
* Update project classifiers to show specific versions of supported dependencies (fixes #6).
* Use sane default options for `python setup.py bdist_wheel`.
* Fixed README link to meteor - thanks @LegoStormtroopr.
0.12.2
------
* Set blank=True on AleaIdField, allowing adding items without inventing
IDs yourself.
0.12.1
------
* Add `AleaIdMixin` which provides `aid = AleaIdField(unique=True)` to
models.
* Use `AleaIdField(unique=True)` wherever possible when translating
between Meteor style identifiers and Django primary keys, reducing
round trips to the database and hence drastically improving
performance when such fields are available.
0.12.0
------
* Get path to `star.json` from view config (defined in your urls.py)
instead of from settings.
* Dropped `dddp.server.views`, use `dddp.views` instead.
0.11.0
------
* Support more than 8KB of change data by splitting large payloads into
multiple chunks.
0.10.2
------
* Add `Logs` publication that can be configured to emit logs via DDP
through the use of the `dddp.logging.DDPHandler` log handler.
* Add option to dddp daemon to provide a BackdoorServer (telnet) for
interactive debugging (REPL) at runtime.
0.10.1
------
* Bugfix dddp.accounts forgot_password feature.
0.10.0
------
* Stop processing request middleware upon connection - see
https://github.com/commoncode/django-ddp/commit/e7b38b89db5c4e252ac37566f626b5e9e1651a29
for rationale. Access to `this.request.user` is gone.
* Add `this.user` handling to dddp.accounts.
0.9.14
------
* Fix ordering of user added vs login ready in dddp.accounts
authentication methods.
0.9.13
------
* Add dddp.models.get_object_ids helper function.
* Add ObjectMappingMixini abstract model mixin providing
GenericRelation back to ObjectMapping model.
0.9.12
------
* Bugfix /app.model/schema helper method on collections to work with
more model field types.
0.9.11
------
* Fix bug in post login/logout subscription handling.
0.9.10
------
* Fix bug in Accounts.forgotPassword implementation.
0.9.9
-----
* Match return values for Accounts.changePassword and
Accounts.changePassword methods in dddp.accounts submodule.
0.9.8
-----
* Fix method signature for Accouts.changePassword.
0.9.7
-----
* Updated Accounts hashing to prevent cross-purposing auth tokens.
0.9.6
-----
* Correct method signature to match Meteor Accounts.resetPassword in
dddp.accounts submodule.
0.9.5
-----
* Include array of `permissions` on User publication.
0.9.4
-----
* Use mimetypes module to correctly guess mime types for Meteor files
being served.
0.9.3
-----
* Include ROOT_URL_PATH_PREFIX in ROOT_URL when serving Meteor build
files.
0.9.2
-----
* Use HTTPS for DDP URL if settings.SECURE_SSL_REDIRECT is set.
0.9.1
-----
* Added support for django.contrib.postres.fields.ArrayField
serialization.
0.9.0
-----
* Added Django 1.8 compatibility. The current implementation has a
hackish (but functional) implementation to use PostgreSQL's
`array_agg` function. Pull requests are welcome.
* Retained compatibility with Django 1.7, though we still depend on the
`dbarray` package for this even though not strictly required with
Django 1.8. Once again, pull requests are welcome.
0.8.1
-----
* Add missing dependency on `pybars3` used to render boilerplate HTML
template when serving Meteor application files.
0.8.0
-----
* Add `dddp.server` Django app to serve Meteor application files.
* Show input params after traceback if exception occurs in API methods.
* Small pylint cleanups.
0.7.0
-----
* Refactor serialization to improve performance through reduced number
of database queries, especially on sub/unsub.
* Fix login/logout user subscription, now emitting user `added`/
`removed` upon `login`/`logout` respectively.
0.6.5
-----
* Use OrderedDict for geventwebsocket.Resource spec to support
geventwebsockets 0.9.4 and above.
0.6.4
-----
* Send `removed` messages when client unsubscribes from publications.
* Add support for SSL options and --settings=SETTINGS args in dddp tool.
* Add `optional` and `label` attributes to ManyToManyField simple
schema.
* Check order of added/changed when emitting WebSocket frames rather
than when queuing messages.
* Move test projects into path that can be imported post install.
0.6.3
-----
* Refactor pub/sub functionality to fix support for `removed` messages.
0.6.2
-----
* Bugfix issue where DDP connection thread stops sending messages after
changing item that has subscribers for other connections but not self.
0.6.1
-----
* Fix `createUser` method to login new user after creation.
* Dump stack trace to console on error for easier debugging DDP apps.
* Fix handing of F expressions in object change handler.
* Send `nosub` in response to invalid subscription request.
* Per connection tracking of sent objects so changed/added sent
appropriately.
0.6.0
-----
* Add dddp.accounts module which provides password based auth mapping to
django.contrib.auth module.
* Fix ordering of change messages and result message in method calls.
0.5.0
-----
* Drop relations to sessions.Session as WebSocket requests don't have
HTTP cookie support -- **you must `migrate` your database after
upgrading**.
* Refactor core to support custom serialization per collection, and
correctly dispatch change messages per collection.
* Allow specifying specific collection for publication queries rather
than assuming the auto-named default collections.
* Improve schema introspection to include options for fields with
choices.
* Cleanup transaction handling to apply once at the entry point for DDP
API calls.
0.4.0
-----
* Make live updates honour user_rel restrictions, also allow superusers
to see everything.
* Support serializing objects that are saved with F expressions by
reading field values for F expressions from database explicitly before
serializing.
* Allow `fresh` connections from browsers that have not established a
session in the database yet, also allow subscriptions from
unauthenticated sessions (but don't show any data for collections that
have user_rel items defined). This change includes a schema change,
remember to run migrations after updating.
0.3.0
-----
* New DB field: Connection.server_addr -- **you must `migrate` your
database after upgrading**.
* Cleanup connections on shutdown (and purge associated subscriptions).
* Make `dddp` management command a subclass of the `runserver` command
so that `staticfiles` work as expected.
* Fix non-threadsafe failure in serializer - now using thread local
serializer instance.
* Fix `unsubscribe` from publications.
* Fix `/schema` method call.
0.2.5
-----
* Fix foreign key references in change messages to correctly reference
related object rather than source object.
0.2.4
-----
* Fix unicode rendering bug in DDP admin for ObjectMapping model.
0.2.3
-----
* Add `dddp` console script to start DDP service in more robust manner than using the dddp Django mangement command.