debianmemberportfolio/docs/source/devdocs.rst
Jan Dittberner f778c21b0e move documentation sources to docs/source
* docs/source/conf.py
  - add toplevel directory to Python search path to allow building of
    documentation using system sphinx installation
2013-02-24 22:13:12 +01:00

4 KiB

Development of Debian Member Portfolio Service

The Debian Member Portfolio Service is implemented in Python using the Pylons web application framework.

The following sections describe how to setup a local development environment for the Debian Member Portfolio Service.

All instructions assume that you work on a Debian system. You should use Python 2.7 for development.

Setup of a local development

To start working on the source code you need to have git installed:

sudo aptitude install git

The canonical git repository for the Debian Member Portfolio Service is available at http://debianstuff.dittberner.info/git/ddportfolioservice.git. To get a clone of the source code you change to a directory of your choice and invoke git clone:

cd ~/src
git clone http://debianstuff.dittberner.info/git/ddportfolioservice.git

You should use virtualenv to separate the development environment from your system wide Python installation. You can install virtualenv using:

sudo aptitude install python-virtualenv

When you have virtualenv installed you should create a virtual environment for Debian Member Portfolio Service development and install the requirements using pip:

mkdir ~/.virtualenvs
virtualenv --distribute ~/.virtualenvs/dmportfolio
. ~/.virtualenvs/dmportfolio/bin/activate
cd ~/src/ddportfolioservice
pip install -r squeezereq.pip

Note

The Debian Member Portfolio Service instance at http://portfolio.debian.net/ is running on a Debian Squeeze server, therefore squeezereq.pip contains dependency versions matching that Debian release.

The dependency download and installation into the virtual environment takes some time.

After you have your virtual environment ready you need to setup the project for development:

python setup.py develop

Debian Member Portfolio Service needs the JQuery JavaScript library to function properly. The JQuery library is not included in the git clone and must be copied into the subdirectory ddportfolioservice/public/javascript/jquery. On Debian systems you can install the package libjs-jquery and place a symlink to the directory /usr/share/javascript into ddportfolioservice/public: :

sudo aptitude install libjs-jquery
ln -s /usr/share/javascript ddportfolioservice/public

Prepare for first startup

The Debian Member Portfolio Service uses data from the Debian keyring to get information regarding PGP keys and names related to email addresses. Before you can run the service you need to fetch a copy of the keyring and prepare it for use by the code.

Note

You need rsync and gnupg for these tasks:

sudo aptitude install rsync gnupg

When you have both installed you can run:

. ~/.virtualenvs/dmportfolio/bin/activate
./synckeyrings.sh
python ddportfolioservice/model/keyringanalyzer.py

The first synchronizes the keyrings in $HOME/debian/keyring.debian.org with files on the keyring.debian.org host. And the second generates a key/value database in ddportfolioservice/model/keyringcache that is used by the code.

Run a development server

Pylons uses PasteScript to run a development server. You can run a development server using:

paster serve --reload development.ini

The output of this command should look like the following:

Starting subprocess with file monitor
Starting server in PID 31377.
serving on http://127.0.0.1:5000

You can now access your development server at the URL that is printed by the command.

If you want to stop the development server press Ctrl + C.

Common development tasks

Add new URL