What follows isn't really a HOWTO, but more of a map of the gotchas I dealt with in deploying Banjo. This page supplements the installation instructions at getbanjo.com.
Prerequisites:
To install Banjo you will need a working django-1.0 installation with a functioning database backend and memcached.
Getting Banjo:
Start by doing an:
hg clone http://hg.assembla.com/banjo
and then followed the instructions at getbanjo.com.
Dependencies:
As of early February 2009, the list of dependencies provided here is complete and Banjo works with all the source trees.
-
PyYAML (v 3.05) Active project with good community. Available in Debian as python-yaml.
-
simplejson (v 1.9.2) Active project with good community. Available in Debian as python-simplejson.
-
Python Imaging Library (PIL) (v 1.1.6). Mature, stable, actively maintained library. Available in Debian as python-imaging.
-
Markdown in Python (v 1.7). Good community and actively undergoing a major revision. Available in Debian as python-markdown.
-
python-textile (v 2.0.10? Debian Lenny calls it 2.10-3.1.2) Actively maintained by a single author. Available in Debian as python-textile. Package recommends python-twisted, but it works fine without.
-
Django (svn tip just after version 1.1 alpha—Banjo doesn't work with version 1.0).
-
django-registration (version 0.7 from pypi). This project is under active development.
-
iso8601 (version 0.1.4 from pypi). This project appears mature but not active.
-
typogrify (v 1.0). This project appears mature but not active. Requires smartypants.py.
-
smartypants.py (v 1.5_1.6). Single file with single author. Module appears mature but not active. Used by typogrify.
-
sorl-thumbnail (svn tip). This project appears mature and maintained, though they don't ever bundle their releases for download.
-
django-template-utils (release 0.4p2 would probably work, but I used svn trunk because the one additional change looked safe). This project looks mature, but not very active. The Banjo installation instructions need to be updated to reflect this dependency.
-
django-evolution (svn checkout). This is an active project.
-
django-extensions (svn tip). This is an active project with a large community. It must be called "extensions" for Banjo to import it.
-
django-atompub (svn checkout). The project doesn't look active.
-
django-xmlrpc (bzr trunk—version 0.1 doesn't work). Don't be deceived by the link to Google Code as the project's home page (the Google Code svn source doesn't work); Launchpad is the right place. The Banjo instructions need to be updated as well. This project doesn't look actively maintained, especially since the source requires a trivial edit to atom.py (add an import re) to import. A patch was reported six months ago and hasn't been applied.
-
django-app-plugins (svn trunk). Project appears active, but has some trivial problems like missing a license notice (I just submitted the issue). The website says it's released under the MIT license.
-
django-threaded-multihost (version 1.3-0 downloaded from http://assembla.com/spaces/threaded_multihost/documents). This project doesn't look used outside of Banjo and Satchmo—not much of a community. But it appears to work well. One note: the released tar.gz does not contain the license and docs that are in the hg repo.
-
django-site-skins (hg trunk). This was recently spun off of Banjo and Satchmo, and isn't listed as a dependency in the docs.
-
django-admin-plugins (hg clone of tip at http://hg.assembla.com/adminplugins). This is another Banjo/Satchmo library.
-
Satchmo (release 0.8.1 might work because Banjo hasn't changed much since then, but I downloaded the svn trunk). This is a Django shopping cart with a good community. However, Banjo only needs a couple of the Satchmo libraries.
-
Banjo (hg checkout of http://hg.assembla.com/banjo. I didn't try the 0.9-1 release downloadable from assembla).
I only had to make sure that a couple of Satchmo modules were in my python system path. I got them there by symlinking them into the common directory which I appended to sys.path. The source doesn't appear to import anything else from Satchmo, so deleting the rest should be possible.
Satchmo modules:
- keyedcache
- livesettings
- satchmo_utils
Configuration
- Consider uncommenting django_evolution from banjo/__init__.py
When debugging, it is really helpful to comment out django_xmlrpc from banjo/__init__.py, and replace the line
from banjo.blog.syndication import XMLRPC_METHODS
in settings.py with
XMLRPC_METHODS = None
to eliminate a class of spurious error messages.
Add this rule at the end of your urls.py so that all URLs that you haven't already dealt with go to Banjo:
(r'', include('banjo.urls')),
- Then create your own skin using the Banjo base_root template as a starting point. Details are in the Skins page.