IATI.cloud extracts all published IATI XML files from the IATI Registry and makes them available in a normalised PostgreSQL database, that you can access using a RESTful API.
IATI is a global aid transparency standard and it makes information about aid spending easier to access, re-use and understand the underlying data using a unified open standard. You can find more about the IATI XML standard at: www.iatistandard.org
Name | Recommended version |
---|---|
Python | 3.6.5 |
PostgreSQL | 9.6 |
Redis | 4.0.x |
PostGIS | See: installing PostGIS |
SpaciaLite (for tests) | See: installing SpatiaLite |
Diskspace | 80GB minumum |
If you have Docker installed and want to be able to use iati.cloud right away, run:
docker-compose up
this will start a containerised (development) environment using Django's development server. Visit 0.0.0.0:8000
on your local browser. The superuser login credentials are oipa
/ oipa
.
If you do not have Docker:
- Go to folder OIPA.
- Run
virtualenv <name> -p python3
to create a virtual environment - Run
source env/bin/activate
to activate the virtual environment - Install required libraries using
pip install -r requirements.txt
- Create a PostgreSQL database
- Set your database credentials in
OIPA/.env
file as follows:- OIPA_DB_NAME=
your_database_name
- OIPA_DB_USER=
your_db_user
- OIPA_DB_PASSWORD=
your_db_password
- OIPA_DB_NAME=
- Run database migrations with
python manage.py migrate
- Start the development server:
python manage.py runserver
- In order for the parser to work, you need to start Redis too:
redis-server
- Create a superuser account:
python manage.py createsuperuser
- Start the process control centre (Supervisor):
python manage.py supervisor
- Open your browser at localhost:8000
Full documentation (which, at this point, needs an update) on installing, running and using iati.cloud can be found at docs.iati.cloud
- Website: www.iati.cloud
- Authors: Zimmerman
- License: AGPLv3 (see included LICENSE file for full license)
- Github Repo: github.com/zimmerman-zimmerman/iati.cloud/
- Bug Tracker: github.com/zimmerman-zimmerman/iati.cloud/issues
Yeap! We are mainly looking for coders to help on the project. If you are a coder feel free to Fork the repository and send us Pull requests!
Python already has clear PEP 8 code style guidelines, so it's difficult to add something to it, but there are certain key points to follow when contributing:
- PEP 8 code style guidelines should always be followed
- When making commits, in the first line try to summarize changes (in around 50 characters or less) and in the message body (if needed) try to explain what you did, and, most importantly, why. Try to avoid commit messages like "Moving to Python 3" or "Fixed bugs". Other developers should be able to understand why the change was made!
- Always try to reference issues ("related to #614", "closes #619" and etc.)
- Avoid huge code commits where the difference can not even be rendered by browser based web apps (Github for example). Smaller commit make it much easier to understand why the change was made, why (if) it resulted in certain bugs and etc
- When developing new feature, write at least some basic tests for it. This helps not to break other things in the future
- If there's a reason to commit code that is commented out (there usually should be none), always leave a "FIXME" or "TODO" comment so it's clear for other developers why this was done
- When using external dependencies that are not in PyPI (from Github for example), stick to a particular commit (i. e.
git+https://github.com/Supervisor/supervisor@ec495be4e28c694af1e41514e08c03cf6f1496c8#egg=supervisor
), so if the library is updated, it doesn't break everything - In the near future, automatic code quality / testing checks (continuous integration tools) will be implemented to check all these things automatically when pushing / merging new branches. Quality is the key!
- These rules are to be extended
Pytest-django is used to run tests. This will be installed automatically when the project is set up.
To run tests, from the top level directory of the project, run pytest OIPA/
. If you are in the same directory where manage.py
is, only running pytest
will be sufficient. Refer to Pytest-django documentations for details.
Tip: to be able to use debuggers (f. ex. ipdb) with pytest, run it with -s
option (to turn off capturing test output).
Testing / code quality settings can be found in the setup.cfg
file. Test coverage settings (for pytest-cov plugin) can be found at .coveragerc
file.
- Dutch Ministry of Foreign Affairs: www.openaid.nl
- DFID Devtracker: devtracker.dfid.gov.uk
- UNESCO Transparency Portal: opendata.unesco.org
- UN-Habitat: open.unhabitat.org
- Netherlands Enterprise Agency: aiddata.rvo.nl
- Mohinga AIMS: mohinga.info
- Overseas Development Institute: ODI.org
- UN Migration: IOM.int
& many others