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> <p>
{{ race.date }} {{ race.date }}
</p> </p>
<p>
<a target="_" href="{{ race.resulturl }}">Results</a>
</p>
<p> <p>
<table> <table>
<tr> <tr>

View File

@@ -6,10 +6,12 @@ import boatmovers.views as views
urlpatterns = [ urlpatterns = [
url(r'athlete/add/$',views.AthleteCreateView.as_view(),name='athlete_add'), 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'crew/add/$',views.CrewCreateView.as_view(),name='crew_add'),
url(r'race/add/$',views.RaceCreateView.as_view(),name='race_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'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+)/$',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+)/verify/$',views.race_verify,name='race_verify'),
url(r'race/(?P<id>\d+)/process/$',views.race_process,name='race_process'), 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'), 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 django.views.generic.edit import CreateView
from boatmovers.models import Athlete, Crew, Race, Result from boatmovers.models import Athlete, Crew, Race, Result
import boatmovers.tasks as tasks import boatmovers.tasks as tasks
from boatmovers.forms import CsvForm
from boatmovers.scrapers import *
#from rowers.rows import handle_uploaded_file
import django_rq import django_rq
queue = django_rq.get_queue('high') queue = django_rq.get_queue('high')
@@ -55,6 +58,24 @@ class ResultCreateView(CreateView):
success_url = '/boatmovers/' 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): def boatmovers_view(request):
athletes = Athlete.objects.filter(trueskill_exposed__gt=0, athletes = Athlete.objects.filter(trueskill_exposed__gt=0,
dummy=False).order_by('-trueskill_exposed','-birth_year','last_name','first_name') 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})) 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): def race_process(request, id=0):
race = get_object_or_404(Race, pk=id) race = get_object_or_404(Race, pk=id)
job = queue.enqueue(tasks.race_process,race.id) job = queue.enqueue(tasks.race_process,race.id)