.. -*- restructuredtext -*-

##########
django-dnd
##########

**django-dnd** is a `Django`_ application for authenticating users against the
`Dartmouth Name Directory`_. ``django-dnd`` uses `django cas`_ for
authentication, and will automatically fetch first name, last name, and blitz
from the DND (Dartmouth Name Directory) and populate the `auth.User`.

************
Installation
************

The dependencies for `django-dnd` aren't super-modern, so they won't install
properly with pip. You have to manually install a package first::

    $ pip install pycrypto

Then, to get the latest release::

    $ pip install django-dnd

To get the bleeding edge::

    $ pip install -e hg+https://bitbucket.org/quentonc/django-dnd

Add the ``django_cas`` middleware and ``django_dnd`` authentication backends to
your settings, and make sure you have the AuthenticationMiddleware as well.
Here's what mine looks like::

    MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django_cas.middleware.DNDMiddleware',
    )
    
    AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
        'django_dnd.backends.DNDBackend',
    )

Add ``django_dnd`` to your installed apps::

    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'django_dnd',
    )

Run ``syndb`` to install the DND model.

There are no required settings for ``django-dnd``. Optional settings include:

* ``DND_SERVER``: The URL of your dnd server. This is defaults to
  ``dnd.dartmouth.edu``

* ``DND_DB_TABLE``: The db_table for `dnd.DND`. Default is
  ``dartmouth_dnd``

* ``CAS_SERVER_URL``: The base URL of our CAS source. Default is
  https://login.dartmouth.edu/cas/

Other optional settings are defined by `django cas`_.

Make sure your project knows how to log users in and out by adding these to your URL mappings::

  (r'^accounts/login/$', 'django_cas.views.login'),
  (r'^accounts/logout/$', 'django_cas.views.logout'),

Users should now be able to log into your site (and staff into the
administration interface) using CAS.

************************
Additional configuration
************************

For additional options for hooking CAS into your app, follow the instructions on the `django cas`_ page.

************
Contributers
************

``django-dnd`` was created by Pete Gadomski <pete.gadomski@gmail.com>.

.. _Django: http://www.djangoproject.com/
.. _Dartmouth Name Directory: http://dndlookup.dartmouth.edu/ 
.. _django cas: http://code.google.com/p/django-cas/