This documentation is dedicated to code contributors, in order to run a development instance.
Developers are advice to run their Geotrek instance in an isolated environment, however it is not an absolute prerequisite. More details below.
If you use virtual machines or containers (Vagrant, LXC, ...), this will install all the necessary components for development :
./install.sh --dev
The most minimal components required to run an instance are :
- PostGIS 2 server
- GDAL, GEOS, libproj
- gettext
- libfreetype
- libxml2, libxslt
- Usual Python dev stuff
See the list of minimal packages on Debian/Ubuntu.
If you already have all these components installed your OS (probably because you're already a python/GIS developer), then just jump to the next section !
Start local instance :
make env_dev update serve
Note
Running env_dev
and update
is recommended after a pull of new source code,
but is not mandatory : make serve
is enough most of the time.
Run unit tests :
make env_test update tests
Run unit tests in verbose mode, and without migrations :
make env_dev update tests
For Capture server, run an instance of screamshotter in a separate terminal :
bin/django runserver --settings=screamshotter.settings 8001
For PDF conversion server, run an instance of Convertit in a separate terminal on http://localhost:6543
bin/convertit lib/src/convertit/development.ini
make load_data bin/django loaddata development-pne
In order to get elevation data, a DEM is necessary. If you use the default extent,
as defined in conf/settings.ini.sample
, you can load the following dataset :
wget http://depot.makina-corpus.org/public/geotrek/mnt_0_ecrins.zip unzip mnt_0_ecrins.zip bin/django loaddem mnt_0_ecrins/w001001.adf
- Use flake8
- KISS & DRY as much as possible
- Elegant and generic is good, simple is better
- Commits messages are explicit and mention issue number (
(ref #12)
or(fixes #23)
) - Features are developed in a branch and merged from Github pull-requests.
docs/changelog.rst
is up-to-date- A unit-test covers the bugfix or the new feature
- A frontend test (:path:jstests/nav-*.js) covers the navigation bug fix or feature
- A JS Mocha test (:path:jstests/tests.*.js) covers the JavaScript bug fix or feature
- Unit-tests coverage is above or at least equal with previous commits
- Settings have default value in
settings/base.py
orconf/settings-default.ini
- Installation instructions are up-to-date
Check TODO in the source tree
find geotrek | xargs egrep -n -i '(TODO|XXX|temporary|FIXME)'
- Update VERSION file, docs/conf.py
- Pin (fixed revision) of eggs under development in buildout.cfg
- Use semantic versioning
- Use zest.releaser
- Add git tag X.Y.Z
- Add release on Github (copy-paste
CHANGES
paragraph)
bin/django makemigrations <appName> bin/django migrate
notes: | Add migration file to source control. |
---|
Data only:
bin/django flush
Everything:
dbname=geotrekdb sudo -n -u postgres -s -- psql -c "DROP DATABASE ${dbname};" && sudo -n -u postgres -s -- psql -c "CREATE DATABASE ${dbname};" && sudo -n -u postgres -s -- psql -d ${dbname} -c "CREATE EXTENSION postgis;"
To develop mapentity and Geotrek together, add the following lines to etc/settings.ini
:
[sources] mapentity = git https://github.com/makinacorpus/django-mapentity.git [buildout] auto-checkout += mapentity
Then run:
make env_dev update cd lib/src/mapentity/ git submodule init git submodule update