fix
This commit is contained in:
5
boatmovers/forms.py
Normal file
5
boatmovers/forms.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from django import forms
|
||||
|
||||
class CsvForm(forms.Form):
|
||||
file = forms.FileField(label='CSV File')
|
||||
# comment = forms.CharField(required=False)
|
||||
16
boatmovers/templates/athlete.html
Normal file
16
boatmovers/templates/athlete.html
Normal 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 %}
|
||||
14
boatmovers/templates/csvform.html
Normal file
14
boatmovers/templates/csvform.html
Normal 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 %}
|
||||
@@ -7,6 +7,9 @@
|
||||
<p>
|
||||
{{ race.date }}
|
||||
</p>
|
||||
<p>
|
||||
<a target="_" href="{{ race.resulturl }}">Results</a>
|
||||
</p>
|
||||
<p>
|
||||
<table>
|
||||
<tr>
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user