Version 10, last updated by Richard Esplin at March 16, 2009 18:31 UTC

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.