===================================================================
================= MIDDLEWARE ======================================
===================================================================
Installation:
You must make this module visible to your project before use.
For example, 
ln -s /usr/src/django-couch-utils/django_couch /usr/lib/pythonx.y/site-packages

After that, modify settings.py

MIDDLEWARE_CLASSES = (
    '...........',
    'django_couch.CouchMiddleware', 
    '...........',
)

Also, define databases:

COUCHDB = {
    'database_name1': {
        'server': 'http://localhost:5984',
        'database': 'database1',
    },
    'database_name2': {
        'server': 'http://remotehost:5988',
        'database': 'database2',
    }
}

After that, any view function can access database as request.database_name1 or request.database_name2



===================================================================
=============== Updater (bulk document update helper  =============
===================================================================

Usefull example:

from django_couch import Updater

updater = Updater(request.db)

for document in documents:
    updater.append(document)

updater.push()

Documents will be pushed into database every N documents or manually by invoking push() method (still need to call push() after cycle to push tail).

Default N value - 300


===================================================================
================== View iterator (very long views iterator) =======
===================================================================

from django_couch import view_iterator

# Эта функция - пример использования, но она же есть и в django_couch в таком же виде
def all_docs(skip_design_docs = False):

    for row in view_iterator('_all_docs'):
        if not (skip_design_docs and row.id.startswith('_design/')):
            yield row


view_iterator() может содержать все обычные параметры, передаваемые в db.view() (startkey, key, limit и т.п.)

===================================================================
============== Authentication backend =============================
===================================================================
Define database and authentication view name
:settings.py
COUCHDB_AUTH_DB = 'database1'
COUCHDB_AUTH_VIEW = 'auth/auth'

Function may be like this
function(doc) {
  if (doc.type == "user") {
    emit(doc.login, doc.password);
  }
}

password must be in django-style ("<hash-function>$<salt>$<hash>")
