ds
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
from django import forms
|
||||
from django.contrib.admin.widgets import AdminDateWidget
|
||||
import glob
|
||||
|
||||
class CsvForm(forms.Form):
|
||||
file = forms.FileField(label='CSV File')
|
||||
@@ -7,3 +9,24 @@ class CsvForm(forms.Form):
|
||||
class TimeTeamForm(forms.Form):
|
||||
resulturl = forms.URLField()
|
||||
startorder = forms.IntegerField(initial=1,label='First result to process')
|
||||
|
||||
columns = ['Rank 1','Rank2','Score 1', 'Score 2','Positions Climbed','Score Increase']
|
||||
choices = [
|
||||
('Rank1','Rank 1'),
|
||||
('Rank2','Rank 2'),
|
||||
('PositionsClimbed','Positions Climbed'),
|
||||
('ScoreIncrease','Score Increase')
|
||||
]
|
||||
|
||||
filenameslist = glob.glob('media/boatmovers_*.csv')
|
||||
datechoices = [
|
||||
(a[17:-4],a[17:-4]) for a in filenameslist
|
||||
]
|
||||
|
||||
class DatesForm(forms.Form):
|
||||
date1 = forms.ChoiceField(choices=datechoices)
|
||||
date2 = forms.ChoiceField(choices=datechoices)
|
||||
sort_by = forms.ChoiceField(choices=choices)
|
||||
ascending = forms.BooleanField(initial=True,required=False)
|
||||
limit_to_first = forms.IntegerField(initial=100)
|
||||
gender = forms.ChoiceField(choices=(('all','all'),('f','f'),('m','m')))
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>{% block title %}Rowsandall Boatmovers{% endblock %}</title>
|
||||
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="/static/admin/css/widgets.css"/>
|
||||
<link rel="stylesheet" href="/static/css/resetnew.css" />
|
||||
<link rel="stylesheet" href="/static/fontawesome/css/fontawesome.min.css">
|
||||
<link rel="stylesheet" href="/static/fontawesome/css/all.min.css">
|
||||
@@ -43,3 +45,17 @@
|
||||
</html>
|
||||
|
||||
{% block scripts %} {% endblock %}
|
||||
<script defer type="text/javascript" src="/jsi18n/"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/core.js"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js">
|
||||
</script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/calendar.js"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/urlify.js"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/prepopulate.js"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/vendor/xregexp/xregexp.min.js"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/SelectBox.js"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/SelectFilter2.js"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/admin/DateTimeShortcuts.js"></script>
|
||||
<script defer type="text/javascript" src="/static/admin/js/inlines.js"></script>
|
||||
|
||||
@@ -21,6 +21,7 @@ urlpatterns = [
|
||||
name='race_delete_results'),
|
||||
url(r'crew/(?P<id>\d+)/$',views.crew_view,name='crew_view'),
|
||||
url(r'^$',views.boatmovers_view,name='boatmovers'),
|
||||
url(r'^compare/$',views.boatmovers_compareview,name='boatmovers_compare'),
|
||||
path(r'faq/', TemplateView.as_view(template_name='faq.html'), name='faq'),
|
||||
#url(r'(?P<filter>\b[0-9A-Fa-f]+\b)/$',views.boatmovers_view,name='boatmovers')
|
||||
]
|
||||
|
||||
@@ -5,12 +5,13 @@ from django.urls import reverse
|
||||
from django.contrib import messages
|
||||
|
||||
import collections
|
||||
import pandas as pd
|
||||
|
||||
# Create your views here.
|
||||
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, TimeTeamForm
|
||||
from boatmovers.forms import CsvForm, TimeTeamForm, DatesForm
|
||||
from boatmovers.scrapers import *
|
||||
#from rowers.rows import handle_uploaded_file
|
||||
import django_rq
|
||||
@@ -98,6 +99,60 @@ def boatmovers_view(request):
|
||||
'new_races': new_races}
|
||||
)
|
||||
|
||||
def boatmovers_compareview(request):
|
||||
form = DatesForm()
|
||||
df = pd.DataFrame()
|
||||
|
||||
if request.method == 'POST':
|
||||
form = DatesForm(request.POST)
|
||||
if form.is_valid():
|
||||
date1 = form.cleaned_data['date1']
|
||||
date2 = form.cleaned_data['date2']
|
||||
sort_by = form.cleaned_data['sort_by']
|
||||
ascending = form.cleaned_data['ascending']
|
||||
limit_to_first = form.cleaned_data['limit_to_first']
|
||||
gender = form.cleaned_data['gender']
|
||||
|
||||
file1 = "media/boatmovers_"+date1+".csv"
|
||||
df1 = pd.read_csv(file1)
|
||||
if gender in ['m','f']:
|
||||
df1 = df1[df1.gender==gender]
|
||||
df1.index = df1['id']
|
||||
df1 = df1.assign(rank=range(len(df1)))
|
||||
df1['rank'] = df1['rank']+1
|
||||
df1.rename(columns={'full_name':'Name','trueskill_exposed':'Score1','rank':'Rank1'},inplace=True)
|
||||
df1 = df1.loc[:, ['Name','club','gender','Score1','Rank1']]
|
||||
|
||||
file2 = "media/boatmovers_"+date2+".csv"
|
||||
df2 = pd.read_csv(file2)
|
||||
if gender in ['m','f']:
|
||||
df2 = df2[df2.gender==gender]
|
||||
df2.index = df2['id']
|
||||
df2 = df2.assign(rank=range(len(df2)))
|
||||
df2['rank'] = df2['rank']+1
|
||||
df2.rename(columns={'trueskill_exposed':'Score2','rank':'Rank2'},inplace=True)
|
||||
df2 = df2.loc[:, ['Rank2','Score2']]
|
||||
|
||||
df = df1.merge(df2,left_on='id',right_on='id')
|
||||
df['PositionsClimbed'] = df['Rank1']-df['Rank2']
|
||||
df['ScoreIncrease'] = df['Score2']-df['Score1']
|
||||
df = df.loc[:, ['Name', 'club', 'gender', 'Rank1', 'Rank2', 'PositionsClimbed',
|
||||
'Score1', 'Score2',
|
||||
'ScoreIncrease']]
|
||||
|
||||
df.sort_values(by='Rank2',inplace=True)
|
||||
df = df.head(limit_to_first)
|
||||
|
||||
df.sort_values(by=[sort_by],inplace=True,ascending=ascending)
|
||||
|
||||
return render(request,
|
||||
'boatmovers_compare.html',
|
||||
{
|
||||
'form':form,
|
||||
'df':df,
|
||||
})
|
||||
|
||||
|
||||
def race_view(request,id=0):
|
||||
race = get_object_or_404(Race, pk=id)
|
||||
results = race.results.all().order_by('order')
|
||||
|
||||
3056
ratings.csv
3056
ratings.csv
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user