From 966b5454d3a1da358985016adfbf3e5819dde391 Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Wed, 29 Jun 2022 21:36:40 +0200
Subject: [PATCH] fix
---
boatmovers/forms.py | 5 +++
boatmovers/templates/athlete.html | 16 ++++++++
boatmovers/templates/csvform.html | 14 +++++++
boatmovers/templates/race.html | 3 ++
boatmovers/urls.py | 2 +
boatmovers/views.py | 63 +++++++++++++++++++++++++++++++
6 files changed, 103 insertions(+)
create mode 100644 boatmovers/forms.py
create mode 100644 boatmovers/templates/athlete.html
create mode 100644 boatmovers/templates/csvform.html
diff --git a/boatmovers/forms.py b/boatmovers/forms.py
new file mode 100644
index 00000000..ca5efb59
--- /dev/null
+++ b/boatmovers/forms.py
@@ -0,0 +1,5 @@
+from django import forms
+
+class CsvForm(forms.Form):
+ file = forms.FileField(label='CSV File')
+ # comment = forms.CharField(required=False)
diff --git a/boatmovers/templates/athlete.html b/boatmovers/templates/athlete.html
new file mode 100644
index 00000000..ad92e6ce
--- /dev/null
+++ b/boatmovers/templates/athlete.html
@@ -0,0 +1,16 @@
+{% extends "boatmovers_base.html" %}
+
+{% block main %}
+
+ {{ athlete.first_name }} {{ athlete.last_name }}
+
+
+
+ {% for result in results %}
+
+ | {{ result.order }} | {{ result.race.name }} |
+
+ {% endfor %}
+
+
+{% endblock %}
diff --git a/boatmovers/templates/csvform.html b/boatmovers/templates/csvform.html
new file mode 100644
index 00000000..fe1e592a
--- /dev/null
+++ b/boatmovers/templates/csvform.html
@@ -0,0 +1,14 @@
+{% extends "boatmovers_base.html" %}
+
+{% block main %}
+
+ {{ athlete.first_name }} {{ athlete.last_name }}
+
+
+
+
+{% endblock %}
diff --git a/boatmovers/templates/race.html b/boatmovers/templates/race.html
index 3e92de8a..ba1a7def 100644
--- a/boatmovers/templates/race.html
+++ b/boatmovers/templates/race.html
@@ -7,6 +7,9 @@
{{ race.date }}
+
+ Results
+
diff --git a/boatmovers/urls.py b/boatmovers/urls.py
index a2933262..56483293 100644
--- a/boatmovers/urls.py
+++ b/boatmovers/urls.py
@@ -6,10 +6,12 @@ import boatmovers.views as views
urlpatterns = [
url(r'athlete/add/$',views.AthleteCreateView.as_view(),name='athlete_add'),
+ url(r'athlete/(?P\d+)/$',views.athlete_view,name='athlete_view'),
url(r'crew/add/$',views.CrewCreateView.as_view(),name='crew_add'),
url(r'race/add/$',views.RaceCreateView.as_view(),name='race_add'),
url(r'result/add/$',views.ResultCreateView.as_view(),name='result_add'),
url(r'race/(?P\d+)/$',views.race_view,name='race_view'),
+ url(r'race/(?P\d+)/csv/$',views.race_add_csv,name='race_add_csv'),
url(r'race/(?P\d+)/verify/$',views.race_verify,name='race_verify'),
url(r'race/(?P\d+)/process/$',views.race_process,name='race_process'),
url(r'crew/(?P\d+)/$',views.crew_view,name='crew_view'),
diff --git a/boatmovers/views.py b/boatmovers/views.py
index 5ff1700c..3b048a8c 100644
--- a/boatmovers/views.py
+++ b/boatmovers/views.py
@@ -10,6 +10,9 @@ import collections
from django.views.generic.edit import CreateView
from boatmovers.models import Athlete, Crew, Race, Result
import boatmovers.tasks as tasks
+from boatmovers.forms import CsvForm
+from boatmovers.scrapers import *
+#from rowers.rows import handle_uploaded_file
import django_rq
queue = django_rq.get_queue('high')
@@ -55,6 +58,24 @@ class ResultCreateView(CreateView):
success_url = '/boatmovers/'
+def athlete_view(request,id=0):
+ athlete = get_object_or_404(Athlete, pk=id)
+ crews = athlete.athlete_crews
+ resultslist = []
+
+ for crew in crews.values():
+ c = Crew.objects.get(id=crew['id'])
+ results = Result.objects.filter(crew=c)
+ for result in results:
+ resultslist.append(result)
+
+ return render(request,
+ 'athlete.html',
+ {
+ 'athlete':athlete,
+ 'results':resultslist,
+ })
+
def boatmovers_view(request):
athletes = Athlete.objects.filter(trueskill_exposed__gt=0,
dummy=False).order_by('-trueskill_exposed','-birth_year','last_name','first_name')
@@ -116,6 +137,48 @@ def race_verify(request, id=0):
return HttpResponseRedirect(reverse('race_view',kwargs={'id':race.id}))
+def handle_uploaded_file(f):
+ with open('media/results.csv', 'wb+') as destination:
+ for chunk in f.chunks():
+ destination.write(chunk)
+
+def race_add_csv(request, id=0):
+ race = get_object_or_404(Race, pk=id)
+ if race.verified or race.processed:
+ messages.error(request,"Cannot upload CSV file for processed or verified race")
+ url = reverse("race_view",kwargs={'id':id})
+ return HttpResponseRedirect(url)
+
+ form = CsvForm()
+ if request.method == 'POST':
+
+ form = CsvForm(request.POST, request.FILES)
+
+ if form.is_valid():
+ handle_uploaded_file(request.FILES['file'])
+ if race.crew_size == 1:
+ bankjes = ['Slag']
+ elif race.crew_size == 2:
+ bankjes = ['Slag','Boeg']
+ elif race.crew_size == 4:
+ bankjes = ['Slag','2','3','Boeg']
+ elif race.crew_size == 8:
+ bankjes = ['Slag','2','3','4','5','6','7','Boeg']
+
+ csv_reader('media/results.csv',race.id,bankjes=bankjes,gender=race.gender)
+
+ url = reverse('race_view',kwargs={'id':race.id})
+
+ return HttpResponseRedirect(url)
+
+
+ return render(request,
+ 'csvform.html',
+ {
+ 'race':race,
+ 'form':form,
+ })
+
def race_process(request, id=0):
race = get_object_or_404(Race, pk=id)
job = queue.enqueue(tasks.race_process,race.id)