Skip to main content

Store your GPX tracks of your running (or other sports activity) in django.

Project description

Logo Store your GPX tracks of your running (or other sports activity) in django.

Build Status on travis-ci.org

travis-ci.org/jedie/django-for-runners

Coverage Status on codecov.io

codecov.io/gh/jedie/django-for-runners

Coverage Status on coveralls.io

coveralls.io/r/jedie/django-for-runners

Status on landscape.io

landscape.io/github/jedie/django-for-runners/master

(The name Django-ForRunners has the origin from the great Android tracking app ForRunners by Benoît Hervier: http://rvier.fr/#forrunners )

Features:

  • GPX track management:

    • Upload GPX tracks

    • Import GPX tracks from commandline

    • Track analysis:

      • basics: Track length / Duration / Pace / Hart rate Up-/Downhill

      • Display route on OpenStreetMap map

      • Graphs with elevation / heart rate / cadence (if available in GPX data)

    • Data that is automatically extracted from the web:

      • Start/finish Address from OpenStreetMap

      • Start/finish weather information from metaweather.com

    • Store additional data:

      • Ideal track distance (for easier grouping/filtering tracks)

  • sports competitions Management:

    • Create a List of Sport Events

      • Add participation to a event

      • link GPX track with a event participation

      • Store you event participation:

        • official track length

        • measured finisher time

        • Number of participants who have finished in your discipline

      • Add links to webpages relatet to this event

      • Record costs (entry fee, T-shirt etc.)

  • common

    • Multiple user support (However: no rights management and currently only suitable for a handful of users)

try-out

dependencies are:

  • pip (Debian/Ubuntu package name: python3-pip)

Linux

  1. Download the file boot_django_for_runners.sh (right click and use “save under…”)

  2. run boot_django_for_runners.sh

  3. double click on ~/Django-ForRunners/Django-ForRunners

  4. insert user name/password in terminal

All in one step, e.g.:

~$ bash <(curl -s https://raw.githubusercontent.com/jedie/django-for-runners/master/boot_django_for_runners.sh)

Just double click on ~/Django-ForRunners/Django-ForRunners in your file manager ;)

Or start by hand, e.g.:

~$ cd ~/Django-ForRunners/bin
~/Django-ForRunners/bin$ ./for_runners run-server

More details:

The shell script creates a python virtual environment and install all needed requirements into:

  • ~/Django-ForRunners

The setup routine will install two commands:

  • ~/Django-ForRunners/bin/for_runners - CLI to start the web server to use Django-ForRunners

  • ~/Django-ForRunners/bin/manage - Run django manage commands with Django-ForRunners project settings

e.g.:

~$ cd Django-ForRunners/
~/Django-ForRunners$ source bin/activate
(Django-ForRunners) ~/Django-ForRunners$ for_runners --help
...
(Django-ForRunners) ~/Django-ForRunners$ manage --help
...

Windows

TODO: Create shortcut (via pywin32?)

  1. Download the file boot_django_for_runners.cmd (right click and use “save under…”)

  2. run boot_django_for_runners.cmd

The batch file creates a python virtual environment and install all needed requirements into:

  • C:\Program Files\Django-ForRunners

Start the development server with the test project by double click on:

"C:\Program Files\Django-ForRunners\Scripts\for_runners.exe"

update existing installation

Just run for_runners update e.g.:

~$ cd Django-ForRunners/
~/Django-ForRunners$ source bin/activate
(Django-ForRunners) ~/Django-ForRunners$ for_runners update

import GPX files

e.g.:

~$ ~/Django-ForRunners/bin/manage import_gpx --username <django_username> ~/backups/gpx_files

Note: It is no problem to start import_gpx with the same GPX files: Duplicate entries are avoided. The start/finish (time/latitude/longitude) are compared.

backup

Create a backup into DjangoForRunnersEnv/backups/<timestamp>/ e.g.:

~$ cd Django-ForRunners/
~/Django-ForRunners$ source bin/activate
(Django-ForRunners) ~/Django-ForRunners$ for_runners backup

The backup does:

  • backup the database

  • export all GPX tracks

  • generate .csv files:

  • a complete file with all running tracks

  • one file for every user

regenerate all SVG files

~$ cd Django-ForRunners/
~/Django-ForRunners$ source bin/activate
(Django-ForRunners) ~/Django-ForRunners$ for_runners recreate-svg

Screenshots

(All screenshots are here: github.com/jedie/jedie.github.io/tree/master/screenshots/django-for-runners)

for-runers v0.6.0 2018-07-31 GPX Track.png

for-runers v0.6.0 2018-07-31 GPX Track.png

for-runners v0.4.0 2018-6-26 GPX info.png

for-runners v0.4.0 2018-6-26 GPX info.png

for-runners v0.6.0 2018-07-19 Event Costs.png

for-runners v0.6.0 2018-07-19 Event Costs.png

run tests

# activate the virtualenv:
~$ cd Django-ForRunners/
~/Django-ForRunners$ source bin/activate

# run the tests:
(Django-ForRunners) ~/Django-ForRunners$ cd src/django-for-runners/
(Django-ForRunners) ~/Django-ForRunners/src/django-for-runners$ ./setup.py test

# run text via tox:
(Django-ForRunners) ~/Django-ForRunners/src/django-for-runners$ ./setup.py tox

Note:

To run all tests, you need:

  • Chromium Browser WebDriver e.g.: apt install chromium-chromedriver

  • Firefox Browser WebDriver aka geckodriver

install geckodriver e.g.:

~$ cd /tmp
/tmp$ wget https://github.com/mozilla/geckodriver/releases/download/v0.20.1/geckodriver-v0.20.1-linux64.tar.gz -O geckodriver.tar.gz
/tmp$ sudo sh -c 'tar -x geckodriver -zf geckodriver.tar.gz -O > /usr/bin/geckodriver'
/tmp$ sudo chmod +x /usr/bin/geckodriver
/tmp$ rm geckodriver.tar.gz
/tmp$ geckodriver --version
geckodriver 0.20.1
...

some notes

GPX storage

Currently we store the unchanged GPX data in a TextField.

static files

We collect some JavaScript files, for easier startup. These files are:

Project Homepage

License

storage directory

leafletjs.com

Leaflet licensed under BSD

for_runners/static/leaflet/

dygraphs.com

dygraphs licensed under MIT

for_runners/static/dygraphs/

chartjs.org

Chart.js licensed under MIT

for_runners/static/chartjs/

Precision of coordinates

GPX files from Garmin (can) contain:

  • latitude with 29 decimal places

  • longitude with 28 decimal places

  • elevation with 19 decimal places

The route on OpenStreetMap does not look more detailed, with more than 5 decimal places.

See also: https://wiki.openstreetmap.org/wiki/Precision_of_coordinates

Django compatibility

django-for-runners

django version

python

>=v0.7.1

2.1

3.5, 3.6, 3.7

v0.5.x

2.0

3.5, 3.6, 3.7

(See also combinations in .travis.yml and tox.ini)

Backwards-incompatible changes

v0.9

How to update:

~$ cd Django-ForRunners/
~/Django-ForRunners$ source bin/activate
(Django-ForRunners) ~/Django-ForRunners$ cd src/django-for-runners/
(Django-ForRunners) ~/Django-ForRunners/src/django-for-runners$ git pull origin master
(Django-ForRunners) ~/Django-ForRunners/src/django-for-runners$ for_runners update

How to migrate

  • The SQlite database was moved.

If you would like to migrate, move/rename this file

~/Django-ForRunners/src/django-for-runners/test_project_db.sqlite3

to:

~/Django-ForRunners/Django-ForRunners-database.sqlite3

  • cli arguments changed with click v7.0: "_" -> "-", e.g.: "run_server" -> "run-server"

history

  • compare v0.10.1…master dev

    • tbc

  • 09.08.2019 - v0.10.1:

    • Enhance “Event Participation” admin view: Add start date and costs in table

  • 26.06.2019 - v0.10.0:

    • NEW: GPX Admin action to print a small overview from one or a few tracks

    • Accept optional server bind address, e.g.: for_runners run-server 127.0.0.1:8080

  • 02.04.2019 - v0.9.0:

    • NEW: Update complete environment installation with: for_runners update

    • Move the SQlite database to virtualenv root dir, e.g.: ~/Django-ForRunners/Django-ForRunners-database.sqlite3

    • NEW: save every gpx track to disk

    • NEW: Backup/export via cli: $ for_runners backup

    • NEW: export GPX Data via django-import-export

    • Create xdg-open desktop starter under linux here: ~/Django-ForRunners/Django-ForRunners

    • refactor the startup process:

      • auto loop the server process

      • open web browser on first start

      • enable autotask

    • rename for_runners_test_project to for_runners_project

  • 03.09.2018 - v0.8.1:

    • Fix “try-out” section in README, again ;(

  • 03.09.2018 - v0.8.0:

    • NEW: shell script for easier boot/install, see above

  • 02.09.2018 - v0.7.1:

    • Update to Django 2.1

    • Bugfix Tests

  • 02.09.2018 - v0.7.0:

    • Use dygraphs in GPX Track change admin view

    • Sync mouse over from Elevation/Headrate/Cadence dygraphs to leaflet open streep map

    • Fix “try-out” section in README (Thanks adsworth for reporting)

    • Add links from gpx tracks to other admin change view

    • Bugfixes

    • internals:

      • refactor stuff around track duration/length

      • move manipluation of list_display and list_filter contributed by adsworth

  • 19.07.2018 - v0.6.0:

    • NEW: event participation

    • NEW: costs of event participation (e.g.: entry fee for the competition, cost of a T-Shirt etc.)

    • NEW: Display statistics of events/costs per user and total

  • 04.07.2018 - v0.5.0:

    • remove Django-CMS

    • update to Django v2.0

    • NOTE: The migrations are simply replaced! So you must delete your database, e.g.: src/django-for-runners$ rm test_project_db.sqlite3

    • Add ‘net duration’ field, for the officially measured time and use it for calculations if available.

    • Create django manage command to fill some base data: $ ./manage.py fill_basedata

    • speedup by deactivating some django debug toolbar panels

  • 26.06.2018 - v0.4.0:

    • combine track filters with statistic views

    • NEW: GPX info (See length, point count and Average distance in meters between the points)

    • NEW: Display GPX metadata

    • Add ‘creator’ to every track and use it as changelist filter

    • remove Streetmap image generated via geotiler

    • Speedup by using a cache for gpxpy instances

  • 23.06.2018 - v0.3.0:

    • Start adding statistics (See screenshot above)

    • add weather information from metaweather.com to every track

  • 21.06.2018 - v0.2.0:

    • Display elevations, heart_rates and cadence_values if available

    • Add kilometer markers to OpenStreetMap

  • 15.06.2018 - v0.1.1:

    • a few bugfixes

  • 15.06.2018 - v0.1.0:

    • Render interactive OpenStreetMap track map with Leaflet JS

  • 12.06.2018 - v0.0.4:

    • Better Events model

    • GPX error handling

    • more tests

    • Bugfix for Python 3.5 (Geotiler needs Python 3.6 or later)

  • 12.06.2018 - v0.0.3:

    • display min/average/max heart rate

    • use autotask to generate the MAP in background

  • 31.05.2018 - v0.0.2:

    • generate SVG ‘icon’ from GPX track

  • v0.0.1 - 30.05.2018

    • Just create a pre-alpha release to save the PyPi package name ;)

credits

The whole thing is based on many excellent projects. Especially the following:

donation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-for-runners-0.10.1.tar.gz (441.8 kB view details)

Uploaded Source

Built Distributions

django_for_runners-0.10.1-py3.6.egg (454.1 kB view details)

Uploaded Source

django_for_runners-0.10.1-py2.py3-none-any.whl (471.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-for-runners-0.10.1.tar.gz.

File metadata

  • Download URL: django-for-runners-0.10.1.tar.gz
  • Upload date:
  • Size: 441.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/32.3.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.3

File hashes

Hashes for django-for-runners-0.10.1.tar.gz
Algorithm Hash digest
SHA256 91fffbf6b782b06f961c9574432f4a454ce2f57fe844ae56731b0e649db782d6
MD5 0e0e67c176f0d7b820eef56045fd6b7a
BLAKE2b-256 a3eec07d51c76f05e6bd226bd96a1564e5a9c2a5fef19b70110fd6ad6d44c5e7

See more details on using hashes here.

File details

Details for the file django_for_runners-0.10.1-py3.6.egg.

File metadata

  • Download URL: django_for_runners-0.10.1-py3.6.egg
  • Upload date:
  • Size: 454.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/32.3.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.3

File hashes

Hashes for django_for_runners-0.10.1-py3.6.egg
Algorithm Hash digest
SHA256 1af3d59fc31ab55b38a7cf18a03162ead27c996fe0698a1bd70338577f112f97
MD5 ff952b3f799a56b300601f18ebec37d0
BLAKE2b-256 d35d2be96c99e1a54f2797bdb99b929d8aceb740b459308af79b72936a6b773b

See more details on using hashes here.

File details

Details for the file django_for_runners-0.10.1-py2.py3-none-any.whl.

File metadata

  • Download URL: django_for_runners-0.10.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 471.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/32.3.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.3

File hashes

Hashes for django_for_runners-0.10.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c363ce732b6036ae97e751957e2f9bee0aa89075559b0d1b7e9a76d3cda9c330
MD5 7142ccc23a4b5de37435dd9e00d89383
BLAKE2b-256 6335a312cc608667a5820369d94ba0ed2f9ea69e274cad2d4215ee6cc3e5439f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page