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>
|
<p>
|
||||||
{{ race.date }}
|
{{ race.date }}
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<a target="_" href="{{ race.resulturl }}">Results</a>
|
||||||
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -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'),
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user