Requirements
============

Satchmo is based on the Django framework, therefore you do need a fully functioning
Django instance to use Satchmo.  The `Django installation guide`_ will step you
through the process.

It is recommended that you use Django 1.1.

Satchmo requires Python 2.4 or later and a database supported by Django.

There is always a challenge in deciding how many dependencies to include in a project. With
Satchmo, we strongly believe in avoiding "Not Invented Here" syndrome and using the power
of the rich set of python tools available on the web to make Satchmo as flexible and powerful
as possible.

There are a number of other Python packages that are required for usage of all the
features in Satchmo.

- Satchmo's thumbnail capability is very robust and utilizes the following packages:
  
    - `Python Imaging Library`_
    - `Sorl Thumbnails`_

- In order to securely store sensitive information, you will need:

    - `Python cryptography toolkit`_ (`Windows binary`_)

- Satchmo creates PDF output for shipping and invoicing using:

    - `ReportLab`_
    - Tiny RML2PDF (`download link`_)

- In order to manage hierarchical data and use XML in shipping and payment modules, we use:

    - `Elementtree`_ (included in Python 2.5+)

There are also a number of other Django packages (mentioned below) that you will need to install.

To support multi store configurations:

    - `Django Threaded Multihost`_

For flexibility in defining template plugin points:

    - `Django App Plugins`_

For the account registration process, you will need:

    - `Django Registration`_

A valid Django cache backend (file, memcached or DB) is required for the config settings.

The following package is required to load the initial data and run the unit tests:

    - `PyYaml`_

Docutils is used for auto generating the admin documentation but is not required:
    
    - `Docutils`_

Sphinx is useful for auto generating the user documentation but is not required:

    - `Sphinx`_

If you are using a version of python less than 2.6, you will have to install the backport of the 
new SSL module to support accessing SSL 2.0 sites often used by payment processors:

    - `SSL Backport`_
    
For reusable, consistent signals:

    - `Signals Ahoy`_

Detailed steps for installing these dependencies is included in the installation_ section.

.. _Django installation guide: http://www.djangoproject.com/documentation/install/
.. _Python Imaging Library: http://www.pythonware.com/products/pil/
.. _Elementtree: http://effbot.org/zone/element-index.htm
.. _Python cryptography toolkit: http://www.amk.ca/python/code/crypto
.. _Windows binary: http://www.voidspace.org.uk/python/modules.shtml#pycrypto
.. _ReportLab: http://www.reportlab.org/
.. _Sphinx: http://sphinx.pocoo.org/
.. _PyYaml: http://pyyaml.org/
.. _Authorize.net: http://www.authorize.net/
.. _download link: http://www.satchmoproject.com/snapshots/trml2pdf-1.2.tar.gz
.. _Django Registration: http://bitbucket.org/ubernostrum/django-registration/wiki/Home
.. _snapshot: http://www.satchmoproject.com/snapshots/
.. _installation : new_installation.html
.. _`Django Threaded Multihost`: http://gosatchmo.com/apps/django-threaded-multihost/
.. _`Django App Plugins`: http://bitbucket.org/bkroeze/django-caching-app-plugins/
.. _`Sorl Thumbnails`: http://code.google.com/p/sorl-thumbnail/
.. _`SSL Backport`: http://pypi.python.org/pypi/ssl/
.. _`Signals Ahoy`: http://bitbucket.org/bkroeze/django-signals-ahoy/
.. _DocUtils: http://docutils.sourceforge.net/
