diff --git a/rowers/courses.py b/rowers/courses.py
index 71ccaec1..34a7b379 100644
--- a/rowers/courses.py
+++ b/rowers/courses.py
@@ -105,6 +105,10 @@ def kmltocourse(f):
return polygons
+from geopy.geocoders import Nominatim
+geolocator = Nominatim()
+
+
def createcourse(manager,name,polygons):
c = GeoCourse(manager=manager,name=name)
c.save()
@@ -115,6 +119,11 @@ def createcourse(manager,name,polygons):
pp.save()
j = 0
for point in p['points']:
+ if i==0 and j==0:
+ loc = geolocator.reverse((point['latitude'],point['longitude']))
+ country = loc.raw['address']['country']
+ c.country = country
+ c.save()
obj = GeoPoint(
latitude = point['latitude'],
longitude = point['longitude'],
diff --git a/rowers/models.py b/rowers/models.py
index c861e250..94964ccb 100644
--- a/rowers/models.py
+++ b/rowers/models.py
@@ -17,6 +17,7 @@ import os
import twitter
import re
import pytz
+
from django.conf import settings
from sqlalchemy import create_engine
import sqlalchemy as sa
@@ -31,6 +32,7 @@ from collections import OrderedDict
import types
+
from rowsandall_app.settings import (
TWEET_ACCESS_TOKEN_KEY,
TWEET_ACCESS_TOKEN_SECRET,
@@ -661,6 +663,7 @@ timezones = (
class GeoCourse(models.Model):
manager = models.ForeignKey(Rower)
name = models.CharField(max_length=150,blank=True)
+ country = models.CharField(max_length=150,blank=True)
def __unicode__(self):
name = self.name
diff --git a/rowers/templates/list_courses.html b/rowers/templates/list_courses.html
new file mode 100644
index 00000000..4f9db35e
--- /dev/null
+++ b/rowers/templates/list_courses.html
@@ -0,0 +1,135 @@
+{% extends "base.html" %}
+{% load staticfiles %}
+{% load rowerfilters %}
+
+{% block title %}Rowsandall Courses List{% endblock %}
+
+{% block scripts %}
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+
Courses
+
+ {% if courses %}
+
+
+
+ | Country |
+ Name |
+
+
+
+ {% for course in courses %}
+ {{ course.country }} |
+ {{ course.name }} |
+
+
+
+ {% endfor %}
+
+
+ {% else %}
+
No courses found
+ {% endif %}
+
+
+
+
+
+ {% if announcements %}
+
What's New?
+ {% for a in announcements %}
+
+
+ {{ a.created }}:
+ {{ a.announcement|urlize }}
+
+
+ {% endfor %}
+
+ {% endif %}
+
+
+
About
+
This site is a beta site, pioneering rowing data visualization and analysis. No warranties. The site's author is
+ Sander Roosendaal. A Masters rower.
+
+ Read his blog
+
+
+
+ 
+
+
+
+
+
+
+
+
+ {% if rankingonly and not team %}
+
+ {% elif not team %}
+
+ {% endif %}
+
+
+ {% if team %}
+
+
+
+
+ {% if courses.has_previous %}
+ {% if request.GET.q %}
+ <
+ {% else %}
+ <
+ {% endif %}
+ {% endif %}
+
+
+ Page {{ courses.number }} of {{ courses.paginator.num_pages }}.
+
+
+ {% if courses.has_next %}
+ {% if request.GET.q %}
+ >
+ {% else %}
+ >
+ {% endif %}
+ {% endif %}
+
+
+ {% endblock %}
diff --git a/rowers/urls.py b/rowers/urls.py
index e2772640..e980ffd8 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -143,6 +143,7 @@ urlpatterns = [
url(r'^u/(?P
\d+)/list-workouts/(?P\w+.*)/(?P\w+.*)$',views.workouts_view),
url(r'^list-workouts/(?P\w+.*)/(?P\w+.*)$',views.workouts_view),
url(r'^list-workouts/$',views.workouts_view),
+ url(r'^list-courses/$',views.courses_view),
url(r'^addmanual/$',views.addmanual_view),
url(r'^team-compare-select/team/(?P\d+)/(?P\w+.*)/(?P\w+.*)$',views.team_comparison_select),
url(r'^team-compare-select/team/(?P\d+)/$',views.team_comparison_select),
diff --git a/rowers/views.py b/rowers/views.py
index 16d1b947..f57602a0 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -6045,6 +6045,19 @@ def boxplot_view(request,userid=0,
})
+# List Courses
+@login_required()
+def courses_view(request):
+ r = getrower(request.user)
+
+ courses = GeoCourse.objects.all().order_by("country")
+
+ return render(request,'list_courses.html',
+ {'courses':courses,
+ 'rower':r,
+ })
+
+
# List Workouts
@login_required()
def workouts_view(request,message='',successmessage='',