ds
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
|
from django.contrib.admin.widgets import AdminDateWidget
|
||||||
|
import glob
|
||||||
|
|
||||||
class CsvForm(forms.Form):
|
class CsvForm(forms.Form):
|
||||||
file = forms.FileField(label='CSV File')
|
file = forms.FileField(label='CSV File')
|
||||||
@@ -7,3 +9,24 @@ class CsvForm(forms.Form):
|
|||||||
class TimeTeamForm(forms.Form):
|
class TimeTeamForm(forms.Form):
|
||||||
resulturl = forms.URLField()
|
resulturl = forms.URLField()
|
||||||
startorder = forms.IntegerField(initial=1,label='First result to process')
|
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,13 +7,15 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>{% block title %}Rowsandall Boatmovers{% endblock %}</title>
|
<title>{% block title %}Rowsandall Boatmovers{% endblock %}</title>
|
||||||
<link rel="stylesheet" href="/static/css/resetnew.css" />
|
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css"/>
|
||||||
<link rel="stylesheet" href="/static/fontawesome/css/fontawesome.min.css">
|
<link rel="stylesheet" type="text/css" href="/static/admin/css/widgets.css"/>
|
||||||
<link rel="stylesheet" href="/static/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/static/css/resetnew.css" />
|
||||||
<link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.12.0/css/all.css" integrity="sha384-ekOryaXPbeCpWQNxMwSWVvQ0+1VrStoPJq54shlYhR8HzQgig1v5fas6YgOqLoKz" crossorigin="anonymous">
|
<link rel="stylesheet" href="/static/fontawesome/css/fontawesome.min.css">
|
||||||
<link rel="stylesheet" href="/static/css/styles2.css">
|
<link rel="stylesheet" href="/static/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/static/css/text2.css" />
|
<link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.12.0/css/all.css" integrity="sha384-ekOryaXPbeCpWQNxMwSWVvQ0+1VrStoPJq54shlYhR8HzQgig1v5fas6YgOqLoKz" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="/static/css/rowsandall2.css" />
|
<link rel="stylesheet" href="/static/css/styles2.css">
|
||||||
|
<link rel="stylesheet" href="/static/css/text2.css" />
|
||||||
|
<link rel="stylesheet" href="/static/css/rowsandall2.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -43,3 +45,17 @@
|
|||||||
</html>
|
</html>
|
||||||
|
|
||||||
{% block scripts %} {% endblock %}
|
{% 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'),
|
name='race_delete_results'),
|
||||||
url(r'crew/(?P<id>\d+)/$',views.crew_view,name='crew_view'),
|
url(r'crew/(?P<id>\d+)/$',views.crew_view,name='crew_view'),
|
||||||
url(r'^$',views.boatmovers_view,name='boatmovers'),
|
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'),
|
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')
|
#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
|
from django.contrib import messages
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
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, TimeTeamForm
|
from boatmovers.forms import CsvForm, TimeTeamForm, DatesForm
|
||||||
from boatmovers.scrapers import *
|
from boatmovers.scrapers import *
|
||||||
#from rowers.rows import handle_uploaded_file
|
#from rowers.rows import handle_uploaded_file
|
||||||
import django_rq
|
import django_rq
|
||||||
@@ -98,6 +99,60 @@ def boatmovers_view(request):
|
|||||||
'new_races': new_races}
|
'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):
|
def race_view(request,id=0):
|
||||||
race = get_object_or_404(Race, pk=id)
|
race = get_object_or_404(Race, pk=id)
|
||||||
results = race.results.all().order_by('order')
|
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