OSMTM enables collaborative work on specific areas in OpenStreetMap by defining clear workflows to be achieved and by breaking tasks down into pieces.
The application is written in Python using the Pyramid framework.
This is the 2.0 version of the Tasking Manager.
First clone the git repository:
git clone --recursive git://github.com/hotosm/osm-tasking-manager2.git
Installing OSMTM in a Virtual Python environment is recommended.
To create a virtual Python environment:
cd osm-tasking-manager2
sudo easy_install virtualenv
virtualenv --no-site-packages env
./env/bin/python setup.py develop
Tip: if you encounter problems installing psycopg2
especially on Mac, it is recommended to follow advice proposed here.
OSMTM requires a PostgreSQL/PostGIS database. Version 2.x of PostGIS is required.
First create a database user/role named www-data
:
sudo -u postgres createuser -SDRP www-data
Then create a database named osmtm
:
sudo -u postgres createdb -O www-data osmtm
sudo -u postgres psql -d osmtm -c "CREATE EXTENSION postgis;"
You certainly will need some local specific settings, like the db user or
password. For this, you can create a local.ini
file in the project root,
where you can then override every needed setting.
For example:
[app:main]
sqlalchemy.url = postgresql://www-data:www-data@localhost/osmtm
Note: you can also put your local settings file anywhere else on your
file system, and then create a LOCAL_SETTINGS_PATH
environment variable
to make the project aware of this.
You're now ready to do the initial population of the database. An
initialize_osmtm_db
script is available in the virtual env for that:
./env/bin/initialize_osmtm_db
./env/bin/pserve --reload development.ini
You will see messages, hopefully including a line like serving on http://0.0.0.0:6543
.
Visit that address in your web browser - you should see your local Tasking Manager!
The CSS stylesheet are compiled using less. Launch the following command as soon as you change the css:
lessc -ru osmtm/static/css/main.less > osmtm/static/css/main.css
env/bin/pserve --reload development.ini
The tests use a separate database. Create that database first:
sudo -u postgres createdb -O www-data osmtm_tests
sudo -u postgres psql -d osmtm_tests -c "CREATE EXTENSION postgis;"
Create a local.test.ini
file in the project root, where you will add the
settings for the database connection.
For example:
[app:main]
sqlalchemy.url = postgresql://www-data:www-data@localhost/osmtm_tests
To run the tests, use the following command:
./env/bin/nosetests
git pull origin
git submodule update
python setup.py develop
pg_dump -Fc -f osmtm2_latest.dmp database_name
alembic upgrade head
python setup.py compile_catalog
In case you install your own instance you may want to customize its look and
feel. You can do so by modifying the following files:
osmtm/templates/custom.mako
, osmtm/static/css/custom.less
&
osmtm/static/img/favicon.ico
OSMTM is localized on https://www.transifex.com/projects/p/osm-tasking-manager2/ service.
It's possible to create translations for two resources: current and master. Current resource represents currently deployed instance of the OSMTM [http://tasks.hotosm.org](). Master resource represents actively developed code that will become current once it gets deployed.
In general managing translation files involves:
python setup.py extract_messages
python setup.py init_catalog -l en
python setup.py update_catalog
python setup.py compile_catalog
available_languages
configuration variable in production.ini file, for example available_languages = en fr
transifex-client
): tx init
~/.transifexrc
file~/.transifexrc
, create the file and modify it's access privileges chmod 600 ~/.transifexrc
Example .transifexrc
file:
[https://www.transifex.com]
hostname = https://www.transifex.com
password = my_super_password
token =
username = my_transifex_username
osm-tasking-manager2
, generate the pot file, and add it as a master
resource on the project, full resource name, in this case, is osm-tasking-manager2.master
tx set --source -r osm-tasking-manager2.master -l en osmtm/locale/en/LC_MESSAGES/osmtm.po
tx set -r osm-tasking-manager2.master -l fr osmtm/locale/fr/LC_MESSAGES/osmtm.po
tx push -s -t
-s
- pushes source files (English)-t
- pushes translation files (French)tx pull
.tx
directory, which is not what we want so we need to define the mappingtx set -r osm-tasking-manager2.master -l hr osmtm/locale/hr/LC_MESSAGES/osmtm.po
tx pull -l hr
tx pull --minimum-perc=90
update pot and source po file
python setup.py extract_messages
python setup.py init_catalog -l en
push the source file to Transifex service
tx push -s
tx set -r osm-tasking-manager2.master -l hr osmtm/locale/hr/LC_MESSAGES/osmtm.po
available_languages
configuration variable in production.ini file: available_languages = en fr hr
tx pull -l fr,hr
python setup.py compile_catalog