Indigo is AfricanLII's document management system for managing, capturing and publishing legislation in the Akoma Ntoso format.
It is a Django python web application using:
- Cobalt -- a lightweight Python library for working with Akoma Ntoso
- Slaw -- a Ruby Gem for generating Akoma Ntoso from PDFs and other documents
Clone the repo:
git clone https://github.com/laws-africa/indigo.git cd indigo
Ensure you have python 2.7, virtualenv and pip installed.
Create and activate a virtualenv and install dependencies:
virtualenv env --no-site-packages source env/bin/activate pip install -e '.[test]'
Ensure you have PostgreSQL installed and running. Create a postgresql user with username and password
and create a corresponding database called
sudo su - postgres -c 'createuser -d -P indigo' sudo su - postgres -c 'createdb indigo'
Check that you can connect to the postgresql database as your regular shell user (not indigo user) by means of password authentication:
psql -h localhost indigo indigo
If you can't connect, you can modify your
/etc/postgresql/9.6/main/pg_hba.conf for postgresql 9.6) to allow md5 encrypted password authentication for users on localhost by adding a line like this:
local all all md5
Then run migrations to setup the initial database:
python manage.py migrate python manage.py update_countries_plus
If you have trouble connecting to your database, you may need to change the default database settings in
db_config = dj_database_url.config(default='postgres://indigo:indigo@localhost:5432/indigo')
Then create the superuser:
python manage.py createsuperuser
Now, run the server:
python manage.py runserver
Now give yourself all the permissions to work in that country by clicking on your name in the top right corner and choosing Profile. In the Badges Earned section, award yourself all the badges in the dropdown list.
Ruby and other non-Python dependencies
You won't be able to import documents yet. First, you'll need to install Ruby and the Slaw parser library. We strongly recommend installing and using RVM or a similar Ruby version manager. You'll need Ruby version 2.3.
Once you've install Ruby, install Bundler and the Indigo dependencies:
gem install bundler bundle install
You can test that Slaw is installed with
$ slaw --version slaw 1.0.0
You will also need
pdftotext to import PDF files. On Mac, you can use Homebrew and run
brew install poppler.
Adding translation strings
Each indigo package has its own translations in the
locale directory. Translations for strings are added on CrowdIn.
If you have added or changed strings that need translating, you must tell Django to update the .po files:
for app in indigo indigo_api indigo_za; do pushd $app; django-admin makemessages -a; popd; done django-admin compilemessages --settings indigo.settings
And then commit the changes. CrowdIn will pick up any changed strings and make them available for translation. Once they are translated, it will open a pull request to merge the changes into master.
To run the tests use:
python manage.py test
Releasing a New Version
- Run the tests!
- Update VERSION appropriately
- Commit and push to github
- Release to PyPI:
python setup.py sdist bdist_wheel upload
License and Copyright
The project is licensed under a GNU GPL 3 license.
Indigo is Copyright 2015-2017 AfricanLII.