reset css
This commit is contained in:
@@ -192,7 +192,7 @@ class Race(models.Model):
|
||||
athlete.trueskill_mu = rating.mu
|
||||
athlete.trueskill_sigma = rating.sigma
|
||||
athlete.save()
|
||||
u = 'Rating athlete {id} {f} {l} mu = {mu} sigma = {sigma} race {rid} {rname}'.format(
|
||||
u = '{id},{f},{l},{mu},{sigma},{rid},{rname}'.format(
|
||||
id = id,
|
||||
f = athlete.first_name,
|
||||
l = athlete.last_name,
|
||||
@@ -201,7 +201,7 @@ class Race(models.Model):
|
||||
rid = self.id,
|
||||
rname = self.name,
|
||||
)
|
||||
dologging('ratings.log',u)
|
||||
dologging('ratings.csv',u)
|
||||
|
||||
self.processed = True
|
||||
self.save()
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
|
||||
|
||||
<h1>
|
||||
Boat Movers Ranking
|
||||
Boat Movers Ranglijst
|
||||
</h1>
|
||||
<div>
|
||||
<a href="/boatmovers/?filter=f">Women</a>
|
||||
<a href="/boatmovers/?filter=m">Men</a>
|
||||
<a href="/boatmovers/">All</a>
|
||||
<a href="/boatmovers/?filter=f">Dames</a>
|
||||
<a href="/boatmovers/?filter=m">Heren</a>
|
||||
<a href="/boatmovers/">Alles</a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="column">
|
||||
@@ -52,27 +52,24 @@
|
||||
</div>
|
||||
<div class="column">
|
||||
<p>
|
||||
This page is an experimental ranking based on public race results,
|
||||
mainly from Dutch Masters
|
||||
rowing events. It is inspired by <a href="https://rowingstats.com/">Rowing Stats</a>.
|
||||
Deze ranglijst is een experimentele lijst gebaseerd op wedstrijduitslagen
|
||||
die op het internet te vinden zijn. De focus is op Nederlandse Masters-wedstrijden
|
||||
volgens KNRB-regels.
|
||||
De inspiratie voor deze site kwam van <a href="https://rowingstats.com/">Rowing Stats</a>.
|
||||
</p>
|
||||
<p>
|
||||
The best way to climb the ranking is to win races against crews with people who are higher
|
||||
in the ranking (unexpected win).
|
||||
Zie onze <a href="faq">F.A.Q.</a> voor een beschrijving van hoe wij de ranglijst
|
||||
berekenen.
|
||||
</p>
|
||||
<p>
|
||||
If your name shows up and you do not agree with that, contact us at info@rowsandall.com
|
||||
and we'll remove your name.
|
||||
Als je je naam hier wilt laten verwijderen, kan dat natuurlijk. Stuur ons
|
||||
een emailtje op info@rowsandall.com.
|
||||
</p>
|
||||
<p>
|
||||
If you'd like us to include a recent race result, use the "Add Race" link below. A race
|
||||
is a single start (during a regatta).
|
||||
Als je een uitslag mist, kun je ons dat laten weten door de "Nieuwe Race" link onder.
|
||||
</p>
|
||||
<p>
|
||||
You can also contact us at info@rowsandall.com.
|
||||
</p>
|
||||
<p>
|
||||
This ranking was based on results from following races:
|
||||
De ranglijst bevat nu resultaten van de volgende races:
|
||||
</p>
|
||||
<p>
|
||||
<table>
|
||||
@@ -87,8 +84,9 @@
|
||||
</table>
|
||||
</p>
|
||||
{% if user.is_authenticated and user.is_staff %}
|
||||
{% if new_races %}
|
||||
<p>
|
||||
Unprocessed races
|
||||
Niet verwerkte races:
|
||||
</p>
|
||||
<p>
|
||||
<table>
|
||||
@@ -102,19 +100,20 @@
|
||||
{% endfor %}
|
||||
</table>
|
||||
</p>
|
||||
{% endif %}
|
||||
<p>
|
||||
<a href="athlete/add/">Add Athlete</a>
|
||||
<a href="athlete/add/">Nieuwe Roeier</a>
|
||||
</p>
|
||||
<p>
|
||||
<a href="crew/add/">Add Crew</a>
|
||||
<a href="crew/add/">Nieuwe Ploeg</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
<p>
|
||||
<a href="race/add/">Add Race</a>
|
||||
<a href="race/add/">Nieuwe Race</a>
|
||||
</p>
|
||||
{% if user.is_authenticated and user.is_staff %}
|
||||
<p>
|
||||
<a href="result/add/">Add Result</a>
|
||||
<a href="result/add/">Nieuwe uitslag</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@@ -7,11 +7,19 @@
|
||||
<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" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div>
|
||||
<a href="/boatmovers/">Ranking</a>
|
||||
<a href="/boatmovers/">Ranglijst</a>
|
||||
<a href="/boatmovers/faq/">F.A.Q.</a>
|
||||
</div>
|
||||
{% if WARNING_MESSAGE != '' %}
|
||||
{{ WARNING_MESSAGE }}
|
||||
|
||||
137
boatmovers/templates/faq.html
Normal file
137
boatmovers/templates/faq.html
Normal file
@@ -0,0 +1,137 @@
|
||||
{% extends "boatmovers_base.html" %}
|
||||
|
||||
{% block main %}
|
||||
<h1>Hoe werkt de ranking?</h1>
|
||||
|
||||
<p>De ranking is gebaseerd op het “TrueSkill ranking system”. Voor iedere roeier worden twee variabelen
|
||||
berekend. De eerste variabele (“mu”) geeft aan hoe “goed” je gemiddeld bent (in goede uitslagen van
|
||||
wedstrijden). De tweede variabele (“sigma”) geeft de mate van onzekerheid in de schatting van “mu”.
|
||||
De score op de site is berekend als “mu – 3 sigma”. Vooral als je net begint, is dit een conservatieve
|
||||
schatting.
|
||||
</p>
|
||||
<p>Iedere keer als er een wedstrijduitslag wordt verwerkt waar jij aan hebt deelgenomen, wordt je score
|
||||
opnieuw berekend. Er wordt gekeken naar de (gemiddelde) scores van alle ploegen die aan de wedstrijd
|
||||
hebben deelgenomen. Dan wordt er gekeken hoe waarschijnlijk deze uitslag is, gebaseerd op de scores
|
||||
van de ploegen.</p>
|
||||
<p>
|
||||
Als je beter eindigt dan een ploeg met een hogere score voor de wedstrijd, zal jouw score stijgen.
|
||||
Andersom, als je lager eindigt dan een ploeg met een lagere score, zal jouw score dalen. Hoeveel je
|
||||
score stijgt of daalt, hangt af van hoe “onwaarschijnlijk” de uitslag is. Hoe onwaarschijnlijker je winst,
|
||||
hoe meer je stijgt.</p>
|
||||
<p>
|
||||
Ook de onzekerheid in je “mu” zal dalen door aan wedstrijden deel te nemen. Als je begint, zal het dus
|
||||
relatief makkelijk zijn om te stijgen in de ranking.</p>
|
||||
<p>
|
||||
<h1>Hoe kan ik stijgen op de ranking?</h1>
|
||||
<p>Hoe vaker je aan wedstrijden deelneemt, hoe beter we weten hoe goed je bent. Zeker in het begin kun
|
||||
je dus stijgen door veel wedstrijden te roeien. Je zult sneller stijgen door skiffwedstrijden te winnen dan
|
||||
met wedstrijden in de 8. Dit komt doordat een skiff-uitslag de mate van onzekerheid in je skills sneller
|
||||
doet dalen. Dit betekent niet dat je als 8-roeier niet bovenaan de ranking kunt staan. Je moet alleen
|
||||
meer wedstrijden roeien voordat je “boven komt drijven”.</p>
|
||||
<p>
|
||||
Ook zul je sneller stijgen (en dalen!) door deel te nemen aan wedstrijden met een groot startveld.
|
||||
Zodra je een paar wedstrijden hebt geroeid en het systeem een goed idee heeft van je niveau, is het
|
||||
zaak om beter te worden en ploegen te verslaan die boven je staan. Het is dus verstandig om deel te
|
||||
nemen aan goedbezochte wedstrijden.</p>
|
||||
<h1>
|
||||
Als het makkelijker is om te stijgen als je net begint, zijn dan ook mijn eerste races het belangrijkst
|
||||
voor de plaats in de ranglijst?</h1>
|
||||
<p>
|
||||
Nee, dat is niet zo. TrueSkill legt meer nadruk op recente uitslagen dan aan oudere uitslagen. Als je dus
|
||||
vaak tegen dezelfde ploegen start, zullen de meest recente winnaars hoger staan dan de oudere
|
||||
winnaars.</p>
|
||||
<h1>
|
||||
Is dit een “ranglijst aller tijden” of een seizoensranking?</h1>
|
||||
<p>Dit is een ranglijst aller tijden. Omdat veel roeiers in viertjes en achten starten, is een seizoen eigenlijk te
|
||||
kort om skiffeurs te kunnen voorbijgaan op de ranking. Daarom laat ik de ranglijst oneindig doorlopen.
|
||||
</p>
|
||||
<h1>Als ik hoog sta in de ranking, kan ik dan hoog blijven door niet meer aan wedstrijden deel te nemen?</h1>
|
||||
|
||||
|
||||
<p>Dat is inderdaad mogelijk. We gaan ervan uit dat je het leuker vindt om wedstrijden te roeien dan om
|
||||
hoog in de ranking te staan. Ook hopen we dat de ranking mensen aanspoort om elkaar uit te dagen aan
|
||||
wedstrijden mee te doen.</p>
|
||||
<p>
|
||||
Mocht blijken dat dit echt een probleem is, dan is het eenvoudig om een filter op laatste deelname aan
|
||||
een wedstrijd toe te voegen. Persoonlijk vind ik het ook wel mooi als “legendarische” roeiers lang na
|
||||
hun carriere hoog in de ranking blijven staan, ook al is er geen gelegenheid meer om tegen ze te starten.</p>
|
||||
|
||||
<h1>Ik roei altijd met dezelfde ploeg. Hoe kan het systeem een onderscheid in niveau bepalen tussen mijn
|
||||
ploegleden onderling?</h1>
|
||||
|
||||
<p>Als alle leden van jouw ploeg altijd alleen in deze ene ploeg starten, zal je altijd dezelfde score houden.
|
||||
Maar als een van jouw ploegleden ook wedstrijden start in een andere ploeg, dan zal jullie score gaan
|
||||
verschillen.</p>
|
||||
|
||||
<h1>Is het eerlijk om voor ploegen het gemiddelde niveau te gebruiken?</h1>
|
||||
|
||||
<p>Onze aanname is dat dat de eenvoudigste manier is die waarschijnlijk vrij eerlijk is. Als roeien alleen
|
||||
afhankelijk is van de power (ergometer score) die je in de benen hebt, klopt deze aanname 100 procent.
|
||||
Maar bij het roeien is ook techniek belangrijk, dus er zal (gelukkig) altijd een verrassingsaspect zijn.
|
||||
Waarom ontbreekt mijn ploeg in de uitslag?</p>
|
||||
|
||||
<p>In sommige uitslagen staan ploegen met roeiers met dezelfde naam. Dit is waarschijnlijk een foutje bij
|
||||
de inschrijving, of het kan zijn dat je toevallig tegen een naamgenoot geroeid hebt.
|
||||
Het systeem identificeert roeiers door hun voornaam/achternaam en geslacht. We hebben op dit
|
||||
moment geen goed systeem om onderscheid te maken tussen twee verschillende roeiers die toevallig
|
||||
allebei “Jan Visser” heten. Je zou de clubnaam kunnen gebruiken, maar soms wisselen roeiers van club.
|
||||
Ook staan in de uitslagen ploegen geïdentificeerd als “Willem III/RIC/Hoop” en is het onmogelijk om te
|
||||
zien welk ploeglid bij Willem III roeit en welk ploeglid bij De Hoop.</p>
|
||||
|
||||
<h1>Welke wedstrijden worden meegenomen?</h1>
|
||||
|
||||
<p>Op dit moment verwerken wij uitslagen van de volgende wedstrijden:
|
||||
<ul>
|
||||
<li>Heineken Roeivierkamp (einduitslag over alle afstanden)</li>
|
||||
<li>Head of the River Amstel</li>
|
||||
<li>Tweehead</li>
|
||||
<li>Skiffhead</li>
|
||||
<li>Spaarne Lenterace</li>
|
||||
<li>Dutch Masters Open (alleen uitslagen van races die zonder startverschil worden geroeid)</li>
|
||||
<li>Cottwich</li>
|
||||
<li>Eemhead</li>
|
||||
<li>Tromp Boat Races</li>
|
||||
<li>Novembervieren</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>Van deze wedstrijden nemen we uitslagen van veteranenvelden. We kijken niet naar het clubveld, of
|
||||
open velden.</p>
|
||||
|
||||
<p>De reden dat we deze wedstrijden kiezen is dat het goedbezochte wedstrijden zijn met een online
|
||||
uitslag die makkelijk te verwerken is (Time-Team, hoesnelwasik.nl). Het is lastig om wedstrijden te
|
||||
verwerken waar niet de namen van alle ploegleden zijn te achterhalen. Vaak wordt er een PDF-je
|
||||
gepubliceerd met alleen de naam van de slagroeier.</p>
|
||||
|
||||
<p>
|
||||
Dit betekent niet dat we niet open staan voor het toevoegen van nieuwe wedstrijden. Volg de “Add
|
||||
Race” link en vul de gegevens in. Wij krijgen dan een automatische email en gaan ernaar kijken.
|
||||
Kan ik ook een onderling duel aangaan met iemand en dan de uitslag mee laten tellen?</p>
|
||||
|
||||
<p>
|
||||
Het is belangrijk dat de uitslag van de wedstrijd onafhankelijk te controleren is. Het makkelijkst is dus af
|
||||
te spreken allebei aan een van de meetellende wedstrijden te starten, of ons te vragen een (onder
|
||||
KNRB-auspiciën geroeide) wedstrijd toe te voegen,
|
||||
waarvan de uitslag online staat met alle ploegleden.</p>
|
||||
|
||||
<h1>Ik wil niet op deze ranking staan. Kun je mij verwijderen?</h1>
|
||||
|
||||
<p>Ja, dat kan op twee manieren:
|
||||
<ol>
|
||||
<li>Ik kan zorgen dat je naam niet in de ranking vermeld wordt. Je scores worden dan wel gebruikt
|
||||
als je in ploegen start met andere mensen op de ranglijst. Je naam is dan nog wel zichtbaar als
|
||||
mensen op die ploegen klikken in de uitslagenlijst. Aangezien deze uitslagen identiek zijn aan
|
||||
wat al op het internet te vinden is, neem ik aan dat dit geen probleem is.
|
||||
</li>
|
||||
<li>Ik kan zorgen dat je uit de ranking verwijderd wordt en blijft. Bij het verwerken van uitslagen zal
|
||||
ik dan jouw hele ploeg moeten verwijderen. De consequentie is dat je ploegmaten alleen
|
||||
kunnen stijgen en dalen door wedstrijden zonder jou te roeien.
|
||||
</li>
|
||||
</ol>
|
||||
</p>
|
||||
|
||||
<p>De enige informatie in het systeem is je voornaam, achternaam, geslacht en in welke ploegen je bent
|
||||
gestart. Dit is informatie die in wedstrijduitslagen al beschikbaar is. Door in te schrijven voor deze
|
||||
wedstrijden heb je al ingestemd met het openbaar maken van jouw naam en ploeggegevens in de
|
||||
uitslag. Daarom vind ik het een redelijke aanname dat je geen bezwaar hebt tegen het opgenomen zijn
|
||||
in deze ranking, maar als je het vraagt haal ik je er met alle plezier vanaf.</p>
|
||||
{% endblock %}
|
||||
@@ -47,11 +47,17 @@
|
||||
<p>
|
||||
Race is not verified. <a href="verify/">Verify Race</a>
|
||||
</p>
|
||||
<p>
|
||||
<a href="/boatmovers/race/{{ race.id }}/deleteresults/">Remove all results</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if not race.verified and not race.processed %}
|
||||
<p>
|
||||
<a href="/boatmovers/result/add/">Add Result</a>
|
||||
</p>
|
||||
<p>
|
||||
<a href="/boatmovers/race/{{ race.id }}/csv/">Add Result CSV</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -2,6 +2,8 @@ from django.conf import settings
|
||||
from django.conf.urls import url, include
|
||||
from django.urls import path, re_path
|
||||
|
||||
from django.views.generic.base import TemplateView
|
||||
|
||||
import boatmovers.views as views
|
||||
|
||||
urlpatterns = [
|
||||
@@ -14,7 +16,10 @@ urlpatterns = [
|
||||
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'race/(?P<id>\d+)/deleteresults/$',views.race_delete_results,
|
||||
name='race_delete_results'),
|
||||
url(r'crew/(?P<id>\d+)/$',views.crew_view,name='crew_view'),
|
||||
url(r'^$',views.boatmovers_view,name='boatmovers'),
|
||||
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')
|
||||
]
|
||||
|
||||
@@ -188,6 +188,21 @@ def race_process(request, id=0):
|
||||
|
||||
return HttpResponseRedirect(reverse('race_view',kwargs={'id':race.id}))
|
||||
|
||||
def race_delete_results(request, id=0):
|
||||
race = get_object_or_404(Race, pk=id)
|
||||
results = race.results.all()
|
||||
|
||||
if not race.processed:
|
||||
for result in results:
|
||||
result.delete()
|
||||
messages.info(request,'Results have been removed')
|
||||
else:
|
||||
messages.error(request,'Cannot remove processed results')
|
||||
|
||||
url = reverse('race_view',kwargs={'id':race.id})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
def crew_view(request, id=0):
|
||||
crew = get_object_or_404(Crew, pk=id)
|
||||
athletes = crew.athletes.all().order_by("-trueskill_exposed")
|
||||
|
||||
1089
ratings.csv
Normal file
1089
ratings.csv
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user