in brackets):
* A python interpreter
- * django >= 1.2
+ * django >= 1.5
* A webserver (apache)
* mod_python or flup
- * A database server (postgresql)
+ * A database server (postgresql, mysql)
+ * relevant python modules for the database server (e.g: python-mysqldb)
1. Database setup
either, email me.
For the following commands, a $ prefix signifies that the command should be
- entered at your shell prompt, and a > prefix signifies the commant-line
+ entered at your shell prompt, and a > prefix signifies the command-line
client for your sql server (psql or mysql)
Create a database for the system, add accounts for two system users: the
settings, using local_settings.py (see below) to override the defaults
in settings.py:
- DATABASE_ENGINE = 'postgresql_psycopg2'
- DATABASE_NAME = 'patchwork'
- DATABASE_USER = 'patchwork'
- DATABASE_PASSWORD = 'my_secret_password
- DATABASE_HOST = 'localhost'
- DATABASE_PORT = ''
+ DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.postgresql_psycopg2',
+ 'HOST': 'localhost',
+ 'PORT': '',
+ 'USER': 'patchwork',
+ 'PASSWORD': 'my_secret_password',
+ 'NAME': 'patchwork',
+ },
+ }
For MySQL:
$ mysql
- > CREATE DATABASE 'patchwork';
+ > CREATE DATABASE patchwork CHARACTER SET utf8;
> CREATE USER 'www-data'@'localhost' IDENTIFIED BY '<password>';
> CREATE USER 'nobody'@'localhost' IDENTIFIED BY '<password>';
+ Once that is done, you need to tell Django about the new Database
+ settings, using local_settings.py (see below) to override the defaults
+ in settings.py:
+
+ DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.mysql',
+ 'HOST': 'localhost',
+ 'PORT': '',
+ 'USER': 'patchwork',
+ 'PASSWORD': 'my_secret_password',
+ 'NAME': 'patchwork',
+ 'TEST_CHARSET': 'utf8',
+ },
+ }
+
+ TEST_CHARSET is used when creating tables for the test suite. Without
+ it, tests checking for the correct handling of non-ASCII characters
+ fail.
+
2. Django setup
Set up some initial directories in the patchwork base directory:
mkdir -p lib/packages lib/python
- lib/packages is for stuff we'll download, lib/python is to add
+ lib/packages is for stuff we'll download; lib/python is to add
to our python path. We'll symlink python modules into lib/python.
- At the time of release, patchwork depends on django version 1.2 or
+ At the time of release, patchwork depends on django version 1.5 or
later. Your distro probably provides this. If not, do a:
cd lib/packages
- svn checkout http://code.djangoproject.com/svn/django/tags/releases/1.2
+ git clone https://github.com/django/django.git -b stable/1.5.x
cd ../python
ln -s ../packages/django/django ./django
- We also use some Javascript libraries:
-
- cd lib/packages
- mkdir jquery
- cd jquery
- wget http://jqueryjs.googlecode.com/files/jquery-1.3.min.js
- wget http://www.isocra.com/articles/jquery.tablednd_0_5.js.zip
- unzip jquery.tablednd_0_5.js.zip jquery.tablednd_0_5.js
- cd ../../../htdocs/js/
- ln -s ../../lib/packages/jquery/jquery-1.3.min.js ./
- ln -s ../../lib/packages/jquery/jquery.tablednd_0_5.js ./
-
The settings.py file contains default settings for patchwork, you'll
need to configure settings for your own setup.
chars = string.letters + string.digits + string.punctuation
print repr("".join([random.choice(chars) for i in range(0,50)]))
- If you have patchwork installed in somewhere other than /srv/patchwork,
- you'll also need to define:
-
- MEDIA_ROOT
- TEMPLATE_DIRS
-
If you wish to enable the XML-RPC interface, add the following to
your local_settings.py file:
You'll probably want to do the following:
* Set up your projects
- * Configure your website address (in the Sites) section of the admin
+ * Configure your website address (in the Sites) section
5. Subscribe a local address to the mailing list
sudo -u nobody /srv/patchwork/apps/patchwork/bin/parsemail.sh < mail
+7. Set up the patchwork cron script
+
+ Patchwork uses a cron script to clean up expired registrations, and
+ send notifications of patch changes (for projects with this enabled).
+
+ Something like this in your crontab should work:
+
+ # m h dom mon dow command
+ PYTHONPATH=apps:.
+ DJANGO_SETTINGS_MODULE=settings
+ */10 * * * * cd patchwork; python apps/patchwork/bin/patchwork-cron.py
+
+
+ - the frequency should be the same as the NOTIFICATION_DELAY_MINUTES
+ setting, which defaults to 10 minutes.
+
+8. Optional: Configure your VCS to automatically update patches
+
+ The tools directory of the patchwork distribution contains a file
+ named post-receive.hook which is an example git hook that can be
+ used to automatically update patches to the Accepted state when
+ corresponding comits are pushed via git.
+
+ To install this hook, simply copy it to the .git/hooks directory on
+ your server, name it post-receive, and make it executable.
+
+ This sample hook has support to update patches to different states
+ depending on which branch is being pushed to. See the STATE_MAP
+ setting in that file.
+
+ If you are using a system other than git, you can likely write a
+ similar hook using pwclient to update patch state. If you do write
+ one, please contribute it.
Some errors:
to the tables.
* pwclient fails for actions that require authentication, but a username
- and password is given int ~/.pwclient rc. Server reports "No authentication
+ and password is given in ~/.pwclientrc. Server reports "No authentication
credentials given".
- if you're using the FastCGI interface to apache, you'll need the