Private
Public Access
1
0
This commit is contained in:
2023-09-20 22:35:34 +02:00
parent e994fd1bf3
commit 7dd62a9776
5 changed files with 3160 additions and 9 deletions

View File

@@ -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')))

View File

@@ -7,13 +7,15 @@
<html>
<head>
<title>{% block title %}Rowsandall Boatmovers{% endblock %}</title>
<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">
<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/styles2.css">
<link rel="stylesheet" href="/static/css/text2.css" />
<link rel="stylesheet" href="/static/css/rowsandall2.css" />
<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">
<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/styles2.css">
<link rel="stylesheet" href="/static/css/text2.css" />
<link rel="stylesheet" href="/static/css/rowsandall2.css" />
</head>
<body>
@@ -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>

View File

@@ -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')
]

View File

@@ -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')