Installed packages

Relevant Django packages

While you can see a complete list of django packages in the INSTALLED_APPS setting in server/config/settings.py, these are the most relevant Django packages used by OpenSurfaces:

south
Database migrations (changing anything in models.py files) are handled by South. You should learn how to use South if you want to modify the database schema (e.g. to add a model).
storages and S3
I use django-storages to help abstract how images are stored. Right now, all image data is stored on Amazon’s S3 service. S3 is configured in server/config/settings_local.py. By default, as a debugging safety net, writes are disabled to S3 (via the S3_ENABLE_WRITE settting). This is done by replacing the standard Boto storage with the python class common.backends.ReadOnlyS3BotoStorage
compressor
django-compressor allows us to write static files in coffeescript and less, and have them automatically compiled to javascript and css respectively.
cacheback
Many expensive pages (e.g. the homepage) take a long time to prepare (~20s) but still need to be updated ocassionally. The django-cacheback package provides a mechanism to serve cached copies of pages, and then asynchronously update the pages when stale (via celery) instead of waiting 20s whenever the cache expires.
imagekit
Thumbnails are automatically resized by django-imagekit. In the future, I plan to remove this dependency and manage thumbnails manually. Note that since the filename is computed from a hash of the thumbnail settings, changing the version of imagekit will invalidate all thumbnails, thus breaking the website. So, if you want to change the version of imagekit, you need to delete all old thumbnails (manually), and then recreate them.

Ubuntu

The installer (scripts/install/install_packages.sh) will automatically install and update the following Ubuntu packages:

build-essential
cmake
cython
gfortran
git-core
goaccess
inotify-tools
ipython
ipython-notebook
jhead
libatlas-base-dev
libatlas-dev
libblas-dev
libboost-dev
libboost-filesystem-dev
libboost-system-dev
libboost-thread-dev
libeigen3-dev
libfftw3-dev
libfreetype6-dev
libgmp-dev
libjpeg-dev
liblcms
liblcms-dev
liblcms-utils
libmemcached-dev
libmpfr-dev
libopenexr-dev
libpng-dev
libqhull-dev
libsuitesparse-dev
libxml2-dev
libxslt-dev
logrotate
memcached
netcat
nginx
nodejs
npm
ntp
openssl
premake
python
python-dev
python-pip
python-setuptools
python-virtualenv
rabbitmq-server
supervisor
swig
wamerican-small
zlib1g-dev
postgresql-$PSQL_VERSION
postgresql-contrib-$PSQL_VERSION
postgresql-server-dev-$PSQL_VERSION

Python

and these Python packages:

setuptools
versiontools

Inside a separate virtualenv environment, these Python packages will be installed (separate from your root Python packages):

# security exceptions (necessary for PIP 1.5)
--allow-all-external
--allow-unverified PIL
--allow-unverified django-endless-pagination
--allow-unverified django-admin-tools

# general python libraries
distribute>=0.7.3
args>=0.1.0,<0.2
setproctitle>=1.1.8,<1.2
pyinotify>=0.9.4,<1.0
ipython>=1.1.0
pytz>=2013
PIL>=1.1.7,<1.2

# html/xml parsing
ua-parser>0.3.2,<0.4
lxml>=3.3.0,<3.4
BeautifulSoup>=3.1.2,<4.0
html5lib>=0.95,<1.0
slimit>=0.7.4,<0.8
pyyaml>=3.10,<4.0
pyquery>=1.2.8,<1.3
requests>=2.3.0,<2.4

# sphinx docs
docutils>=0.10,<1.0
sphinx>=1.2,<2.0
sphinx_rtd_theme>=0.1.5,<1.2
pygments>=1.4,<2.0
sphinxcontrib-email>=0.1,<0.2

# memcached
pylibmc>=1.2.3,<1.3

# postgresql
psycopg2>=2.5.2

# celery
pyrabbit>=1.0.0,<1.1
celery>=3.1.9,<3.2

# django
django>=1.6.2,<1.7
south>=0.8.4,<2.0
gunicorn>=18.0,<19
django-appconf>=0.6,<0.7
django-compressor>=1.3,<1.4
django-endless-pagination>=1.1,<1.2
django-cacheback>=0.6,<0.7
django-user-accounts==1.0b7
django-admin-tools>=0.5.1,<0.6
django-debug-toolbar>=1.0.1
django-debug-toolbar-template-timings>=0.5.5,<0.6
django-dtpanel-htmltidy>=0.1.1,<0.2
django-memcache-status>=1.1,<1.2
django-cache-panel>=0.1,<0.2
django-simple-captcha>=0.4.1
django-extensions>=1.3.3,<1.4
django-storages>=1.1.8,<1.2
django-forms-bootstrap>=2.0.3,<2.1

# scientific computing (base libraries)
cython>=0.19.2,<1.0
numpy>=1.8.0,<1.9
scipy>=0.13.2,<0.14
# security exceptions (necessary for PIP 1.5)
--allow-all-external

# celery
pyrabbit>=1.0.0,<1.1
celery>=3.1.9,<3.2

# scientific computing
scikit-image>=0.9.3,<0.10
openexr>=1.2.0
pyleargist>=2.0.5,<2.1
numconv>=2.1.1,<2.2
colormath>=1.0.8,<1.1
pypng>=0.0.16,<0.1
pyamg>=2.1.0,<2.2
matplotlib>=1.3.1,<1.4