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 %} + + + + + + + + + {% for course in courses %} + + + + + + {% endfor %} + +
Country Name
{{ course.country }} {{ course.name }}
+ {% 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 %} +
+ All Courses +
+ {% elif not team %} +
+ Ranking Pieces Only +
+ {% endif %} +
+ Glue Courses +
+

 

+ {% if team %} +
+ {% else %} + + {% endif %} +
+ +
+
+ +
+
+
+
+ + {% 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='',