collective.django 1.0
Django transaction integration for Plone
License: BSD

This package allows you to use the Django_ ORM within Plone_.

It takes care to merge Django transaction management within Zope's own
transaction manager.

Basic usage
===========

In order to use this package you must have a setup that looks like the following:

 1. Your settings module must be within buildout's "adjusted"
    ``sys.path``. This means it should be importable from within Plone, hence
    that it should be an egg (either released or more commonly in development).
    Jacob Kaplan-Moss explains how to do this for a `Django buildout`_.

 2. Your buildout should contain both the Plone parts and the Django parts
    together, hence the standard Plone buildouts plus the bits you see in
    Jacob's tutorial. Make sure that your plone instance has, within its eggs,
    the project one (``shorturls`` in Jacob's example) either derived from
    buildout's ones or local to the instance.

The second step is to make sure that your Plone instance has a special
environment variable that Django needs to know where its settings are. Hence
put, under your instance buildout section, something like this::

    [buildout]
    ...
    [instance]
    recipe = plone.recipe.zope2instance
    ...
    environment-vars =
        DJANGO_SETTINGS_MODULE shorturls.testsettings

Again values are borrowed from Jacob's post.

.. note:: Please note that this environment variable will be set only if you
          run ``bin/instance``. Therefore when using supervisord, make sure you
          have it run ``bin/instance console`` and not any ``run.py`` script
          directly which would completely bypass setting the environment
          variable and leave you in the mud.

Then just add the egg to your buildout, like this::

    [buildout]
    ...
    eggs =
        ...
        collective.django

The package itself relies on ``z3c.autoinclude`` to load its ZCML when Plone is
pulled up. In case this does not work, include a::

    <include package="collective.django" />

Within your package ZCML.

And whenever you will import your Django models from Plone, the transaction
will be managed by Zope.

Testing
=======

To run the tests, a minimal buildout is included. After checking out the source
code, run the following::

    $ python bootstrap.py
    $ bin/buildout
    $ bin/test

And the tests should be ran.

.. _Django: http://www.djangoproject.com/
.. _Plone: http://www.plone.org/
.. _`Django buildout`: http://jacobian.org/writing/django-apps-with-buildout/

Changelog
=========

1.0 (2014-08-29)
----------------

- fix to work with Django 1.6
  [vangheem]

0.2 (2011-09-28)
----------------

 - fix bad release

0.1 (2011-09-16)
----------------

 - Django 1.3 compatibility and initialization fixes [vangheem]
 - Initial public version [shywolf9982]

Contributors
============

- Simone Deponti <simone.deponti@abstract.it>
- Nathan Van Gheem

A big thanks to the developers of `zope.sqlalchemy`_ for providing a good
"template".

Initial developement supported by `Abstract Open Solutions`_

.. _`zope.sqlalchemy`: http://pypi.python.org/pypi/zope.sqlalchemy/
.. _`Abstract Open Solutions`: http://www.abstract.it/