========
Ella CMS
========

Ella is a Content Management System based on `Python`_ web framework `Django`_.
But for starting an application using Ella, only knowledge about
adding Python modules to PYTHONPATH is essential.

It is a set of Django applications designed to work together. Thus, for
details on deployment and configuration please refer to `Django documentation`_.

For creating site using Ella, working knowledge of Django and its templating
language is paramount.

.. _Python: http://www.python.org/
.. _Django: http://www.djangoproject.com/
.. _Django documentation: http://www.djangoproject.com/documentation/


Ella test
=========

In Django terms an application is called project.
For starting first Ella project, there is simple howto screencast
in ``./doc/`` directory (``./doc/ella_start.mpeg``).

Small Ella project in ella_test directory is
basically outcome of ``ella_start`` screencast. It represents minimal application
built on Ella.


Dependencies
============

All django dependencies
-----------------------
That's especially python (version >= 2.4). And
database connector module. We use MySQL as database with mysql-python module.
But django supports Postgres, SQLite and Oracle as well.
Please consult `django web site`_ for details.

.. _`django web site`: http://www.djangoproject.com/documentation/settings/#database-engine

Django
------
Please use attached django version. It's based on `django's newforms admin branch`_.
This Ella version is dependent on `revision 7022`_, with these patches applied:

`[5922] <http://code.djangoproject.com/ticket/5922/>`_,
`[5833] <http://code.djangoproject.com/ticket/5833/>`_,
`[3400] <http://code.djangoproject.com/ticket/3400/>`_,
`[5923] <http://code.djangoproject.com/ticket/5923/>`_,
`[5780] <http://code.djangoproject.com/ticket/5780/>`_,
`[5765] <http://code.djangoproject.com/ticket/5765/>`_,
`[5735] <http://code.djangoproject.com/ticket/5735/>`_,
`[4667] <http://code.djangoproject.com/ticket/4667/>`_

.. _`django's newforms admin branch`: http://code.djangoproject.com/wiki/NewformsAdminBranch
.. _`revision 7022`: http://code.djangoproject.com/changeset/7022

Additional modules
------------------

Almost all dependecies are distributed with Ella in this package,
There are some other dependecies, but they are
common in any linux distriution and even on Windows platforms.

Prerequisities not contained in this package:

 * python-docutils
 * python-imaging

Main python modules found in here:

 * python-feedparser
 * python-markdown
 * python-memcache (if you enable caching via `memcached`_)
 * python-stomp (if you run more than one process and wish to use cache
   invalidation via `ActiveMQ`_)

.. _ActiveMQ: http://activemq.apache.org/
.. _memcached: http://www.danga.com/memcached/

Instalation
===========

There are two ways how to install ella.

Non-root, local
---------------

This is best when you don't have root priviledges, you just don't want to
bother with python distutils packege system, or you have another Django
version on your system (please, pay attention to proper PYTHONPATH setup).

Set your PYTHONPATH enviroment variable the the directory
``/path/to/ella_test/pythonpath``. In case there is already another version of
django, please make sure, that ``/path/to/ella_test/pythonpath`` is before the location
of other django version.

Uninstal is as easy as deleting the extracted files and removing the entry
from the PYTHONPATH.

Root, system wide
-----------------

Ella has ``setup.py`` for `python-distutils installation`_.
Note that there is no easy command to remove files installed via ``distutils``.
But in case of Ella, only one directory named ella is created in ``site-packages`` directory.

Small hint on the end, how to get full path of any python module::

    >>> import ella
    >>> ella.__file__
    '/usr/lib/python2.4/site-packages/ella/__init__.pyc'

.. _`python-distutils installation`: http://docs.python.org/inst/inst.html

