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.

You must use Django 1.2.3 or greater in order to use the latest CSRF features.
Series 1.3.x is currently recommended.

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 Thumbnail
  
  .. warning::
    You must use `Sorl Thumbnail version 3.2.5`_ with Satchmo.

- 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.

- Satchmo uses django-threaded-multihost internally for quick access to thread local variables 
  (the current request, current user, etc.). Satchmo also uses this app for an optimization when 
  running mutliple sites and store configurations with a single settings file 
  (see :doc:`configuration` for more details):

  - `Django Threaded Multihost`_

- For flexibility in defining template plugin points:

  - `Django App Plugins`_

- For admin-configurable settings:

  - `Django Livesettings`_

  .. versionadded:: 0.9.1

- For advanced caching settings:

  - `Django Keyedcache`_

  .. versionadded:: 0.9.1

- For reusable, consistent signals:

  - `Signals Ahoy`_

- For the account registration process, you will need:

  - `Django Registration`_

  .. warning::
    You must use our `Django registration 0.7.1`_ with Satchmo. When 0.8 comes out, we will
    migrate to the original new version.

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 wish to enable Akismet for spam prevention on product ratings, you will need to install:

  - `Akismet`_

- Satchmo uses South for migrating database schema changes. It is not required
  to run the store but is very useful for migrating versions.

  - `South <http://south.aeracode.org/>`_

  .. versionadded:: 0.9.1

- 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`_

Detailed steps for installing these dependencies is included in the :doc:`new_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.com/software/opensource/rl-toolkit/download/
.. _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
.. _`Django registration 0.7.1`: https://bitbucket.org/hynekcer/django-registration
.. _snapshot: http://www.satchmoproject.com/snapshots/
.. _`Django Threaded Multihost`: http://bitbucket.org/bkroeze/django-threaded-multihost
.. _`Django App Plugins`: http://bitbucket.org/bkroeze/django-caching-app-plugins/
.. _`SSL Backport`: http://pypi.python.org/pypi/ssl/
.. _`Signals Ahoy`: http://bitbucket.org/bkroeze/django-signals-ahoy/
.. _DocUtils: http://docutils.sourceforge.net/
.. _Django Livesettings: http://bitbucket.org/bkroeze/django-livesettings
.. _Django Keyedcache: http://bitbucket.org/bkroeze/django-keyedcache
.. _Akismet: http://www.voidspace.org.uk/python/akismet_python.html
.. _`Sorl Thumbnail version 3.2.5`: http://pypi.python.org/packages/source/s/sorl-thumbnail/sorl-thumbnail-3.2.5.tar.gz
