Feel free to contribute to the project.
To report bugs and feature requests, please open an issue on GitHub.
See also our Android app on GitHub.
The datasets Anyway uses are documented here:
Anyway's main goal is raising awareness of road accidents and act to avoid them, by showing road accidents with casualties over map.<br>
The shown data based on reports supplied by the Israeli Central Bureau of Statistics (CBS) and real time reports from United Hatzalah of Israel.<br>
Anyway is an open source project, sponsored by The Public Knowledge Workshop (“Hasadna”).
- We try to follow the process of other Hasadna projects, e.g. Open-Knesset.
- Please take a moment to read our "Contributing to ANYWAY" manifest.
- To see our GitHub issues in a nicer interface, take a look at HuBoard. Check out the Ready list to find a task to work on. The Backlog list there contains issues that are still not ready to be started. The Working list contains issues already started by developers (make sure to move your issue there once you start working on it), and the Done list contains completed issues that are waiting to be confirmed done and closed.
Getting the code
- Fork this repository on GitHub
git clone https://github.com/*you*/anyway
- Add the main repository as your upstream remote:
git remote add upstream https://github.com/hasadna/anyway
- Get updates whenever you start working:
git pull upstream dev
- Push to your fork when you've committed your changes and tested them:
git push, and make a pull request from your fork on GitHub
Choosing a Python Version
The project is currently transitioning to Python 3. Both Python 2 and 3 are supported at the moment, and the code is tested in Travis against both versions. If you are setting a new environment, it is recommended that you choose Python 3 for future compatibility. The instructions below are relevant for Python 2.
sudo apt-get install python2-pip python2-dev libpq-dev rabbitmq-server
systemctl enable --now rabbitmq-server
sudo dnf upgrade python-setuptools
sudo dnf install python-pip rabbitmq-server
systemctl enable --now rabbitmq-server
sudo easy_install pip setuptools
- Install and activate RabbitMQ
For all platforms:
- Activate your virtualenv (in case of using one):
pip install -r requirements.txt -r test_requirements.txt
See the Wiki.
Local first run (all platforms)
Define connection string (needs to be defined whenever you start working):
- windows shell:
First time, create tables:
alembic upgrade head
- Optionally, get the complete accidents file after sending a permission request, and extract it into
/static/data/lms. Otherwise, you'll use the example accidents file that you already got with the code, so no need to get it again.
- Populate the data (markers etc.):
python main.py process cbs: this will take less than an hour if
you're using the example files (default), but if you have the complete data it may take several
days. Be prepared.
- Populate United Hatzalah sample data:
python main.py process united --lightfor the complete,
or more recent data please contact the Anyway team.
- Run the app:
python main.py testserver: do this whenever you start working and want to try out your code.
- Navigate to http://127.0.0.1:5000 in your browser.
- If the site fails to load properly, make sure you have JDK installed on your machine
- If your platform supports RabbitMQ, you should lunch a Celery worker by running
celery worker -A anyway.clusters_calculator -D. Otherwise, export the environment variable
ANYWAY_DISABLE_CELERYto disable the use of Celery.
- If you wish to share your app on the local network, you can expose flask by running
python main.py testserver --open(Please note that this would expose your machine on port 5000 to all
It is useful to add the following to your
~/.bashrc (fixing for the correct path):
alias anyway='cd *path*/anyway && workon anyway && export DATABASE_URL=sqlite:///local.db'
Then you can simply start working by running the
To run tests:
pylint -j $(nproc) anyway tests && pytest -m "not browser" ./tests
If you also wish to run the real browser tests, replace
-m "not browser" with
--driver Chrome or specify the browser of your choice. To learn more, read about pytest-selenium.
Altering the database schema
When creating a patch that alters the database schema, you should use generate the appropriate
Alembic revision by running:
alembic revision --autogenerate -m "Description of the change"
Make sure to commit your revision together with the code.
Translation and Localization