Private
Public Access
1
0
This commit is contained in:
Sander Roosendaal
2022-06-29 21:36:40 +02:00
parent 76dec8d3ac
commit 966b5454d3
6 changed files with 103 additions and 0 deletions

5
boatmovers/forms.py Normal file
View File

@@ -0,0 +1,5 @@
from django import forms
class CsvForm(forms.Form):
file = forms.FileField(label='CSV File')
# comment = forms.CharField(required=False)

View File

@@ -0,0 +1,16 @@
{% extends "boatmovers_base.html" %}
{% block main %}
<h1>
{{ athlete.first_name }} {{ athlete.last_name }}
</h1>
<p>
<table>
{% for result in results %}
<tr>
<td>{{ result.order }}</td><td>{{ result.race.name }}</td>
</tr>
{% endfor %}
</table>
</p>
{% endblock %}

View File

@@ -0,0 +1,14 @@
{% extends "boatmovers_base.html" %}
{% block main %}
<h1>
{{ athlete.first_name }} {{ athlete.last_name }}
</h1>
<p>
<form method="post" nctype="multipart/form-data">
{{ form.as_p }}
<input type="hidden" name="action" value="create" />
<input type="submit" value="Submit"/>
</form>
</p>
{% endblock %}

View File

@@ -7,6 +7,9 @@
<p>
{{ race.date }}
</p>
<p>
<a target="_" href="{{ race.resulturl }}">Results</a>
</p>
<p>
<table>
<tr>

View File

@@ -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<id>\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<id>\d+)/$',views.race_view,name='race_view'),
url(r'race/(?P<id>\d+)/csv/$',views.race_add_csv,name='race_add_csv'),
url(r'race/(?P<id>\d+)/verify/$',views.race_verify,name='race_verify'),
url(r'race/(?P<id>\d+)/process/$',views.race_process,name='race_process'),
url(r'crew/(?P<id>\d+)/$',views.crew_view,name='crew_view'),

View File

@@ -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)