Skip to content

Latest commit

 

History

History
180 lines (119 loc) · 6.41 KB

README.md

File metadata and controls

180 lines (119 loc) · 6.41 KB

Indigo

Codacy Badge Build Status Coverage Status

Indigo logo

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:

Read the full documentation at indigo.readthedocs.io.

Local development

Clone the repo:

git clone https://github.com/laws-africa/indigo.git
cd indigo

Ensure you have python 3.6, virtualenv and pip installed.

Create and activate a virtualenv and install dependencies:

virtualenv env -p python3.6
source env/bin/activate
pip install -e '.[test]'

Ensure you have PostgreSQL installed and running. Create a postgresql user with username and password indigo, and create a corresponding database called indigo.

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 pg_hba.conf (/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
python manage.py loaddata languages_data.json.gz

If you have trouble connecting to your database, you may need to change the default database settings in indigo/settings.py:

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 login at http://localhost:8000 and create a country by going to http://localhost:8000/admin, choosing Countries under Indigo API and clicking Add Country.

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.6.

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 --version
slaw 10.1.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 so that translations can be supplied through CrowdIn.

for app in indigo indigo_api indigo_za; do pushd $app; django-admin makemessages -a; popd; done

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.

Once merged into master, you must tell Django to compile the .po files to .mo files:

django-admin compilemessages --settings indigo.settings.base

And then commit the changes.

npm module dependencies

Indigo uses a small number of node modules written in ES6. They need to be compiled into a single JS file because Indigo doesn't use ES6.

To do this, install browserify, then:

npm install
browserify indigo_app/static/lib/dom-utils.src.js > indigo_app/static/lib/dom-utils.js

wkhtmltopdf dependencies

Indigo uses wkhtmltopdf to convert html to pdf On local download and install wkhtml from https://wkhtmltopdf.org/downloads.html On production (using Dokku), Dokku recommends installing a wkhtmltopdf plugin developed by mbriskar on (http://dokku.viewdocs.io/dokku/community/plugins/). However, this module points to an incorrect pre-build-buildpack. Use the patched fork below:

sudo dokku plugin:install https://github.com/applivi/dokku-wkhtmltopdf.git wkhtmltopdf
dokku ps:rebuild indigo

Testing

To run the tests use:

python manage.py test

Production deployment

Read the documentation for details on deploying Indigo.

Releasing a New Version

  1. Run the tests!
  2. Update VERSION appropriately
  3. Update docs/changelog.rst
  4. Commit changes
  5. Tag: git tag vX.X.X and push to github git push; git push --tags

License and Copyright

The project is licensed under a GNU GPL 3 license.

Indigo is Copyright 2015-2020 AfricanLII.