diff --git a/boatmovers/__init__.py b/boatmovers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/boatmovers/admin.py b/boatmovers/admin.py new file mode 100644 index 00000000..07ac9e1b --- /dev/null +++ b/boatmovers/admin.py @@ -0,0 +1,36 @@ +from django.contrib import admin +from.models import Athlete, Crew, Race, Result +# Register your models here. + +class AthleteInline(admin.StackedInline): + model = Athlete + +class AthleteAdmin(admin.ModelAdmin): + list_display = ('first_name', 'last_name', 'birth_year') + +class CrewInline(admin.StackedInline): + model = Athlete + +class CrewAdmin(admin.ModelAdmin): + list_display = ('name',) + +class RaceInline(admin.StackedInline): + model = Race + +class RaceAdmin(admin.ModelAdmin): + list_display = ('name',) + +class ResultInline(admin.StackedInline): + model = Result + +class ResultAdmin(admin.ModelAdmin): + list_display = ('race','crew','order') + + + + + +admin.site.register(Athlete, AthleteAdmin) +admin.site.register(Crew, CrewAdmin) +admin.site.register(Race, RaceAdmin) +admin.site.register(Result, ResultAdmin) diff --git a/boatmovers/apps.py b/boatmovers/apps.py new file mode 100644 index 00000000..eb3806d9 --- /dev/null +++ b/boatmovers/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class BoatmoversConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'boatmovers' diff --git a/boatmovers/forms.py b/boatmovers/forms.py new file mode 100644 index 00000000..ca5efb59 --- /dev/null +++ b/boatmovers/forms.py @@ -0,0 +1,5 @@ +from django import forms + +class CsvForm(forms.Form): + file = forms.FileField(label='CSV File') + # comment = forms.CharField(required=False) diff --git a/boatmovers/migrations/0001_initial.py b/boatmovers/migrations/0001_initial.py new file mode 100644 index 00000000..f9b5cbb7 --- /dev/null +++ b/boatmovers/migrations/0001_initial.py @@ -0,0 +1,58 @@ +# Generated by Django 3.2.12 on 2022-06-22 17:41 + +import boatmovers.models +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Athlete', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_name', models.CharField(max_length=200)), + ('last_name', models.CharField(max_length=200)), + ('club', models.CharField(max_length=200)), + ('trueskill_mu', models.FloatField(default=25.0)), + ('trueskill_sigma', models.FloatField(default=8.333)), + ('birth_year', models.IntegerField(default=1972)), + ], + ), + migrations.CreateModel( + name='Crew', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=200)), + ('athletes', models.ManyToManyField(to='boatmovers.Athlete')), + ], + ), + migrations.CreateModel( + name='Race', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField(default=boatmovers.models.current_day)), + ('crew_size', models.IntegerField(default=1)), + ], + ), + migrations.CreateModel( + name='Result', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('order', models.PositiveIntegerField()), + ('crew', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='boatmovers.crew')), + ('race', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='boatmovers.race')), + ], + ), + migrations.AddField( + model_name='race', + name='resultlist', + field=models.ManyToManyField(through='boatmovers.Result', to='boatmovers.Crew'), + ), + ] diff --git a/boatmovers/migrations/0002_alter_athlete_unique_together.py b/boatmovers/migrations/0002_alter_athlete_unique_together.py new file mode 100644 index 00000000..7572d257 --- /dev/null +++ b/boatmovers/migrations/0002_alter_athlete_unique_together.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.12 on 2022-06-22 17:49 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0001_initial'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='athlete', + unique_together={('first_name', 'last_name', 'birth_year')}, + ), + ] diff --git a/boatmovers/migrations/0003_auto_20220622_1753.py b/boatmovers/migrations/0003_auto_20220622_1753.py new file mode 100644 index 00000000..bc367b79 --- /dev/null +++ b/boatmovers/migrations/0003_auto_20220622_1753.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.12 on 2022-06-22 17:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0002_alter_athlete_unique_together'), + ] + + operations = [ + migrations.AddField( + model_name='race', + name='name', + field=models.CharField(default='Race1', max_length=200), + preserve_default=False, + ), + migrations.AddField( + model_name='race', + name='resulturl', + field=models.URLField(null=True), + ), + migrations.AlterUniqueTogether( + name='race', + unique_together={('date', 'name')}, + ), + ] diff --git a/boatmovers/migrations/0004_auto_20220622_1835.py b/boatmovers/migrations/0004_auto_20220622_1835.py new file mode 100644 index 00000000..94691a93 --- /dev/null +++ b/boatmovers/migrations/0004_auto_20220622_1835.py @@ -0,0 +1,22 @@ +# Generated by Django 3.2.12 on 2022-06-22 18:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0003_auto_20220622_1753'), + ] + + operations = [ + migrations.AddField( + model_name='race', + name='verified', + field=models.BooleanField(default=False), + ), + migrations.AlterUniqueTogether( + name='result', + unique_together={('crew', 'race', 'order')}, + ), + ] diff --git a/boatmovers/migrations/0005_athlete_gender.py b/boatmovers/migrations/0005_athlete_gender.py new file mode 100644 index 00000000..41de5e0a --- /dev/null +++ b/boatmovers/migrations/0005_athlete_gender.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2022-06-22 18:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0004_auto_20220622_1835'), + ] + + operations = [ + migrations.AddField( + model_name='athlete', + name='gender', + field=models.CharField(choices=[('m', 'M'), ('f', 'F')], default='m', max_length=200), + preserve_default=False, + ), + ] diff --git a/boatmovers/migrations/0006_auto_20220624_0811.py b/boatmovers/migrations/0006_auto_20220624_0811.py new file mode 100644 index 00000000..6b234db8 --- /dev/null +++ b/boatmovers/migrations/0006_auto_20220624_0811.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.12 on 2022-06-24 08:11 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0005_athlete_gender'), + ] + + operations = [ + migrations.AddField( + model_name='athlete', + name='trueskill_exposed', + field=models.FloatField(default=0), + ), + migrations.AlterField( + model_name='athlete', + name='trueskill_sigma', + field=models.FloatField(default=8.333333333333334), + ), + ] diff --git a/boatmovers/migrations/0007_auto_20220624_0820.py b/boatmovers/migrations/0007_auto_20220624_0820.py new file mode 100644 index 00000000..4c4355fa --- /dev/null +++ b/boatmovers/migrations/0007_auto_20220624_0820.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.12 on 2022-06-24 08:20 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0006_auto_20220624_0811'), + ] + + operations = [ + migrations.AlterField( + model_name='result', + name='crew', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='results', to='boatmovers.crew'), + ), + migrations.AlterField( + model_name='result', + name='race', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='results', to='boatmovers.race'), + ), + ] diff --git a/boatmovers/migrations/0008_auto_20220624_1135.py b/boatmovers/migrations/0008_auto_20220624_1135.py new file mode 100644 index 00000000..d5492e47 --- /dev/null +++ b/boatmovers/migrations/0008_auto_20220624_1135.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.12 on 2022-06-24 11:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0007_auto_20220624_0820'), + ] + + operations = [ + migrations.AddField( + model_name='race', + name='processed', + field=models.BooleanField(default=True), + ), + migrations.AlterField( + model_name='race', + name='crew_size', + field=models.IntegerField(default=1, verbose_name='Nr of rowers per crew (1, 2, 4, 8)'), + ), + ] diff --git a/boatmovers/migrations/0009_alter_race_crew_size.py b/boatmovers/migrations/0009_alter_race_crew_size.py new file mode 100644 index 00000000..4207ae30 --- /dev/null +++ b/boatmovers/migrations/0009_alter_race_crew_size.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-06-24 12:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0008_auto_20220624_1135'), + ] + + operations = [ + migrations.AlterField( + model_name='race', + name='crew_size', + field=models.IntegerField(choices=[(1, 1), (2, 2), (4, 4), (8, 8)], default=1, verbose_name='Nr of rowers per crew (1, 2, 4, 8)'), + ), + ] diff --git a/boatmovers/migrations/0010_remove_race_resultlist.py b/boatmovers/migrations/0010_remove_race_resultlist.py new file mode 100644 index 00000000..e6d9403e --- /dev/null +++ b/boatmovers/migrations/0010_remove_race_resultlist.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.12 on 2022-06-24 12:50 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0009_alter_race_crew_size'), + ] + + operations = [ + migrations.RemoveField( + model_name='race', + name='resultlist', + ), + ] diff --git a/boatmovers/migrations/0011_alter_race_processed.py b/boatmovers/migrations/0011_alter_race_processed.py new file mode 100644 index 00000000..f8b81cb7 --- /dev/null +++ b/boatmovers/migrations/0011_alter_race_processed.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-06-24 12:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0010_remove_race_resultlist'), + ] + + operations = [ + migrations.AlterField( + model_name='race', + name='processed', + field=models.BooleanField(default=False), + ), + ] diff --git a/boatmovers/migrations/0012_auto_20220625_1328.py b/boatmovers/migrations/0012_auto_20220625_1328.py new file mode 100644 index 00000000..9a0b5552 --- /dev/null +++ b/boatmovers/migrations/0012_auto_20220625_1328.py @@ -0,0 +1,33 @@ +# Generated by Django 3.2.12 on 2022-06-25 13:28 + +import boatmovers.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0011_alter_race_processed'), + ] + + operations = [ + migrations.AlterField( + model_name='crew', + name='athletes', + field=models.ManyToManyField(related_name='crews', to='boatmovers.Athlete'), + ), + migrations.AlterField( + model_name='race', + name='date', + field=models.DateField(default=boatmovers.models.current_day, verbose_name='Race Date'), + ), + migrations.AlterField( + model_name='race', + name='resulturl', + field=models.URLField(null=True, verbose_name='URL Link to results'), + ), + migrations.AlterUniqueTogether( + name='result', + unique_together={('crew', 'order')}, + ), + ] diff --git a/boatmovers/migrations/0013_alter_crew_athletes.py b/boatmovers/migrations/0013_alter_crew_athletes.py new file mode 100644 index 00000000..8f9634c4 --- /dev/null +++ b/boatmovers/migrations/0013_alter_crew_athletes.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-06-25 13:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0012_auto_20220625_1328'), + ] + + operations = [ + migrations.AlterField( + model_name='crew', + name='athletes', + field=models.ManyToManyField(related_name='athlete_crews', to='boatmovers.Athlete'), + ), + ] diff --git a/boatmovers/migrations/0014_athlete_dummy.py b/boatmovers/migrations/0014_athlete_dummy.py new file mode 100644 index 00000000..f3aec5e7 --- /dev/null +++ b/boatmovers/migrations/0014_athlete_dummy.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-06-29 15:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0013_alter_crew_athletes'), + ] + + operations = [ + migrations.AddField( + model_name='athlete', + name='dummy', + field=models.BooleanField(default=False), + ), + ] diff --git a/boatmovers/migrations/0015_alter_athlete_unique_together.py b/boatmovers/migrations/0015_alter_athlete_unique_together.py new file mode 100644 index 00000000..ee5e6ac1 --- /dev/null +++ b/boatmovers/migrations/0015_alter_athlete_unique_together.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.12 on 2022-06-29 17:44 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0014_athlete_dummy'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='athlete', + unique_together={('first_name', 'last_name', 'birth_year', 'gender')}, + ), + ] diff --git a/boatmovers/migrations/0016_race_gender.py b/boatmovers/migrations/0016_race_gender.py new file mode 100644 index 00000000..ffedd044 --- /dev/null +++ b/boatmovers/migrations/0016_race_gender.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-06-29 18:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('boatmovers', '0015_alter_athlete_unique_together'), + ] + + operations = [ + migrations.AddField( + model_name='race', + name='gender', + field=models.CharField(choices=[('m', 'M'), ('f', 'F')], default='m', max_length=200), + ), + ] diff --git a/boatmovers/migrations/__init__.py b/boatmovers/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/boatmovers/models.py b/boatmovers/models.py new file mode 100644 index 00000000..ff758841 --- /dev/null +++ b/boatmovers/models.py @@ -0,0 +1,256 @@ +from django.db import models +from django import forms +from django.core.exceptions import ValidationError + +import collections + +import datetime +from django.utils import timezone +import trueskill + +from rowers.utils import dologging + +def current_day(ttz=None): + if ttz is None: + return (datetime.datetime.now(tz=timezone.utc)).date() + return datetime.datetime.utcnow().astimezone(pytz.timezone(ttz)).date() + +# Create your models here. +class Athlete(models.Model): + first_name = models.CharField(max_length=200) + last_name = models.CharField(max_length=200) + club = models.CharField(max_length=200) + trueskill_mu = models.FloatField(default=25.) + trueskill_sigma = models.FloatField(default=25./3.) + trueskill_exposed = models.FloatField(default=0) + birth_year = models.IntegerField(default=1972) + gender = models.CharField(max_length=200, choices=(('m','M'),('f','F'))) + dummy = models.BooleanField(default=False) + + class Meta: + unique_together = ('first_name','last_name','birth_year','gender') + + def __str__(self): + return u'{f} {l}'.format(f = self.first_name, l=self.last_name) + + def save(self, *args, **kwargs): + name = '{f} {l}'.format(f = self.first_name, l = self.last_name) + athletes = Athlete.objects.filter(gender=self.gender) + if self.pk is not None: + athletes = athletes.exclude(pk=self.pk) + for a in athletes: + aname = '{f} {l}'.format(f = a.first_name, l = a.last_name) + if name == aname: + raise ValidationError("Duplicate:{id}".format(id=a.id)) + rating = trueskill.Rating(self.trueskill_mu, self.trueskill_sigma) + self.trueskill_exposed = trueskill.expose(rating) + + super(Athlete, self).save(*args, **kwargs) + + def get_absolute_url(self): + return "/boatmovers/athlete/%i/" % self.id + +class athleteForm(forms.ModelForm): + class Meta: + model = Athlete + fields = ['first_name','last_name','club','birth_year'] + +class Crew(models.Model): + athletes = models.ManyToManyField(Athlete, related_name='athlete_crews') + name = models.CharField(max_length=200) + + def __str__(self): + return u'{n}'.format(n=self.name) + + def save(self, *args, **kwargs): + super(Crew, self).save(*args, **kwargs) + + def size(self): + return self.athletes.all().count() + +class crewForm(forms.ModelForm): + class Meta: + model = Crew + fields = ['name', 'athletes'] + +class Race(models.Model): + name = models.CharField(max_length=200) + resulturl = models.URLField(null=True, verbose_name='URL Link to results') + date = models.DateField(default=current_day, verbose_name='Race Date') + #resultlist = models.ManyToManyField(Result,through='Result') + crew_size = models.IntegerField(default=1,verbose_name='Nr of rowers per crew (1, 2, 4, 8)', + choices=((1,1),(2,2),(4,4),(8,8))) + verified = models.BooleanField(default=False) + processed = models.BooleanField(default=False) + gender = models.CharField(max_length=200,choices=(('m','M'),('f','F')),default='m') + + class Meta: + unique_together = ('date','name') + + def __str__(self): + return self.name + + def save(self, *args, **kwargs): + results = self.results.all() + crews = [] + athletes = [] + for result in results: + crews.append(result.crew.id) + for athlete in result.crew.athletes.all(): + athletes.append(athlete.id) + + if len(crews) != len(set(crews)): + raise ValidationError( + "Cannot have the same crew more than one time in a race" + ) + + #if len(athletes) != len(set(athletes)): + # raise ValidationError( + # "Cannot have the same athlete in different crews in a race" + # ) + + super(Race, self).save(*args, **kwargs) + + def validate(self, verbose=False): + if len(self.results.all()) < 2: + if verbose: + print('False: Less than 2 results') + self.verified = False + self.save() + return False + + l = self.results.all()[0].crew.size() + for result in self.results.all(): + if result.crew.size() != l: + if verbose: + print('False: crew {c} has different crew size'.format(c=result.crew)) + self.verified = False + self.save() + return False + + if l not in [1,2,4,8]: + if verbose: + print('False: Crew size not in 1, 2, 4, or 8') + self.verified = False + self.save() + return False + + results = self.results.all() + crews = [] + athletes = [] + for result in results: + crews.append(result.crew.id) + for athlete in result.crew.athletes.all(): + if not athlete.dummy: + athletes.append(athlete.id) + + if len(crews) != len(set(crews)): + if verbose: + print('False: Same crew competing twice') + self.verified = False + self.save() + return False + + if len(athletes) != len(set(athletes)): + if verbose: + print('False: Duplicate athletes') + self.verified = False + self.save() + return False + + self.verified = True + self.save() + + def process(self): + if not self.verified: + if not self.validate(): + return False + + if self.processed: + return True + + # validate the race + results = self.results.all().order_by('order') + crews = [] + ranks = [] + + for result in results: + crew = result.crew + crewdict = {} + for athlete in crew.athletes.all(): + crewdict[athlete.id] = trueskill.Rating( + athlete.trueskill_mu, athlete.trueskill_sigma) + crews.append(crewdict) + ranks.append(result.order) + + rated_crews = trueskill.rate(crews, ranks) + + for crew in rated_crews: + + for id, rating in crew.items(): + athlete = Athlete.objects.get(id=id) + athlete.trueskill_mu = rating.mu + athlete.trueskill_sigma = rating.sigma + athlete.save() + u = '{id},{f},{l},{mu},{sigma},{rid},{rname}'.format( + id = id, + f = athlete.first_name, + l = athlete.last_name, + mu = rating.mu, + sigma = rating.sigma, + rid = self.id, + rname = self.name, + ) + dologging('ratings.csv',u) + + self.processed = True + self.save() + + return True + + +class raceForm(forms.ModelForm): + class Meta: + model = Race + fields = ['name','date','resulturl','crew_size','gender'] + + +class Result(models.Model): + crew = models.ForeignKey(Crew, on_delete=models.CASCADE, + related_name='results') + race = models.ForeignKey(Race, on_delete=models.CASCADE, + related_name='results') + order = models.PositiveIntegerField() + + class Meta: + unique_together = ('crew','order') + + def __str__(self): + return u'{r}: {o} - {c}'.format( + r=self.race, + o=self.order, + c=self.crew, + ) + + def save(self, *args, **kwargs): + allresults = self.race.results.all() + athletes = [] + for result in allresults: + for athlete in result.crew.athletes.all(): + athletes.append(athlete.id) + if result.crew.id == self.crew.id: + raise ValidationError( + "Cannot have the same crew more than one time in a race" + ) + if len(athletes) != len(set(athletes)): + print([item for item, count in collections.Counter(athletes).items() if count>1]) + raise ValidationError( + "Cannot have the same athlete in different crews in a race" + ) + + super(Result,self).save(*args, **kwargs) + +class resultForm(forms.ModelForm): + class Meta: + model = Result + fields = ['crew','race','order'] diff --git a/boatmovers/results.py b/boatmovers/results.py new file mode 100644 index 00000000..168a51a6 --- /dev/null +++ b/boatmovers/results.py @@ -0,0 +1,111 @@ +import trueskill +from trueskill import Rating, rate + +class Athlete: + def __init__(self, first_name, last_name, club, birth_year, mu=25, sigma=25./3.): + self.first_name = first_name + self.last_name = last_name + self.club = club + self.birth_year = birth_year + self.rating = Rating(mu, sigma) + + def expose(self): + return trueskill.expose(self.rating) + + def setrating(self, rating): + self.rating = rating + + def __str__(self): + return u'{f} {l} {c} - {s:.2f}'.format( + f=self.first_name, + l=self.last_name, + c=self.club, + s=self.expose() + ) + +class Crew: + def __init__(self, athletes, name): + self.athletes = athletes + self.name = name + + def size(self): + return len(self.athletes) + + def __str__(self): + return u'{n}'.format(n=self.name) + +class Result: + def __init__(self, crews, name, validated=False, processed=False): + self.crews = crews + self.name = name + self.verified = validated + self.processed = processed + + def validate(self): + # crews need to be more than 2 + if len(self.crews) < 2: + self.verified = False + return False + + # crews need to be all same length + l = self.crews[0].size() + for crew in self.crews: + if crew.size() != l: + self.verified = False + return False + + # crew length need to be 1, 2, 4 or 8 + if l not in [1,2,4,8]: + self.verified = False + return False + + # cannot have same crew multiple times in same race + if len(self.crews) != len(set(self.crews)): + self.verified = False + return False + + # cannot have same athletes in different crews in same race + allathletes = [] + for crew in self.crews: + for athlete in crew.athletes: + allathletes.append(athlete) + + if len(allathletes) != len(set(allathletes)): + self.verified = False + return False + + self.verified = True + return self.verified + + def process(self): + if not self.verified: + if not self.validate(): + return False + + if self.processed: + return True + + # validate the race + ratings = list([athlete.rating for athlete in crew.athletes] for crew in self.crews) + result = rate(ratings, ranks = list(range(len(self.crews)))) + + i = 0 + j = 0 + + for c in result: + for rating in c: + self.crews[i].athletes[j].setrating(rating) + j += 1 + i += 1 + j = 0 + + self.processed = True + + return True + + def __str__(self): + s = self.name + ': ' + for crew in self.crews: + s = s + str(crew) + ', ' + + return s[:-2] diff --git a/boatmovers/scrapers.py b/boatmovers/scrapers.py new file mode 100644 index 00000000..d67e2fea --- /dev/null +++ b/boatmovers/scrapers.py @@ -0,0 +1,153 @@ +import re +from bs4 import BeautifulSoup +import requests +from boatmovers.models import * +import pandas as pd +from django.core.exceptions import ValidationError + +url_heineken = '' + + +def csv_reader(filename,raceid,clubcol='Ploeg',bankjes=['Slag'],uitslag='Pos',gender='m', + startorder=1): + race = Race.objects.get(id=raceid) + nr = race.crew_size + + df = pd.read_csv(filename) + # replace column names if different + + for row in df.itertuples(): + order = row[df.columns.get_loc(uitslag)+1] + crewname = row[df.columns.get_loc(clubcol)+1] + crew = Crew(name=crewname) + crew.save() + + for i in range(nr): + try: + naam = row[df.columns.get_loc(bankjes[i])+1].split(' ') + first_name = ' '.join(naam[:-1]) + last_name = naam[-1] + dummy = False + except AttributeError: + try: + first_name = str(row.Slag) + last_name = '' + dummy=False + except TypeError: + first_name = 'Unknown' + last_name = 'Athlete' + dummy=True + athletes = Athlete.objects.filter(first_name = first_name, + last_name = last_name, + gender=gender) + if len(athletes) >= 1: + athlete = athletes[0] + else: + athlete = Athlete(first_name=first_name, + last_name=last_name, + club = crewname, + gender=gender, + dummy=dummy) + try: + athlete.save() + except ValidationError as e: + text, id = e.message.split(':') + athlete = Athlete.objects.get(id=id) + + print(athlete) + + crew.athletes.add(athlete) + + result = Result( + crew = crew, + race = race, + order = order + ) + try: + if order>=startorder: + result.save() + except ValidationError as e: + print(e) + + print(' ') + + +def time_team_scraper(url,raceid,gender='m',startorder=1): + race = Race.objects.get(id=raceid) + nr = race.crew_size + r = requests.get(url) + soup = BeautifulSoup(r.content,features='lxml') + tbl = soup.find('table') + order = 1 + + str = re.search('(.*)results(.*)',url) + base = str.groups()[0] + + for tr in tbl.findAll("tr"): + trs = tr.findAll("td") + for each in trs: + try: + link = each.find('a')['href'] + name = each.find('a').contents[0] + except (TypeError, IndexError): + link = '' + name ='' + + if 'entry' in link: + print(order, name) + + dfs = pd.read_html(base+link[3:]) + df = dfs[0] + namen = df['naam'] + + crew = Crew(name=name) + crew.save() + for i in range(nr): + try: + names = df['naam'][i].split(' ') + first_name = ' '.join(names[:-1]) + last_name = names[-1] + dummy=False + except AttributeError: + try: + first_name = str(df['naam'][i]) + last_name = '' + dummy=False + except TypeError: + first_name = 'Unknown' + last_name = 'Athlete' + dummy=True + athletes = Athlete.objects.filter(first_name = first_name, + last_name = last_name) + if len(athletes) >= 1: + athlete = athletes[0] + else: + athlete = Athlete(first_name=first_name, + last_name=last_name, + club = name, + gender=gender, + dummy=dummy) + try: + athlete.save() + except ValidationError as e: + text, id = e.message.split(':') + athlete = Athlete.objects.get(id=id) + + print(athlete) + + crew.athletes.add(athlete) + + result = Result( + crew = crew, + race = race, + order = order + ) + if order >= startorder: + try: + result.save() + except ValidationError as e: + print(e) + + order += 1 + + print('') diff --git a/boatmovers/tasks.py b/boatmovers/tasks.py new file mode 100644 index 00000000..d45d7d4d --- /dev/null +++ b/boatmovers/tasks.py @@ -0,0 +1,23 @@ +import os +os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true" +from YamJam import yamjam +CFG = yamjam()['rowsandallapp'] + +try: + os.environ.setdefault("DJANGO_SETTINGS_MODULE",CFG['settings_name']) +except KeyError: + os.environ.setdefault("DJANGO_SETTINGS_MODULE","rowsandall_app.settings") + +from django.core.wsgi import get_wsgi_application +application = get_wsgi_application() + +from boatmovers.models import Race +from rq import get_current_job +from django_rq import job + +@job +def race_process(id): + job = get_current_job() + + race = Race.objects.get(id=id) + return race.process() diff --git a/boatmovers/templates/athlete.html b/boatmovers/templates/athlete.html new file mode 100644 index 00000000..ad92e6ce --- /dev/null +++ b/boatmovers/templates/athlete.html @@ -0,0 +1,16 @@ +{% extends "boatmovers_base.html" %} + +{% block main %} +

+ {{ athlete.first_name }} {{ athlete.last_name }} +

+

+ + {% for result in results %} + + + + {% endfor %} +
{{ result.order }}{{ result.race.name }}
+

+{% endblock %} diff --git a/boatmovers/templates/boatmovers.html b/boatmovers/templates/boatmovers.html new file mode 100644 index 00000000..a250b196 --- /dev/null +++ b/boatmovers/templates/boatmovers.html @@ -0,0 +1,124 @@ +{% extends "boatmovers_base.html" %} +{% block main %} + + + +

+ Boat Movers Ranglijst +

+
+ Dames + Heren + Alles +
+
+
+

+ + + + + + + + + + + + {% for athlete in athletes %} + + + + + + + + + {% if user.is_authenticated and user.is_staff %} + + {% endif %} + + {% endfor %} + +
RankScoreName ClubGender
{{ forloop.counter }}{{ athlete.trueskill_exposed|floatformat:2 }}{{ athlete.first_name }}{{ athlete.last_name }}{{ athlete.club }}{{ athlete.gender }}resultsedit
+

+
+
+

+ 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 Rowing Stats. +

+

+ Zie onze F.A.Q. voor een beschrijving van hoe wij de ranglijst + berekenen. +

+

+ Als je je naam hier wilt laten verwijderen, kan dat natuurlijk. Stuur ons + een emailtje op info@rowsandall.com. +

+

+ Als je een uitslag mist, kun je ons dat laten weten door de "Nieuwe Race" link onder. +

+

+ De ranglijst bevat nu resultaten van de volgende races: +

+

+ + {% for race in races %} + + + + + {% endfor %} +
{{ race.date }}{{ race.name }} + View Race +
+

+{% if user.is_authenticated and user.is_staff %} +{% if new_races %} +

+ Niet verwerkte races: +

+

+ + {% for race in new_races %} + + + + + {% endfor %} +
{{ race.date }}{{ race.name }} + Manage Race +
+

+{% endif %} +

+ Nieuwe Roeier +

+

+ Nieuwe Ploeg +

+{% endif %} +

+ Nieuwe Race +

+{% if user.is_authenticated and user.is_staff %} +

+ Nieuwe uitslag +

+{% endif %} +
+{% endblock %} diff --git a/boatmovers/templates/boatmovers/athlete_form.html b/boatmovers/templates/boatmovers/athlete_form.html new file mode 100644 index 00000000..da989c98 --- /dev/null +++ b/boatmovers/templates/boatmovers/athlete_form.html @@ -0,0 +1,7 @@ +{% extends "boatmovers_base.html" %} +{% block main %} +
{% csrf_token %} + {{ form.as_p }} + +
+{% endblock %} diff --git a/boatmovers/templates/boatmovers/crew_form.html b/boatmovers/templates/boatmovers/crew_form.html new file mode 100644 index 00000000..a9b32c5f --- /dev/null +++ b/boatmovers/templates/boatmovers/crew_form.html @@ -0,0 +1,4 @@ +
{% csrf_token %} + {{ form.as_p }} + +
diff --git a/boatmovers/templates/boatmovers/race_form.html b/boatmovers/templates/boatmovers/race_form.html new file mode 100644 index 00000000..7d58d666 --- /dev/null +++ b/boatmovers/templates/boatmovers/race_form.html @@ -0,0 +1,8 @@ +{% extends "boatmovers_base.html" %} +{% block main %} +

Create new race

+
{% csrf_token %} + {{ form.as_p }} + +
+{% endblock %} diff --git a/boatmovers/templates/boatmovers/result_form.html b/boatmovers/templates/boatmovers/result_form.html new file mode 100644 index 00000000..da989c98 --- /dev/null +++ b/boatmovers/templates/boatmovers/result_form.html @@ -0,0 +1,7 @@ +{% extends "boatmovers_base.html" %} +{% block main %} +
{% csrf_token %} + {{ form.as_p }} + +
+{% endblock %} diff --git a/boatmovers/templates/boatmovers_base.html b/boatmovers/templates/boatmovers_base.html new file mode 100644 index 00000000..832b3484 --- /dev/null +++ b/boatmovers/templates/boatmovers_base.html @@ -0,0 +1,41 @@ +{% load leaflet_tags %} +{% load cookielaw_tags %} + +{% block filters %} +{% endblock %} + + + + {% block title %}Rowsandall Boatmovers{% endblock %} + + + + + + + + + + +
+ Ranglijst + F.A.Q. +
+ {% if WARNING_MESSAGE != '' %} + {{ WARNING_MESSAGE }} + {% endif %} + {% if messages %} + {% for message in messages %} +

+ {{ message|safe }} +

+ {% endfor %} + {% endif %} + + {% block main %} + + {% endblock %} + + + + {% block scripts %} {% endblock %} diff --git a/boatmovers/templates/crew.html b/boatmovers/templates/crew.html new file mode 100644 index 00000000..074882fb --- /dev/null +++ b/boatmovers/templates/crew.html @@ -0,0 +1,22 @@ +{% extends "boatmovers_base.html" %} +{% block main %} +

+ {{ crew.name }} +

+

+ + + + + + + {% for athlete in athletes %} + + + + + + {% endfor %} +
Athlete Score
{{ athlete.first_name }}{{ athlete.last_name }}{{ athlete.trueskill_exposed|floatformat:2 }}
+

+{% endblock %} diff --git a/boatmovers/templates/csvform.html b/boatmovers/templates/csvform.html new file mode 100644 index 00000000..483c4a0e --- /dev/null +++ b/boatmovers/templates/csvform.html @@ -0,0 +1,14 @@ +{% extends "boatmovers_base.html" %} + +{% block main %} +

+ {{ race.name }} +

+

+

{% csrf_token %} + {{ form.as_p }} + + +
+

+{% endblock %} diff --git a/boatmovers/templates/faq.html b/boatmovers/templates/faq.html new file mode 100644 index 00000000..d1b82851 --- /dev/null +++ b/boatmovers/templates/faq.html @@ -0,0 +1,137 @@ +{% extends "boatmovers_base.html" %} + +{% block main %} +

Hoe werkt de ranking?

+ +

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. +

+

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.

+

+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.

+

+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.

+

+

Hoe kan ik stijgen op de ranking?

+

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”.

+

+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.

+

+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?

+

+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.

+

+Is dit een “ranglijst aller tijden” of een seizoensranking?

+

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. +

+

Als ik hoog sta in de ranking, kan ik dan hoog blijven door niet meer aan wedstrijden deel te nemen?

+ + +

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.

+

+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.

+ +

Ik roei altijd met dezelfde ploeg. Hoe kan het systeem een onderscheid in niveau bepalen tussen mijn +ploegleden onderling?

+ +

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.

+ +

Is het eerlijk om voor ploegen het gemiddelde niveau te gebruiken?

+ +

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?

+ +

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.

+ +

Welke wedstrijden worden meegenomen?

+ +

Op dit moment verwerken wij uitslagen van de volgende wedstrijden: +

+

+

Van deze wedstrijden nemen we uitslagen van veteranenvelden. We kijken niet naar het clubveld, of +open velden.

+ +

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.

+ +

+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?

+ +

+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.

+ +

Ik wil niet op deze ranking staan. Kun je mij verwijderen?

+ +

Ja, dat kan op twee manieren: +

    +
  1. 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. +
  2. +
  3. 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. +
  4. +
+

+ +

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.

+{% endblock %} diff --git a/boatmovers/templates/race.html b/boatmovers/templates/race.html new file mode 100644 index 00000000..ee3e2d57 --- /dev/null +++ b/boatmovers/templates/race.html @@ -0,0 +1,63 @@ +{% extends "boatmovers_base.html" %} + +{% block main %} +

+ {{ race.name }} +

+

+ {{ race.date }} +

+

+ Results +

+

+ + + + + + {% for result in results %} + + + + {% if result.crew.id in duplicate_crews %} + + {% elif result.crew.id in duplicate_athletes_crews %} + + {% endif %} + + {% endfor %} +
OrderCrew
{{ result.order }}{{ result.crew.name }}!!
+

+{% if user.is_authenticated and user.is_staff %} +{% if race.verified %} +

+ Race has been verified +

+{% if race.processed %} +

+ Race has been processed +

+{% else %} +

+ Race is not processed. Process Race +

+{% endif %} +{% else %} +

+ Race is not verified. Verify Race +

+

+ Remove all results +

+{% endif %} +{% if not race.verified and not race.processed %} +

+ Add Result +

+

+ Add Result CSV +

+{% endif %} +{% endif %} +{% endblock %} diff --git a/boatmovers/tests.py b/boatmovers/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/boatmovers/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/boatmovers/urls.py b/boatmovers/urls.py new file mode 100644 index 00000000..45590356 --- /dev/null +++ b/boatmovers/urls.py @@ -0,0 +1,25 @@ +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 = [ + url(r'athlete/add/$',views.AthleteCreateView.as_view(),name='athlete_add'), + url(r'athlete/(?P\d+)/$',views.athlete_view,name='athlete_view'), + url(r'crew/add/$',views.CrewCreateView.as_view(),name='crew_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'race/(?P\d+)/$',views.race_view,name='race_view'), + url(r'race/(?P\d+)/csv/$',views.race_add_csv,name='race_add_csv'), + url(r'race/(?P\d+)/verify/$',views.race_verify,name='race_verify'), + url(r'race/(?P\d+)/process/$',views.race_process,name='race_process'), + url(r'race/(?P\d+)/deleteresults/$',views.race_delete_results, + name='race_delete_results'), + url(r'crew/(?P\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\b[0-9A-Fa-f]+\b)/$',views.boatmovers_view,name='boatmovers') +] diff --git a/boatmovers/views.py b/boatmovers/views.py new file mode 100644 index 00000000..06aeb984 --- /dev/null +++ b/boatmovers/views.py @@ -0,0 +1,215 @@ +from django.shortcuts import render +from django.http import HttpResponse, HttpResponseRedirect +from django.shortcuts import get_object_or_404 +from django.urls import reverse +from django.contrib import messages + +import collections + +# 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 +from boatmovers.scrapers import * +#from rowers.rows import handle_uploaded_file +import django_rq +queue = django_rq.get_queue('high') + +class AthleteCreateView(CreateView): + model = Athlete + fields = [ + 'first_name', + 'last_name', + 'birth_year', + 'gender', + 'club', + ] + success_url = '/boatmovers/' + +class CrewCreateView(CreateView): + model = Crew + fields = [ + 'name', + 'athletes' + ] + + success_url = '/boatmovers/' + +class RaceCreateView(CreateView): + model = Race + fields = [ + 'name', + 'resulturl', + 'date', + 'crew_size', + 'gender', + #'resultlist', + ] + + success_url = '/boatmovers/' + +class ResultCreateView(CreateView): + model = Result + fields = [ + 'crew', + 'race', + 'order' + ] + + 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): + athletes = Athlete.objects.filter(trueskill_exposed__gt=0, + dummy=False).order_by('-trueskill_exposed','-birth_year','last_name','first_name') + + filter = request.GET.get('filter','all') + + if filter == 'm': + athletes = athletes.exclude(gender='f') + elif filter == 'f': + athletes = athletes.exclude(gender='m') + + races = Race.objects.filter(verified=True,processed=True).order_by('-date') + new_races = Race.objects.filter(processed=False).order_by('date') + + return render(request, + 'boatmovers.html', + {'athletes':athletes, + 'races': races, + 'new_races': new_races} + ) + +def race_view(request,id=0): + race = get_object_or_404(Race, pk=id) + results = race.results.all().order_by('order') + + crews = [] + athletes = [] + + for result in results: + crews.append(result.crew.id) + for athlete in result.crew.athletes.all(): + athletes.append(athlete.id) + + # duplicates + duplicate_athletes = [item for item, count in collections.Counter(athletes).items() if count>1] + duplicate_crews = [item for item, count in collections.Counter(crews).items() if count>1] + duplicate_athletes_crews = [] + for athlete_id in duplicate_athletes: + athlete = Athlete.objects.get(id=athlete_id) + crews = [crew.id for crew in athlete.athlete_crews.all()] + for crew in crews: + duplicate_athletes_crews.append(crew) + + + return render(request, + 'race.html', + { + 'race':race, + 'results':results, + 'duplicate_athletes':duplicate_athletes, + 'duplicate_crews':duplicate_crews, + 'duplicate_athletes_crews':duplicate_athletes_crews + } + ) + +def race_verify(request, id=0): + race = get_object_or_404(Race, pk=id) + outcome = race.validate() + + 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): + race = get_object_or_404(Race, pk=id) + job = queue.enqueue(tasks.race_process,race.id) + #outcome = race.process() + messages.info(request,"Your race is being processed. Reload to get the new status.") + + 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") + + return render(request, + 'crew.html', + { + 'crew':crew, + 'athletes':athletes + }) diff --git a/cvkbrno/views.py b/cvkbrno/views.py index 8caeeca8..4075a23a 100644 --- a/cvkbrno/views.py +++ b/cvkbrno/views.py @@ -64,29 +64,29 @@ def distancecount(u): # sum km own rows theoutings = Outing.objects.filter(rower=member).filter(status="completed") for o in theoutings: - cumdistance += o.distance - oyear = o.starttime.year - oweek = o.starttime.date().isocalendar()[1] - omonth = o.starttime.month - if thisyear == oyear: - yeardistance += o.distance - if thismonth == omonth: - monthdistance += o.distance - if weeknr == oweek: - weekdistance += o.distance + cumdistance += o.distance + oyear = o.starttime.year + oweek = o.starttime.date().isocalendar()[1] + omonth = o.starttime.month + if thisyear == oyear: + yeardistance += o.distance + if thismonth == omonth: + monthdistance += o.distance + if weeknr == oweek: + weekdistance += o.distance theoutings = Outing.objects.filter(otherrowers=member).filter(status="completed") for o in theoutings: - cumdistance += o.distance - oyear = o.starttime.year - oweek = o.starttime.date().isocalendar()[1] - omonth = o.starttime.month - if thisyear == oyear: - yeardistance += o.distance - if thismonth == omonth: - monthdistance += o.distance - if weeknr == oweek: - weekdistance += o.distance + cumdistance += o.distance + oyear = o.starttime.year + oweek = o.starttime.date().isocalendar()[1] + omonth = o.starttime.month + if thisyear == oyear: + yeardistance += o.distance + if thismonth == omonth: + monthdistance += o.distance + if weeknr == oweek: + weekdistance += o.distance return [cumdistance,yeardistance,monthdistance,weekdistance] @@ -102,16 +102,16 @@ def distancecountb(boat): # sum km own rows theoutings = Outing.objects.filter(boat=boat).filter(status="completed") for o in theoutings: - cumdistance += o.distance - oyear = o.starttime.year - oweek = o.starttime.date().isocalendar()[1] - omonth = o.starttime.month - if thisyear == oyear: - yeardistance += o.distance - if thismonth == omonth: - monthdistance += o.distance - if weeknr == oweek: - weekdistance += o.distance + cumdistance += o.distance + oyear = o.starttime.year + oweek = o.starttime.date().isocalendar()[1] + omonth = o.starttime.month + if thisyear == oyear: + yeardistance += o.distance + if thismonth == omonth: + monthdistance += o.distance + if weeknr == oweek: + weekdistance += o.distance return [cumdistance,yeardistance,monthdistance,weekdistance] @@ -123,7 +123,7 @@ def getmembers_json(u): members = Member.objects.all().filter(contributions=True).filter(club=THISCLUB).exclude(user=u).order_by('user__last_name') dd = {} for m in members: - dd[m.user.id] = m.user.first_name+' '+m.user.last_name + dd[m.user.id] = m.user.first_name+' '+m.user.last_name return json.dumps(dd) @@ -134,63 +134,63 @@ def thisclub_member(user): def thisclub_admin(user): if user.is_authenticated(): - member = Member.objects.get(user=user) - result = user.is_authenticated() and member.club==THISCLUB and \ - (member.status in ["administrator","coach"]) + member = Member.objects.get(user=user) + result = user.is_authenticated() and member.club==THISCLUB and \ + (member.status in ["administrator","coach"]) else: - result = False + result = False return result def conflicting_reservations(boat,starttime,endtime): thisboatoutings = Outing.objects.filter(boat=boat).exclude(status="completed") - + check = False message = "" # starttime = LOCALTIMEZONE.localize(starttime) - + for outing in thisboatoutings: - if (outing.status == "active"): - if outing.starttime+datetime.timedelta(hours=OUTINGDURATIONHOURS)>starttime: - check = True - message = _("Boat is on the water at that time") - if (outing.status == "race"): - # if boat goes on transport in two hours from reservation time - if (outing.starttime < starttime+datetime.timedelta(hours=RACEBLOCKHOURS)): - check = True - message = _("Boat is planned to go on transport at that time") - # if boat is out racing during reservation time - if (outing.endtime > starttime): - check = True - message = _("Boat is at races at that time") - # if boat is already back frmo racing during reservation time - if (outing.endtime <= starttime): - check = False - message = "" - if (outing.status == "reservation"): - # check if our reservation end time is before - # or our reservation start time is - # after this reservation - - if (outing.starttime < endtime and outing.endtime > starttime): - check = True - message = _("Conflicting reservations") + if (outing.status == "active"): + if outing.starttime+datetime.timedelta(hours=OUTINGDURATIONHOURS)>starttime: + check = True + message = _("Boat is on the water at that time") + if (outing.status == "race"): + # if boat goes on transport in two hours from reservation time + if (outing.starttime < starttime+datetime.timedelta(hours=RACEBLOCKHOURS)): + check = True + message = _("Boat is planned to go on transport at that time") + # if boat is out racing during reservation time + if (outing.endtime > starttime): + check = True + message = _("Boat is at races at that time") + # if boat is already back frmo racing during reservation time + if (outing.endtime <= starttime): + check = False + message = "" + if (outing.status == "reservation"): + # check if our reservation end time is before + # or our reservation start time is + # after this reservation - if (outing.endtime > starttime) and (outing.starttime < starttime): - check = True - message = _("Conflicting reservations") - if (outing.status == "race"): - # check if our reservation end time is before - # or our reservation start time is - # after this reservation - - if (outing.starttime-datetime.timedelta(RACEBLOCKHOURS) < endtime and outing.endtime > starttime): - check = True - message = _("Boat will go to races at that time") + if (outing.starttime < endtime and outing.endtime > starttime): + check = True + message = _("Conflicting reservations") - if (outing.endtime > starttime) and (outing.starttime-datetime.timedelta(RACEBLOCKHOURS) < starttime): - check = True - message = _("Boat is at races at that time") + if (outing.endtime > starttime) and (outing.starttime < starttime): + check = True + message = _("Conflicting reservations") + if (outing.status == "race"): + # check if our reservation end time is before + # or our reservation start time is + # after this reservation + + if (outing.starttime-datetime.timedelta(RACEBLOCKHOURS) < endtime and outing.endtime > starttime): + check = True + message = _("Boat will go to races at that time") + + if (outing.endtime > starttime) and (outing.starttime-datetime.timedelta(RACEBLOCKHOURS) < starttime): + check = True + message = _("Boat is at races at that time") return check,message @@ -198,18 +198,18 @@ def cleanoldreservations(): reservations = Outing.objects.filter(status="reservation") now = timezone.now() for reservation in reservations: - dt = reservation.starttime - if dt < now-datetime.timedelta(minutes=RESERVATIONEXPIRYMINUTES): - reservation.delete() + dt = reservation.starttime + if dt < now-datetime.timedelta(minutes=RESERVATIONEXPIRYMINUTES): + reservation.delete() # code to change boats that go on transport and remove boats that have returned from transport races = Outing.objects.filter(status="race") for race in races: - if now > race.starttime-datetime.timedelta(hours=RACEBLOCKHOURS): - race.boat.status="races" - race.boat.save() - if now > race.endtime: - race.boat.status="hangar" - race.boat.save() + if now > race.starttime-datetime.timedelta(hours=RACEBLOCKHOURS): + race.boat.status="races" + race.boat.save() + if now > race.endtime: + race.boat.status="hangar" + race.boat.save() def get_damagedboats(): damagedboats = Boat.objects.filter(status="damaged") @@ -224,38 +224,38 @@ def get_availableboats(m,t): # add boats from allowed categories for category in m.categories.all(): - thiscategoryboats = hangarboats.filter(categories=category) - for theboat in thiscategoryboats: - thisboatreservations = Outing.objects.filter(status="reservation",boat=theboat) - addboat = True - # the below should go to a subroutine - # do not allow to add boats that go on transport or are reserved - # in the near future - for res in thisboatreservations: - if (res.starttime < starttime+datetime.timedelta(hours=OUTINGDURATIONHOURS)): - addboat = False - if res.rower == m: - addboat = True - if (res.endtime): - if (res.endtime > starttime): - addboat = False - if res.rower == m: - addboat=True - thisboatrace = Outing.objects.filter(status="race",boat=theboat) - for race in thisboatrace: - if (race.starttime < starttime+datetime.timedelta(hours=RACEBLOCKHOURS)) and (race.endtime > starttime): - addboat = False - race.boat.status="races" - race.boat.save() - if (race.endtime < starttime): - addboat = True - race.boat.status="hangar" - race.boat.save() + thiscategoryboats = hangarboats.filter(categories=category) + for theboat in thiscategoryboats: + thisboatreservations = Outing.objects.filter(status="reservation",boat=theboat) + addboat = True + # the below should go to a subroutine + # do not allow to add boats that go on transport or are reserved + # in the near future + for res in thisboatreservations: + if (res.starttime < starttime+datetime.timedelta(hours=OUTINGDURATIONHOURS)): + addboat = False + if res.rower == m: + addboat = True + if (res.endtime): + if (res.endtime > starttime): + addboat = False + if res.rower == m: + addboat=True + thisboatrace = Outing.objects.filter(status="race",boat=theboat) + for race in thisboatrace: + if (race.starttime < starttime+datetime.timedelta(hours=RACEBLOCKHOURS)) and (race.endtime > starttime): + addboat = False + race.boat.status="races" + race.boat.save() + if (race.endtime < starttime): + addboat = True + race.boat.status="hangar" + race.boat.save() + + if addboat: + allowedboats += [theboat] - if addboat: - allowedboats += [theboat] - return list(set(allowedboats)) @@ -272,7 +272,7 @@ def get_availableboats_reservation(m,t): # add boats from available categories for category in m.categories.all(): - allowedboats += hangarboats.filter(categories=category) + allowedboats += hangarboats.filter(categories=category) return list(set(allowedboats)) @@ -297,18 +297,18 @@ def login_user_view(request,activeoutings=get_active_outings(),reservations=get_ request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE username = password = '' if request.POST: - username = request.POST['username'] - password = request.POST['password'] + username = request.POST['username'] + password = request.POST['password'] - user = authenticate(username=username, password=password) - if user is not None: + user = authenticate(username=username, password=password) + if user is not None: if user.is_active: login(request, user) - url = reverse(base_view) + url = reverse(base_view) return HttpResponseRedirect(url) return render(request,'cvkbrno_login.html', - {'activeoutings':get_active_outings(), - 'reservations':get_future_reservations()}) + {'activeoutings':get_active_outings(), + 'reservations':get_future_reservations()}) def change_language_view(request,languagecode): USER_LANGUAGE = languagecode @@ -325,12 +325,12 @@ def base_view(request): member = Member.objects.get(user=request.user) activeoutings = Outing.objects.filter(status="active",rower=member) if (len(activeoutings)!=0): - # we are still out - url = reverse(closeouting_view) - return HttpResponseRedirect(url) + # we are still out + url = reverse(closeouting_view) + return HttpResponseRedirect(url) else: - url = reverse(createouting_view) - return HttpResponseRedirect(url) + url = reverse(createouting_view) + return HttpResponseRedirect(url) @@ -343,7 +343,7 @@ def logout_then_login(request): url = reverse(base_view) return HttpResponseRedirect(url) - + @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def boats_admin_view(request,message="",successmessage=""): @@ -351,13 +351,13 @@ def boats_admin_view(request,message="",successmessage=""): theboats = Boat.objects.all().order_by("boatcode") theoutings = Outing.objects.exclude(status="reservation").exclude(status="race").order_by("-starttime")[0:20] return render(request, - TEMPLATEPREFIX+'boats_admin.html', - {'theboats':theboats, - 'theoutings':theoutings, - 'message':message, - 'successmessage':successmessage, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + TEMPLATEPREFIX+'boats_admin.html', + {'theboats':theboats, + 'theoutings':theoutings, + 'message':message, + 'successmessage':successmessage, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") @@ -365,12 +365,12 @@ def categories_admin_view(request,message="",successmessage=""): cleanoldreservations() thecats = BoatCategory.objects.all().order_by("name") return render(request, - TEMPLATEPREFIX+'categories_admin.html', - {'thecats':thecats, - 'message':message, - 'successmessage':successmessage, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + TEMPLATEPREFIX+'categories_admin.html', + {'thecats':thecats, + 'message':message, + 'successmessage':successmessage, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def members_admin_view(request,message="",successmessage=""): @@ -379,126 +379,126 @@ def members_admin_view(request,message="",successmessage=""): return render(request, - TEMPLATEPREFIX+'members_admin.html', - {'themembers':themembers, - 'message':message, - 'successmessage':successmessage, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) - + TEMPLATEPREFIX+'members_admin.html', + {'themembers':themembers, + 'message':message, + 'successmessage':successmessage, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def members_work_admin_view(request,message="",successmessage=""): cleanoldreservations() theworks = MemberWork.objects.filter(status='planned') return render(request, - TEMPLATEPREFIX+'memberswork_admin.html', - {'theworks':theworks, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + TEMPLATEPREFIX+'memberswork_admin.html', + {'theworks':theworks, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def members_work_add_view(request,message="",successmessage=""): cleanoldreservations() if request.method == 'POST': - # Form was submitted - form = MemberWorkCreateForm(request.POST) + # Form was submitted + form = MemberWorkCreateForm(request.POST) - if form.is_valid(): - # do something - res = addmemberwork(request.POST) - func = res[0] - message = res[1] - successmessage = res[2] - theid = res[3] - kwargs = {} - if successmessage != "": - kwargs['successmessage'] = successmessage.encode('utf8') - if message != "": - kwargs['message'] = message.encode('utf8') + if form.is_valid(): + # do something + res = addmemberwork(request.POST) + func = res[0] + message = res[1] + successmessage = res[2] + theid = res[3] + kwargs = {} + if successmessage != "": + kwargs['successmessage'] = successmessage.encode('utf8') + if message != "": + kwargs['message'] = message.encode('utf8') - theworks = MemberWork.objects.filter(status='planned') + theworks = MemberWork.objects.filter(status='planned') # args['theworks'] = theworks - url = reverse(func,kwargs = kwargs) - - return HttpResponseRedirect(url) - else: - return render(request, - TEMPLATEPREFIX+'memberswork_add_form.html', - {'form':form, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user), - } - ) - + url = reverse(func,kwargs = kwargs) + + return HttpResponseRedirect(url) else: - form = MemberWorkCreateForm() - if (message != ""): - return render(request, - TEMPLATEPREFIX+'memberswork_add_form.html', - {'form':form, - 'message':message, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - else: - - return render(request, - TEMPLATEPREFIX+'memberswork_add_form.html', - {'form':form, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) + return render(request, + TEMPLATEPREFIX+'memberswork_add_form.html', + {'form':form, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user), + } + ) + + else: + form = MemberWorkCreateForm() + if (message != ""): + return render(request, + TEMPLATEPREFIX+'memberswork_add_form.html', + {'form':form, + 'message':message, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + else: + + return render(request, + TEMPLATEPREFIX+'memberswork_add_form.html', + {'form':form, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def boats_admin_delete_confirm_view(request,id): theboat = Boat.objects.get(id=id) return render(request, - TEMPLATEPREFIX+'boat_delete_confirm.html', - {'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + TEMPLATEPREFIX+'boat_delete_confirm.html', + {'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def outing_admin_view(request,id): theouting = Outing.objects.get(id=id) return render(request, - TEMPLATEPREFIX+'outing_admin.html', - {'outing':theouting, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + TEMPLATEPREFIX+'outing_admin.html', + {'outing':theouting, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def categories_admin_delete_confirm_view(request,id): thecategory = BoatCategory.objects.get(id=id) return render(request, - TEMPLATEPREFIX+'categories_delete_confirm.html', - {'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + TEMPLATEPREFIX+'categories_delete_confirm.html', + {'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def members_admin_delete_confirm_view(request,id): themember = Member.objects.get(id=id) return render(request, - TEMPLATEPREFIX+'members_delete_confirm.html', - {'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + TEMPLATEPREFIX+'members_delete_confirm.html', + {'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def boats_admin_delete_view(request,id): try: - theboat = Boat.objects.get(id=id) - theboat.delete() + theboat = Boat.objects.get(id=id) + theboat.delete() except: - pass + pass url = reverse(boats_admin_view,kwargs={ - 'successmessage': _("boat deleted").encode('utf8'), - }) + 'successmessage': _("boat deleted").encode('utf8'), + }) return HttpResponseRedirect(url) @@ -506,29 +506,29 @@ def boats_admin_delete_view(request,id): @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def members_admin_delete_view(request,id): try: - themember = Member.objects.get(id=id) - themember.user.delete() - themember.delete() + themember = Member.objects.get(id=id) + themember.user.delete() + themember.delete() except: - pass + pass url = reverse(members_admin_view,kwargs={ - 'successmessage': _("member deleted").encode('utf8'), - }) + 'successmessage': _("member deleted").encode('utf8'), + }) return HttpResponseRedirect(url) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def categories_admin_delete_view(request,id): try: - thecategory = BoatCategory.objects.get(id=id) - thecategory.delete() + thecategory = BoatCategory.objects.get(id=id) + thecategory.delete() except: - pass + pass url = reverse(categories_admin_view,kwargs={ - 'successmessage': _("category deleted").encode('utf8'), - }) + 'successmessage': _("category deleted").encode('utf8'), + }) return HttpResponseRedirect(url) @@ -537,417 +537,417 @@ def categories_admin_delete_view(request,id): @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def boats_admin_add_view(request,message="",successmessage=""): if request.method == 'POST': - # Form was submitted - form = BoatEditForm(request.POST) + # Form was submitted + form = BoatEditForm(request.POST) - if form.is_valid(): - # do something - res = addboat(request.POST) - func = res[0] - message = res[1] - successmessage = res[2] - theid = res[3] - kwargs = {} - if successmessage != "": - kwargs['successmessage'] = successmessage.encode('utf8') - if message != "": - kwargs['message'] = message.encode('utf8') - if theid != 0: - kwargs['id'] = int(theid) - url = reverse(func,kwargs = kwargs) - - return HttpResponseRedirect(url) - else: - return render(request, - TEMPLATEPREFIX+'boat_add_form.html', - {'form':form, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user), - } - ) - + if form.is_valid(): + # do something + res = addboat(request.POST) + func = res[0] + message = res[1] + successmessage = res[2] + theid = res[3] + kwargs = {} + if successmessage != "": + kwargs['successmessage'] = successmessage.encode('utf8') + if message != "": + kwargs['message'] = message.encode('utf8') + if theid != 0: + kwargs['id'] = int(theid) + url = reverse(func,kwargs = kwargs) + + return HttpResponseRedirect(url) else: - form = BoatEditForm() - if (message != ""): - return render(request, - TEMPLATEPREFIX+'boat_add_form.html', - {'form':form, - 'message':message, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - else: - - return render(request, - TEMPLATEPREFIX+'boat_add_form.html', - {'form':form, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) + return render(request, + TEMPLATEPREFIX+'boat_add_form.html', + {'form':form, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user), + } + ) + + else: + form = BoatEditForm() + if (message != ""): + return render(request, + TEMPLATEPREFIX+'boat_add_form.html', + {'form':form, + 'message':message, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + else: + + return render(request, + TEMPLATEPREFIX+'boat_add_form.html', + {'form':form, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def members_admin_add_view(request,message="",successmessage=""): if request.method == 'POST': - # Form was submitted - form = MemberEditForm(request.POST) + # Form was submitted + form = MemberEditForm(request.POST) - if form.is_valid(): - # do something - res = addmember(request.POST) - func = res[0] - message = res[1] - successmessage = res[2] - theid = res[3] - kwargs = {} - if successmessage != "": - kwargs['successmessage'] = successmessage - if message != "": - kwargs['message'] = message - if theid != 0: - kwargs['id'] = int(theid) - url = reverse(func,kwargs = kwargs) - - return HttpResponseRedirect(url) - else: - memberform = form - userform = UserCreateForm() - passwordconfirmform = PassWordConfirmForm() - return render(request, - TEMPLATEPREFIX+'member_add_form.html', - {'form1':memberform, - 'form2':userform, - 'form3':passwordconfirmform, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - + if form.is_valid(): + # do something + res = addmember(request.POST) + func = res[0] + message = res[1] + successmessage = res[2] + theid = res[3] + kwargs = {} + if successmessage != "": + kwargs['successmessage'] = successmessage + if message != "": + kwargs['message'] = message + if theid != 0: + kwargs['id'] = int(theid) + url = reverse(func,kwargs = kwargs) + + return HttpResponseRedirect(url) else: - memberform = MemberEditForm() - userform = UserCreateForm() - passwordconfirmform = PassWordConfirmForm() - if (message != ""): - return render(request, - TEMPLATEPREFIX+'member_add_form.html', - {'form1':memberform, - 'form2':userform, - 'form3':passwordconfirmform, - 'message':message, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - else: - - return render(request, - TEMPLATEPREFIX+'member_add_form.html', - {'form1':memberform, - 'form2':userform, - 'form3':passwordconfirmform, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) + memberform = form + userform = UserCreateForm() + passwordconfirmform = PassWordConfirmForm() + return render(request, + TEMPLATEPREFIX+'member_add_form.html', + {'form1':memberform, + 'form2':userform, + 'form3':passwordconfirmform, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + + else: + memberform = MemberEditForm() + userform = UserCreateForm() + passwordconfirmform = PassWordConfirmForm() + if (message != ""): + return render(request, + TEMPLATEPREFIX+'member_add_form.html', + {'form1':memberform, + 'form2':userform, + 'form3':passwordconfirmform, + 'message':message, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + else: + + return render(request, + TEMPLATEPREFIX+'member_add_form.html', + {'form1':memberform, + 'form2':userform, + 'form3':passwordconfirmform, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def categories_admin_add_view(request,message="",successmessage=""): if request.method == 'POST': - # Form was submitted - form = BoatCategoryEditForm(request.POST) + # Form was submitted + form = BoatCategoryEditForm(request.POST) - if form.is_valid(): - # do something - message = "" - successmessage = "" - name = request.POST['name'] - thecategory = BoatCategory(name=name) - thecategory.save() - kwargs = {} - if message != "": - kwargs['message'] = message - if successmessage != '': - kwargs['successmessage'] = successmessage + if form.is_valid(): + # do something + message = "" + successmessage = "" + name = request.POST['name'] + thecategory = BoatCategory(name=name) + thecategory.save() + kwargs = {} + if message != "": + kwargs['message'] = message + if successmessage != '': + kwargs['successmessage'] = successmessage - url = reverse(categories_admin_view,kwargs=kwargs) - - return HttpResponseRedirect(url) - else: - return render(request, - TEMPLATEPREFIX+'category_add_form.html', - {'form':form, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) + url = reverse(categories_admin_view,kwargs=kwargs) + + return HttpResponseRedirect(url) + else: + return render(request, + TEMPLATEPREFIX+'category_add_form.html', + {'form':form, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) else: - form = BoatCategoryEditForm() - if (message != ""): - return render(request, - TEMPLATEPREFIX+'category_add_form.html', - {'form':form, - 'message':message, - 'successmessage':successmessage, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - else: - - return render(request, - TEMPLATEPREFIX+'category_add_form.html', - {'form':form, - 'successmessage':successmessage, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - + form = BoatCategoryEditForm() + if (message != ""): + return render(request, + TEMPLATEPREFIX+'category_add_form.html', + {'form':form, + 'message':message, + 'successmessage':successmessage, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + else: + + return render(request, + TEMPLATEPREFIX+'category_add_form.html', + {'form':form, + 'successmessage':successmessage, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def boats_admin_edit_view(request,id,message="",successmessage=""): theboat = Boat.objects.get(id=id) if request.method == 'POST': - # Form was submitted - form = BoatEditForm(request.POST) + # Form was submitted + form = BoatEditForm(request.POST) - if form.is_valid(): - res = editboat(request.POST,theboat) - func = res[0] - message = res[1] - successmessage = res[2] - theid = res[3] - kwargs = {} - if successmessage != "": - kwargs['successmessage'] = successmessage - if message != "": - kwargs['message'] = message - if theid != 0: - kwargs['id'] = int(theid) - url = reverse(func,kwargs = kwargs) - - return HttpResponseRedirect(url) - else: - theoutings = Outing.objects.exclude(status="reservation").filter(boat=theboat).order_by("-starttime")[0:20] - return render(request, - TEMPLATEPREFIX+'boat_edit_form.html', - {'form':form, - 'theoutings':theoutings, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - + if form.is_valid(): + res = editboat(request.POST,theboat) + func = res[0] + message = res[1] + successmessage = res[2] + theid = res[3] + kwargs = {} + if successmessage != "": + kwargs['successmessage'] = successmessage + if message != "": + kwargs['message'] = message + if theid != 0: + kwargs['id'] = int(theid) + url = reverse(func,kwargs = kwargs) + + return HttpResponseRedirect(url) else: - form = BoatEditForm(instance=theboat) - theoutings = Outing.objects.exclude(status="reservation").filter(boat=theboat).order_by("-starttime")[0:20] - if (message != ""): - return render(request, - TEMPLATEPREFIX+'boat_edit_form.html', - {'form':form, - 'message':message, - 'theoutings':theoutings, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - else: - - return render(request, - TEMPLATEPREFIX+'boat_edit_form.html', - {'form':form, - 'theoutings':theoutings, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) + theoutings = Outing.objects.exclude(status="reservation").filter(boat=theboat).order_by("-starttime")[0:20] + return render(request, + TEMPLATEPREFIX+'boat_edit_form.html', + {'form':form, + 'theoutings':theoutings, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + + else: + form = BoatEditForm(instance=theboat) + theoutings = Outing.objects.exclude(status="reservation").filter(boat=theboat).order_by("-starttime")[0:20] + if (message != ""): + return render(request, + TEMPLATEPREFIX+'boat_edit_form.html', + {'form':form, + 'message':message, + 'theoutings':theoutings, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + else: + + return render(request, + TEMPLATEPREFIX+'boat_edit_form.html', + {'form':form, + 'theoutings':theoutings, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def members_work_edit_view(request,id,message="",successmessage=""): thework = MemberWork.objects.get(id=id) if request.method == 'POST': - # Form was submitted - form = MemberWorkCreateForm(request.POST) + # Form was submitted + form = MemberWorkCreateForm(request.POST) - if form.is_valid(): - res = editmemberwork(request.POST,thework) - func = res[0] - message = res[1] - successmessage = res[2] - theid = res[3] - kwargs = {} - if successmessage != "": - kwargs['successmessage'] = successmessage - if message != "": - kwargs['message'] = message - if theid != 0: - kwargs['id'] = int(theid) - url = reverse(func,kwargs = kwargs) - - return HttpResponseRedirect(url) - else: - return render(request, - TEMPLATEPREFIX+'memberwork_edit_form.html', - {'form':form, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - + if form.is_valid(): + res = editmemberwork(request.POST,thework) + func = res[0] + message = res[1] + successmessage = res[2] + theid = res[3] + kwargs = {} + if successmessage != "": + kwargs['successmessage'] = successmessage + if message != "": + kwargs['message'] = message + if theid != 0: + kwargs['id'] = int(theid) + url = reverse(func,kwargs = kwargs) + + return HttpResponseRedirect(url) else: - form = MemberWorkCreateForm(instance=thework) - if (message != ""): - return render(request, - TEMPLATEPREFIX+'memberwork_edit_form.html', - {'form':form, - 'message':message, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - else: - - return render(request, - TEMPLATEPREFIX+'memberwork_edit_form.html', - {'form':form, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) + return render(request, + TEMPLATEPREFIX+'memberwork_edit_form.html', + {'form':form, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + + else: + form = MemberWorkCreateForm(instance=thework) + if (message != ""): + return render(request, + TEMPLATEPREFIX+'memberwork_edit_form.html', + {'form':form, + 'message':message, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + else: + + return render(request, + TEMPLATEPREFIX+'memberwork_edit_form.html', + {'form':form, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def members_admin_edit_view(request,id,message="",successmessage=""): themember = Member.objects.get(id=id) if request.method == 'POST': - # Form was submitted - form = MemberEditForm(request.POST) + # Form was submitted + form = MemberEditForm(request.POST) - if form.is_valid(): - res = editmember(request.POST,themember) - func = res[0] - message = res[1] - successmessage = res[2] - theid = res[3] - kwargs = {} - if successmessage != "": - kwargs['successmessage'] = successmessage - if message != "": - kwargs['message'] = message - if theid != 0: - kwargs['id'] = int(theid) - url = reverse(func,kwargs = kwargs) - - return HttpResponseRedirect(url) - else: - return render(request, - TEMPLATEPREFIX+'member_edit_form.html', - {'form1':memberform, - 'form2':userform, - 'id':id, - 'username': themember.user.username, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) + if form.is_valid(): + res = editmember(request.POST,themember) + func = res[0] + message = res[1] + successmessage = res[2] + theid = res[3] + kwargs = {} + if successmessage != "": + kwargs['successmessage'] = successmessage + if message != "": + kwargs['message'] = message + if theid != 0: + kwargs['id'] = int(theid) + url = reverse(func,kwargs = kwargs) - + return HttpResponseRedirect(url) else: - memberform = MemberEditForm(instance=themember) - userform = UserEditForm(instance=themember.user) - if (message != ""): - return render(request, - TEMPLATEPREFIX+'member_edit_form.html', - {'form1':memberform, - 'form2':userform, - 'username': themember.user.username, - 'message':message, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - else: - - return render(request, - TEMPLATEPREFIX+'member_edit_form.html', - {'form1':memberform, - 'form2':userform, - 'username': themember.user.username, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) + return render(request, + TEMPLATEPREFIX+'member_edit_form.html', + {'form1':memberform, + 'form2':userform, + 'id':id, + 'username': themember.user.username, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + + + else: + memberform = MemberEditForm(instance=themember) + userform = UserEditForm(instance=themember.user) + if (message != ""): + return render(request, + TEMPLATEPREFIX+'member_edit_form.html', + {'form1':memberform, + 'form2':userform, + 'username': themember.user.username, + 'message':message, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + else: + + return render(request, + TEMPLATEPREFIX+'member_edit_form.html', + {'form1':memberform, + 'form2':userform, + 'username': themember.user.username, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def categories_admin_edit_view(request,id,message="",successmessage=""): thecategory = BoatCategory.objects.get(id=id) if request.method == 'POST': - # Form was submitted - form = BoatCategoryEditForm(request.POST) + # Form was submitted + form = BoatCategoryEditForm(request.POST) - if form.is_valid(): - # do something - message = "" - successmessage = "" - name = request.POST['name'] - thecategory.name = name - thecategory.save() + if form.is_valid(): + # do something + message = "" + successmessage = "" + name = request.POST['name'] + thecategory.name = name + thecategory.save() - - if (message != ""): - url = reverse(categories_admin_view, - kwargs = { - 'successmessage': _('Changes saved'), - 'message': message - }) - else: - url = reverse(categories_admin_view, - kwargs = { - 'successmessage': _('Changes saved'), - }) - - return HttpResponseRedirect(url) - else: - return render(request, - TEMPLATEPREFIX+'categories_edit_form.html', - {'form':form, - 'successmessage':successmessage, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) + + if (message != ""): + url = reverse(categories_admin_view, + kwargs = { + 'successmessage': _('Changes saved'), + 'message': message + }) + else: + url = reverse(categories_admin_view, + kwargs = { + 'successmessage': _('Changes saved'), + }) + + return HttpResponseRedirect(url) else: - form = BoatCategoryEditForm(instance=thecategory) - if (message != ""): - return render(request, - TEMPLATEPREFIX+'categories_edit_form.html', - {'form':form, - 'message':message, - 'successmessage':successmessage, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) - else: - - return render(request, - TEMPLATEPREFIX+'categories_edit_form.html', - {'form':form, - 'successmessage':successmessage, - 'id':id, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,} - ) + return render(request, + TEMPLATEPREFIX+'categories_edit_form.html', + {'form':form, + 'successmessage':successmessage, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + else: + form = BoatCategoryEditForm(instance=thecategory) + if (message != ""): + return render(request, + TEMPLATEPREFIX+'categories_edit_form.html', + {'form':form, + 'message':message, + 'successmessage':successmessage, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) + else: + + return render(request, + TEMPLATEPREFIX+'categories_edit_form.html', + {'form':form, + 'successmessage':successmessage, + 'id':id, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,} + ) @user_passes_test(thisclub_member,login_url="/cvkbrno/login") def meterboard_view(request,message="",successmessage="",sortby="year"): try: - sortby = request.GET['sortby'] + sortby = request.GET['sortby'] except KeyError: - pass + pass now = timezone.now() members = getclubmembers() boats = Boat.objects.all() @@ -956,47 +956,47 @@ def meterboard_view(request,message="",successmessage="",sortby="year"): theoutings = Outing.objects.exclude(status="reservation").exclude(status="race").order_by("-starttime")[0:20] for member in members: - cumdist,yeardist,monthdist,weekdist = distancecount(member.user) - df2 = pd.DataFrame( - { - 'Cumulative Distance':[cumdist], - 'This Year':[yeardist], - 'This Month':[monthdist], - 'This Week':[weekdist], - }, - index = [member] - ) - df = df.append(df2) + cumdist,yeardist,monthdist,weekdist = distancecount(member.user) + df2 = pd.DataFrame( + { + 'Cumulative Distance':[cumdist], + 'This Year':[yeardist], + 'This Month':[monthdist], + 'This Week':[weekdist], + }, + index = [member] + ) + df = df.append(df2) for boat in boats: - cumdist,yeardist,monthdist,weekdist = distancecountb(boat) - df3 = pd.DataFrame( - { - 'Cumulative':[cumdist], - 'This Year':[yeardist], - 'This Month':[monthdist], - 'This Week':[weekdist], - }, - index = [boat] - ) - dfb = dfb.append(df3) + cumdist,yeardist,monthdist,weekdist = distancecountb(boat) + df3 = pd.DataFrame( + { + 'Cumulative':[cumdist], + 'This Year':[yeardist], + 'This Month':[monthdist], + 'This Week':[weekdist], + }, + index = [boat] + ) + dfb = dfb.append(df3) sortorder = ['This Year', 'This Month', 'This Week'] if sortby == 'month': - sortorder = ['This Month','This Year','This Week'] + sortorder = ['This Month','This Year','This Week'] if sortby == 'week': - sortorder = ['This Week','This Year','This Month'] - + sortorder = ['This Week','This Year','This Month'] + data = df.sort_values(by=sortorder,ascending=False).to_html(classes='listtable paddedtable',columns=['This Year','This Month','This Week']) datab = dfb.sort_values(by=sortorder,ascending=False).to_html(classes='listtable paddedtable',columns=['This Year','This Month','This Week']) return render(request, - TEMPLATEPREFIX+'meterboard.html', - {'data':data, - 'datab':datab, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) - - + TEMPLATEPREFIX+'meterboard.html', + {'data':data, + 'datab':datab, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + + @user_passes_test(thisclub_member,login_url="/cvkbrno/login") def createouting_view(request,message="",successmessage=""): @@ -1009,195 +1009,195 @@ def createouting_view(request,message="",successmessage=""): # You are still out if (len(activeoutings)!=0): - # we are still out - errormessg = _("You still have an active outing. Check in first.").encode('utf8') - url = reverse(closeouting_view, - kwargs = { - 'message':str(errormessg), - }) + # we are still out + errormessg = _("You still have an active outing. Check in first.").encode('utf8') + url = reverse(closeouting_view, + kwargs = { + 'message':str(errormessg), + }) - return HttpResponseRedirect(url) + return HttpResponseRedirect(url) # You have submitted the form if request.method == 'POST': - # Form was submitted - form = OutingForm(request.POST) - # form is valid - if form.is_valid(): - # Get values from form - dist = request.POST['distance'] - boat = Boat.objects.get(id=request.POST['boat']) - boat.status = "water" - boat.save() - additionalcrew = [] - if boat.nrseats>1: - for i in range(boat.nrseats-1): - snr = i+2 - try: - crewid = int(request.POST['crew'+str(snr)]) - except: - message = _("You must select additional crew members for this boat") - return render(request, - TEMPLATEPREFIX+'outing_form.html', - {'form':form, - 'theboats':theboats, - 'reservations':get_future_reservations(), - 'races':get_future_races(), - 'damagedboats':get_damagedboats(), - 'plannedwork':plannedwork, - 'member':member, - 'message':message, - 'jsonmembers':getmembers_json(request.user), - 'successmessage':successmessage, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) - additionalcrew.append(Member.objects.get(user__id=crewid)) - # remove duplicates - additionalcrew = list(set(additionalcrew)) + # Form was submitted + form = OutingForm(request.POST) + # form is valid + if form.is_valid(): + # Get values from form + dist = request.POST['distance'] + boat = Boat.objects.get(id=request.POST['boat']) + boat.status = "water" + boat.save() + additionalcrew = [] + if boat.nrseats>1: + for i in range(boat.nrseats-1): + snr = i+2 + try: + crewid = int(request.POST['crew'+str(snr)]) + except: + message = _("You must select additional crew members for this boat") + return render(request, + TEMPLATEPREFIX+'outing_form.html', + {'form':form, + 'theboats':theboats, + 'reservations':get_future_reservations(), + 'races':get_future_races(), + 'damagedboats':get_damagedboats(), + 'plannedwork':plannedwork, + 'member':member, + 'message':message, + 'jsonmembers':getmembers_json(request.user), + 'successmessage':successmessage, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + additionalcrew.append(Member.objects.get(user__id=crewid)) + # remove duplicates + additionalcrew = list(set(additionalcrew)) - - starttime = timezone.now() - myreservations = Outing.objects.filter(status="reservation", - rower=member, - starttime__year=today.year, - starttime__month=today.month, - starttime__day=today.day).order_by("starttime") - # form is valid and you have some reservation (for today) - if len(myreservations) != 0: - nextreservation=myreservations.first() - # you are taking the boat that you reserved + starttime = timezone.now() + myreservations = Outing.objects.filter(status="reservation", + rower=member, + starttime__year=today.year, + starttime__month=today.month, + starttime__day=today.day).order_by("starttime") - if (nextreservation.boat == boat): - nextreservation.starttime = starttime - nextreservation.status = "active" - nextreservation.distance = dist - nextreservation.save() - for member in additionalcrew: - nextreservation.otherrowers.add(member) - nextreservation.save() - # you are taking another boat - else: - o = Outing(starttime=starttime,rower=member, - boat=boat,distance=dist, - status="active") - o.save() - for member in additionalcrew: - o.otherrowers.add(member) - o.save() - # form is valid and you have no reservations - else: - o = Outing(starttime=starttime,rower=member,boat=boat, - distance=dist, - status="active") - o.save() - for member in additionalcrew: - o.otherrowers.add(member) - o.save() - if not settings.DEBUG: - logout(request) - url = reverse(base_view) - return HttpResponseRedirect(url) - # You have not submitted a form with errors - else: - return render(request, - TEMPLATEPREFIX+'outing_form.html', - {'form':form, - 'theboats':theboats, - 'reservations':get_future_reservations(), - 'races':get_future_races(), - 'member':member, - 'damagedboats':get_damagedboats(), - 'plannedwork':plannedwork, - 'message':message, - 'jsonmembers':getmembers_json(request.user), - 'successmessage':successmessage, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + # form is valid and you have some reservation (for today) + if len(myreservations) != 0: + nextreservation=myreservations.first() + # you are taking the boat that you reserved + + if (nextreservation.boat == boat): + nextreservation.starttime = starttime + nextreservation.status = "active" + nextreservation.distance = dist + nextreservation.save() + for member in additionalcrew: + nextreservation.otherrowers.add(member) + nextreservation.save() + # you are taking another boat + else: + o = Outing(starttime=starttime,rower=member, + boat=boat,distance=dist, + status="active") + o.save() + for member in additionalcrew: + o.otherrowers.add(member) + o.save() + # form is valid and you have no reservations + else: + o = Outing(starttime=starttime,rower=member,boat=boat, + distance=dist, + status="active") + o.save() + for member in additionalcrew: + o.otherrowers.add(member) + o.save() + if not settings.DEBUG: + logout(request) + url = reverse(base_view) + return HttpResponseRedirect(url) + # You have not submitted a form with errors + else: + return render(request, + TEMPLATEPREFIX+'outing_form.html', + {'form':form, + 'theboats':theboats, + 'reservations':get_future_reservations(), + 'races':get_future_races(), + 'member':member, + 'damagedboats':get_damagedboats(), + 'plannedwork':plannedwork, + 'message':message, + 'jsonmembers':getmembers_json(request.user), + 'successmessage':successmessage, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) # You have not submitted the form else: - form = OutingForm( - initial={'distance':12, - } - ) - today = timezone.now().date() - myreservations = Outing.objects.filter(status="reservation", - rower=member, - starttime__year=today.year, - starttime__month=today.month, - starttime__day=today.day).order_by("starttime") + form = OutingForm( + initial={'distance':12, + } + ) + today = timezone.now().date() + myreservations = Outing.objects.filter(status="reservation", + rower=member, + starttime__year=today.year, + starttime__month=today.month, + starttime__day=today.day).order_by("starttime") - form = OutingForm( - initial={ - 'distance':12, - }) - return render(request, - TEMPLATEPREFIX+'outing_form.html', - {'form':form, - 'theboats':theboats, - 'reservations':get_future_reservations(), - 'member':member, - 'races':get_future_races(), - 'damagedboats':get_damagedboats(), - 'plannedwork':plannedwork, - 'message':message, - 'successmessage':successmessage, - 'jsonmembers':getmembers_json(request.user), - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + form = OutingForm( + initial={ + 'distance':12, + }) + return render(request, + TEMPLATEPREFIX+'outing_form.html', + {'form':form, + 'theboats':theboats, + 'reservations':get_future_reservations(), + 'member':member, + 'races':get_future_races(), + 'damagedboats':get_damagedboats(), + 'plannedwork':plannedwork, + 'message':message, + 'successmessage':successmessage, + 'jsonmembers':getmembers_json(request.user), + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + - @user_passes_test(thisclub_member,login_url="/cvkbrno/login") def closeouting_view(request,message="",successmessage=""): cleanoldreservations() member = Member.objects.get(user=request.user) activeoutings = Outing.objects.filter(rower=member,status="active") if (len(activeoutings)==0): - # no active outings - errormessg = _("You have no active outings. Go rowing first.").encode('utf8') - url = reverse(createouting_view, - kwargs = { - 'message':str(errormessg), - }) + # no active outings + errormessg = _("You have no active outings. Go rowing first.").encode('utf8') + url = reverse(createouting_view, + kwargs = { + 'message':str(errormessg), + }) - return HttpResponseRedirect(url) + return HttpResponseRedirect(url) if request.method == 'POST': - # Form was submitted - form = OutingCloseForm(request.POST) - if form.is_valid(): - # Get values from form - dist = request.POST['distance'] - comment = request.POST['comment'] - endtime = timezone.now() - damagecheck = request.POST['damagecheck'] - o = Outing.objects.get(rower=member,status="active") - if (damagecheck == "No"): - o.boat.status = _("damaged") - o.boat.comment += "\n"+timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S') - o.boat.comment += " "+comment - else: - o.boat.status = "hangar" - o.boat.save() - o.endtime = endtime - o.comment = comment - o.distance = dist - o.status = "completed" - o.save() - if not settings.DEBUG: - logout(request) - url = reverse(base_view) - return HttpResponseRedirect(url) - + # Form was submitted + form = OutingCloseForm(request.POST) + if form.is_valid(): + # Get values from form + dist = request.POST['distance'] + comment = request.POST['comment'] + endtime = timezone.now() + damagecheck = request.POST['damagecheck'] + o = Outing.objects.get(rower=member,status="active") + if (damagecheck == "No"): + o.boat.status = _("damaged") + o.boat.comment += "\n"+timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S') + o.boat.comment += " "+comment + else: + o.boat.status = "hangar" + o.boat.save() + o.endtime = endtime + o.comment = comment + o.distance = dist + o.status = "completed" + o.save() + if not settings.DEBUG: + logout(request) + url = reverse(base_view) + return HttpResponseRedirect(url) + else: - outing = Outing.objects.get(rower=member,status="active") - form = OutingCloseForm() - return render(request, - TEMPLATEPREFIX+'outing_closeform.html', - {'form':form, - 'outing':outing, - 'thisclub_admin':thisclub_admin(request.user), - 'message':message, - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + outing = Outing.objects.get(rower=member,status="active") + form = OutingCloseForm() + return render(request, + TEMPLATEPREFIX+'outing_closeform.html', + {'form':form, + 'outing':outing, + 'thisclub_admin':thisclub_admin(request.user), + 'message':message, + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) def get_races(datum): allraces = Races.objects.filter(enddatetime__gt=datum) @@ -1208,13 +1208,13 @@ def transport_view(request,message="",successmessage=""): cleanoldreservations() theraces = get_future_races() return render(request, - TEMPLATEPREFIX+'races_list.html', - {'races':theraces, - 'thisclub_admin':thisclub_admin(request.user), - 'message':message, - 'successmessage':successmessage, - 'worked_hours':Member.objects.get(user=request.user).hoursworked, - }) + TEMPLATEPREFIX+'races_list.html', + {'races':theraces, + 'thisclub_admin':thisclub_admin(request.user), + 'message':message, + 'successmessage':successmessage, + 'worked_hours':Member.objects.get(user=request.user).hoursworked, + }) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") @@ -1223,102 +1223,102 @@ def transport_add_view(request,message="",successmessage=""): member = Member.objects.get(user=request.user) theboats = Boat.objects.all().order_by("boatcode") if request.method=='POST': - #Form was submitted - form = RacesEditForm(request.POST) - if form.is_valid(): - # Get values from form - name = form.cleaned_data['name'] - startdate = form.cleaned_data['startdate'] - starttime = form.cleaned_data['starttime'] - enddate = form.cleaned_data['enddate'] - endtime = form.cleaned_data['endtime'] - transportboats = form.cleaned_data['transportboats'] + #Form was submitted + form = RacesEditForm(request.POST) + if form.is_valid(): + # Get values from form + name = form.cleaned_data['name'] + startdate = form.cleaned_data['startdate'] + starttime = form.cleaned_data['starttime'] + enddate = form.cleaned_data['enddate'] + endtime = form.cleaned_data['endtime'] + transportboats = form.cleaned_data['transportboats'] - startdatetime = (str(startdate) + ' ' + str(starttime)) - startdatetime = datetime.datetime.strptime(startdatetime, - "%Y-%m-%d %H:%M:%S") - startdatetime = timezone.make_aware(startdatetime, - timezone=LOCALTIMEZONE) - enddatetime = (str(enddate) + ' ' + str(endtime)) - enddatetime = datetime.datetime.strptime(enddatetime, - "%Y-%m-%d %H:%M:%S") - enddatetime = timezone.make_aware(enddatetime, - timezone=LOCALTIMEZONE) + startdatetime = (str(startdate) + ' ' + str(starttime)) + startdatetime = datetime.datetime.strptime(startdatetime, + "%Y-%m-%d %H:%M:%S") + startdatetime = timezone.make_aware(startdatetime, + timezone=LOCALTIMEZONE) + enddatetime = (str(enddate) + ' ' + str(endtime)) + enddatetime = datetime.datetime.strptime(enddatetime, + "%Y-%m-%d %H:%M:%S") + enddatetime = timezone.make_aware(enddatetime, + timezone=LOCALTIMEZONE) - r = Races(name=name, - startdatetime=startdatetime, - enddatetime=enddatetime) + r = Races(name=name, + startdatetime=startdatetime, + enddatetime=enddatetime) - r.save() - for b in transportboats: - r.transportboats.add(b) - o = Outing(starttime=startdatetime, - endtime=enddatetime, - distance=0, - comment=name, - boat=b, - rower=member, - status="race") - o.save() - o.race.add(r) - o.save() + r.save() + for b in transportboats: + r.transportboats.add(b) + o = Outing(starttime=startdatetime, + endtime=enddatetime, + distance=0, + comment=name, + boat=b, + rower=member, + status="race") + o.save() + o.race.add(r) + o.save() - r.save() - successmessage = _("Race has been saved").encode('utf8') - return render(request, - TEMPLATEPREFIX+'races_list.html', - { - 'thisclub_admin':thisclub_admin(request.user), - 'message':message, - 'races':get_future_races(), - 'successmessage':successmessage, - 'worked_hours':Member.objects.get(user=request.user).hoursworked, - }) - else: - return render(request, - TEMPLATEPREFIX+'races_form.html', - {'form':form, - 'theboats':theboats, - 'thisclub_admin':thisclub_admin(request.user), - 'message':message, - 'successmessage':successmessage, - 'worked_hours':Member.objects.get(user=request.user).hoursworked, }) + r.save() + successmessage = _("Race has been saved").encode('utf8') + return render(request, + TEMPLATEPREFIX+'races_list.html', + { + 'thisclub_admin':thisclub_admin(request.user), + 'message':message, + 'races':get_future_races(), + 'successmessage':successmessage, + 'worked_hours':Member.objects.get(user=request.user).hoursworked, + }) + else: + return render(request, + TEMPLATEPREFIX+'races_form.html', + {'form':form, + 'theboats':theboats, + 'thisclub_admin':thisclub_admin(request.user), + 'message':message, + 'successmessage':successmessage, + 'worked_hours':Member.objects.get(user=request.user).hoursworked, }) else: - form = RacesEditForm() + form = RacesEditForm() + + return render(request, + TEMPLATEPREFIX+'races_form.html', + {'form':form, + 'theboats':theboats, + 'thisclub_admin':thisclub_admin(request.user), + 'message':message, + 'successmessage':successmessage, + 'worked_hours':Member.objects.get(user=request.user).hoursworked, + }) - return render(request, - TEMPLATEPREFIX+'races_form.html', - {'form':form, - 'theboats':theboats, - 'thisclub_admin':thisclub_admin(request.user), - 'message':message, - 'successmessage':successmessage, - 'worked_hours':Member.objects.get(user=request.user).hoursworked, - }) - @user_passes_test(thisclub_admin,login_url="cvkbrno/login") def races_admin_delete_view(request,id): # put in a try except block try: - therace = Races.objects.get(id=id) - theoutings = Outing.objects.filter(race=therace) + therace = Races.objects.get(id=id) + theoutings = Outing.objects.filter(race=therace) - for outing in theoutings: - outing.delete() + for outing in theoutings: + outing.delete() - therace.delete() + therace.delete() except ObjectDoesNotExist: - pass - + pass + successmessage = _("Race deleted") url = reverse(transport_view, - kwargs={ - 'successmessage':successmessage, - }) + kwargs={ + 'successmessage':successmessage, + }) return HttpResponseRedirect(url) @@ -1328,27 +1328,27 @@ def members_work_complete_view(request,id=0): thework.status = "executed" thework.save() for member in thework.worker.all(): - member.hoursworked+=thework.hours - member.save() + member.hoursworked+=thework.hours + member.save() theworks = MemberWork.objects.filter(status='planned') return render(request, - TEMPLATEPREFIX+'memberswork_admin.html', - {'theworks':theworks, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + TEMPLATEPREFIX+'memberswork_admin.html', + {'theworks':theworks, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) @user_passes_test(thisclub_admin,login_url="/cvkbrno/login") def members_work_delete_view(request,id=0): thework = MemberWork.objects.get(id=id) thework.delete() - + theworks = MemberWork.objects.filter(status='planned') return render(request, - TEMPLATEPREFIX+'memberswork_admin.html', - {'theworks':theworks, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + TEMPLATEPREFIX+'memberswork_admin.html', + {'theworks':theworks, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) @user_passes_test(thisclub_member,login_url="/cvkbrno/login") def members_work_addme(request,id,message="",successmessage=""): @@ -1377,78 +1377,78 @@ def makereservation_view(request,message="",successmessage=""): theboats = get_availableboats_reservation(member,timezone.now()) # theboats = Boat.objects.filter(status__in = ["hangar", "water", "races"]) if (len(activeoutings)!=0): - # we are still out - url = reverse(closeouting_view) - return HttpResponseRedirect(url) + # we are still out + url = reverse(closeouting_view) + return HttpResponseRedirect(url) if request.method == 'POST': - # Form was submitted - form = OutingReserveForm(request.POST) - if form.is_valid(): - # Get values from form - dist = request.POST['distance'] - boat = Boat.objects.get(id=request.POST['boat']) - stime = request.POST['starttime'] - sdate = request.POST['startdate'] - etime = request.POST['endtime'] - - starttime = parser.parse(sdate+' '+stime) - #starttime = timezone.make_aware(starttime) - starttime = LOCALTIMEZONE.localize(starttime) - - endtime = parser.parse(sdate+' '+etime) - #endtime = timezone.make_aware(endtime) - endtime = LOCALTIMEZONE.localize(endtime) - - # check if conflicting reservations exist - check,errormessg = conflicting_reservations(boat,starttime,endtime) + # Form was submitted + form = OutingReserveForm(request.POST) + if form.is_valid(): + # Get values from form + dist = request.POST['distance'] + boat = Boat.objects.get(id=request.POST['boat']) + stime = request.POST['starttime'] + sdate = request.POST['startdate'] + etime = request.POST['endtime'] - if check: - url = reverse(makereservation_view, - kwargs = { - 'message':errormessg, - }) + starttime = parser.parse(sdate+' '+stime) + #starttime = timezone.make_aware(starttime) + starttime = LOCALTIMEZONE.localize(starttime) - return HttpResponseRedirect(url) - else: - o = Outing(starttime=starttime,endtime=endtime,rower=member, - boat=boat,distance=dist, - status="reservation") - o.save() - # if not settings.DEBUG: - # logout(request) - url = reverse(base_view) - return HttpResponseRedirect(url) - else: - return render(request, - TEMPLATEPREFIX+'reservation_form.html', - {'form':form, - 'theboats':theboats, - 'reservations':get_future_reservations(), - 'message':message, - 'successmessage':successmessage, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) - + endtime = parser.parse(sdate+' '+etime) + #endtime = timezone.make_aware(endtime) + endtime = LOCALTIMEZONE.localize(endtime) + + # check if conflicting reservations exist + check,errormessg = conflicting_reservations(boat,starttime,endtime) + + if check: + url = reverse(makereservation_view, + kwargs = { + 'message':errormessg, + }) + + return HttpResponseRedirect(url) + else: + o = Outing(starttime=starttime,endtime=endtime,rower=member, + boat=boat,distance=dist, + status="reservation") + o.save() + # if not settings.DEBUG: + # logout(request) + url = reverse(base_view) + return HttpResponseRedirect(url) else: - nownaive = timezone.now().replace(tzinfo=None) - nowlocal = timezone.now().astimezone(LOCALTIMEZONE) + return render(request, + TEMPLATEPREFIX+'reservation_form.html', + {'form':form, + 'theboats':theboats, + 'reservations':get_future_reservations(), + 'message':message, + 'successmessage':successmessage, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) + + else: + nownaive = timezone.now().replace(tzinfo=None) + nowlocal = timezone.now().astimezone(LOCALTIMEZONE) + + form = OutingReserveForm( + initial={'distance':11, + 'starttime': nowlocal, + 'startdate': nowlocal, + 'endtime': nowlocal+datetime.timedelta(hours=1.5)} + ) + return render(request, + TEMPLATEPREFIX+'reservation_form.html', + {'form':form, + 'theboats':theboats, + 'reservations':get_future_reservations(), + 'message':message, + 'successmessage':successmessage, + 'thisclub_admin':thisclub_admin(request.user), + 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) - form = OutingReserveForm( - initial={'distance':11, - 'starttime': nowlocal, - 'startdate': nowlocal, - 'endtime': nowlocal+datetime.timedelta(hours=1.5)} - ) - return render(request, - TEMPLATEPREFIX+'reservation_form.html', - {'form':form, - 'theboats':theboats, - 'reservations':get_future_reservations(), - 'message':message, - 'successmessage':successmessage, - 'thisclub_admin':thisclub_admin(request.user), - 'worked_hours':Member.objects.get(user=request.user).hoursworked,}) - return HttpResponse(_("Make a reservation")) @@ -1473,15 +1473,15 @@ def addmemberwork(formdict): hours = int(formdict['hours']) status = 'planned' thework = MemberWork(date=date, - hours=hours, - name=name,status=status,comment=comment) + hours=hours, + name=name,status=status,comment=comment) thework.save() if len(worker) != 0: - for index in worker: - theworker = Member.objects.get(id=index) - thework.worker.add(theworker) - thework.save() - + for index in worker: + theworker = Member.objects.get(id=index) + thework.worker.add(theworker) + thework.save() + id = thework.id theview = members_work_admin_view successmessage = _("Members Work Created") @@ -1491,45 +1491,45 @@ def addmemberwork(formdict): members = getclubmembers() bcclist = [] for member in members: - bcclist.append(member.user.email) + bcclist.append(member.user.email) print bcclist - if settings.DEBUG: - res = handle_sendemailwork.delay(bcclist,thework.name, - thework.date,thework.comment) + if settings.DEBUG: + res = handle_sendemailwork.delay(bcclist,thework.name, + thework.date,thework.comment) else: - res = queue.enqueue(handle_sendemailwork,bcclist, - thework.name,thework.date,thework.comment) + res = queue.enqueue(handle_sendemailwork,bcclist, + thework.name,thework.date,thework.comment) + - return [theview,message,successmessage,id] def addbulkboat(xlsfile): df = pd.read_excel(xlsfile) for index,row in df.iterrows(): - boatcode = df.ix[index,'code'] - boatname = smart_text(df.ix[index,'name']) - nrseats = df.ix[index,'nrseats'] - status = 'hangar' - cats = df.ix[index,'categories'] - cats = str(cats).split() - print boatcode - - theboat = Boat(boatcode=boatcode,boatname=boatname, - nrseats=int(nrseats), - status=status) + boatcode = df.ix[index,'code'] + boatname = smart_text(df.ix[index,'name']) + nrseats = df.ix[index,'nrseats'] + status = 'hangar' + cats = df.ix[index,'categories'] + cats = str(cats).split() + print boatcode - theboat.save() - if (len(cats) !=0): - for index in cats: - print index - thecategory = BoatCategory.objects.get(id=index) - print unidecode.unidecode(thecategory.name) - theboat.categories.add(thecategory) + theboat = Boat(boatcode=boatcode,boatname=boatname, + nrseats=int(nrseats), + status=status) - theboat.save() + theboat.save() + if (len(cats) !=0): + for index in cats: + print index + thecategory = BoatCategory.objects.get(id=index) + print unidecode.unidecode(thecategory.name) + theboat.categories.add(thecategory) + + theboat.save() def addboat(formdict): @@ -1543,25 +1543,25 @@ def addboat(formdict): status = formdict['status'] comment = formdict['comment'] theboat = Boat(boatcode=boatcode,boatname=boatname, - nrseats=int(nrseats), - status=status,comment=comment) + nrseats=int(nrseats), + status=status,comment=comment) # check if other boat exists with new code if len(Boat.objects.filter(boatcode=boatcode)) != 0: - message = _("There is already a boat with that code") - theview = boats_admin_add_view - return [theview,message,"",id] + message = _("There is already a boat with that code") + theview = boats_admin_add_view + return [theview,message,"",id] else: - theboat.save() - - if len(cats) !=0: - for index in cats: - thecategory = BoatCategory.objects.get(id=index) - theboat.categories.add(thecategory) + theboat.save() - theview = boats_admin_view - successmessage = _('Boat created') - message = '' - return [theview,message,successmessage,id] + if len(cats) !=0: + for index in cats: + thecategory = BoatCategory.objects.get(id=index) + theboat.categories.add(thecategory) + + theview = boats_admin_view + successmessage = _('Boat created') + message = '' + return [theview,message,successmessage,id] def editboat(formdict,theboat): # do something @@ -1581,19 +1581,19 @@ def editboat(formdict,theboat): theboat.categories.clear() theboat.save() if (len(cats) !=0): - for index in cats: - thecategory = BoatCategory.objects.get(id=index) - theboat.categories.add(thecategory) + for index in cats: + thecategory = BoatCategory.objects.get(id=index) + theboat.categories.add(thecategory) # check if other boat exists with new code if boatcode != theboat.boatcode: - if len(Boat.objects.filter(boatcode=boatcode)) != 0: - message = _("There is already a boat with that code") - theview = boats_admin_edit_view - theid = theboat.id - return [theview,message,"",theid] - else: - theboat.boatcode = boatcode + if len(Boat.objects.filter(boatcode=boatcode)) != 0: + message = _("There is already a boat with that code") + theview = boats_admin_edit_view + theid = theboat.id + return [theview,message,"",theid] + else: + theboat.boatcode = boatcode theboat.save() @@ -1604,36 +1604,36 @@ def editboat(formdict,theboat): def addbulkmember(cats,xlsfile,sheetname): df = pd.read_excel(xlsfile,sheetname=sheetname) for index,row in df.iterrows(): - lastname,firstname = df.ix[index,'name'].split() - email = df.ix[index,'e-mail'] - username = unidecode.unidecode(lastname)+unidecode.unidecode(firstname)[0] - username = username.lower() - password = 'cvkbrno' - contributions = True - hoursworked = 0 - status = 'member' + lastname,firstname = df.ix[index,'name'].split() + email = df.ix[index,'e-mail'] + username = unidecode.unidecode(lastname)+unidecode.unidecode(firstname)[0] + username = username.lower() + password = 'cvkbrno' + contributions = True + hoursworked = 0 + status = 'member' - print username - - theuser = User.objects.create_user(username,password=password) - theuser.first_name = firstname - theuser.last_name = lastname - theuser.email = email - theuser.save() + print username - themember = Member(user=theuser,status=status, - contributions=contributions, - hoursworked=hoursworked, - club=THISCLUB) + theuser = User.objects.create_user(username,password=password) + theuser.first_name = firstname + theuser.last_name = lastname + theuser.email = email + theuser.save() - themember.save() + themember = Member(user=theuser,status=status, + contributions=contributions, + hoursworked=hoursworked, + club=THISCLUB) - if (len(cats) !=0): - for index in cats: - thecategory = BoatCategory.objects.get(id=index) - themember.categories.add(thecategory) + themember.save() - themember.save() + if (len(cats) !=0): + for index in cats: + thecategory = BoatCategory.objects.get(id=index) + themember.categories.add(thecategory) + + themember.save() def addmember(formdict): message = "" @@ -1648,50 +1648,50 @@ def addmember(formdict): first_name = formdict['first_name'] last_name = formdict['last_name'] try: - contributions = formdict['contributions'] + contributions = formdict['contributions'] except: - contributions = False + contributions = False hoursworked = formdict['hoursworked'] cats = dict(formdict)["categories"] #check if passwords are equal if (password != password2): - message = _("The two passwords are not equal") - theview = members_admin_add_view - theid = 0 - return [theview,message,"",theid] - + message = _("The two passwords are not equal") + theview = members_admin_add_view + theid = 0 + return [theview,message,"",theid] + #check if there isn't already a user with this username if len(User.objects.filter(username=username)) != 0: - message = _("There is already a user with that username") - theview = members_admin_add_view - theid = 0 - return [theview,message,"",theid] + message = _("There is already a user with that username") + theview = members_admin_add_view + theid = 0 + return [theview,message,"",theid] else: - theuser = User.objects.create_user(username,password=password) - theuser.first_name = first_name - theuser.last_name = last_name - theuser.email = email - theuser.save() + theuser = User.objects.create_user(username,password=password) + theuser.first_name = first_name + theuser.last_name = last_name + theuser.email = email + theuser.save() - themember = Member(user=theuser,status=status, - contributions=contributions, - hoursworked=hoursworked, - club=THISCLUB) + themember = Member(user=theuser,status=status, + contributions=contributions, + hoursworked=hoursworked, + club=THISCLUB) - themember.save() + themember.save() - if (len(cats) !=0): - for index in cats: - thecategory = BoatCategory.objects.get(id=index) - themember.categories.add(thecategory) + if (len(cats) !=0): + for index in cats: + thecategory = BoatCategory.objects.get(id=index) + themember.categories.add(thecategory) - themember.save() + themember.save() - successmessage = _("New Member Created") - - return [theview,"",successmessage,theid] + successmessage = _("New Member Created") + + return [theview,"",successmessage,theid] def editmemberwork(formdict,thework): message = "" @@ -1711,9 +1711,9 @@ def editmemberwork(formdict,thework): thework.save() if (len(workers) != 0): - for index in workers: - theworker = Member.objects.get(id=index) - thework.worker.add(theworker) + for index in workers: + theworker = Member.objects.get(id=index) + thework.worker.add(theworker) thework.save() successmessage = _("Members Work Updated") @@ -1729,9 +1729,9 @@ def editmember(formdict,themember): first_name = formdict['first_name'] last_name = formdict['last_name'] try: - contributions = formdict['contributions'] + contributions = formdict['contributions'] except: - contributions = False + contributions = False hoursworked = formdict['hoursworked'] cats = dict(formdict)["categories"] email = formdict['email'] @@ -1742,13 +1742,13 @@ def editmember(formdict,themember): themember.categories.clear() if (len(cats) !=0): - for index in cats: - thecategory = BoatCategory.objects.get(id=index) - themember.categories.add(thecategory) + for index in cats: + thecategory = BoatCategory.objects.get(id=index) + themember.categories.add(thecategory) themember.save() - + theuser = themember.user theuser.first_name = first_name @@ -1759,5 +1759,3 @@ def editmember(formdict,themember): successmessage = _("Changes saved") return [theview,"",successmessage,0] - - diff --git a/ratings.csv b/ratings.csv new file mode 100644 index 00000000..24a6a473 --- /dev/null +++ b/ratings.csv @@ -0,0 +1,1089 @@ + +Jul-01-2022 06:14:49 1911,Wouter Op den,Velde,33.03459713074984,3.5781341594008773,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:49 2921,Vincent van,Gool,31.13683377951498,5.6999305869754,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:49 2922,Guido,Hendriks,32.63823252241468,3.6296876820089046,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:49 2930,Age Buitenrust,Hettema,19.619933748541072,3.32991586900493,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:49 2931,Edwin van,Buuren,33.13905125033999,6.123219473310084,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:49 2932,Freek,Reinders,33.139051250339975,6.123219473310084,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:49 2933,Hans,Janssen,17.938273137749402,3.3304026297074776,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 3427,Jappe,Zijlstra,25.03942803438064,7.633082433616571,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 1911,Wouter Op den,Velde,33.034626329696216,3.577945224516287,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2921,Vincent van,Gool,31.13691202923599,5.699078759925944,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2922,Guido,Hendriks,32.638262597327646,3.6294900877748306,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2930,Age Buitenrust,Hettema,19.619958927338377,3.329764906361457,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2931,Edwin van,Buuren,33.13914296505292,6.1221301425330665,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2932,Freek,Reinders,33.13914296505291,6.1221301425330665,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2933,Hans,Janssen,17.93829832411379,3.3302515983879086,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 3427,Jappe,Zijlstra,25.039581574885275,7.6306331526745135,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 1911,Wouter Op den,Velde,33.034684918522295,3.57781649787488,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2921,Vincent van,Gool,31.13706904035666,5.698498339076335,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2922,Guido,Hendriks,32.63832294381487,3.629355461090354,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2930,Age Buitenrust,Hettema,19.620009449578333,3.3296620519197746,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2931,Edwin van,Buuren,33.13932699420567,6.121387872811715,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2932,Freek,Reinders,33.13932699420565,6.121387872811715,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2933,Hans,Janssen,17.938348861537417,3.3301486971543572,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 3427,Jappe,Zijlstra,25.03988965990325,7.628964012516238,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 1911,Wouter Op den,Velde,33.03477316680345,3.577746159187631,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2921,Vincent van,Gool,31.137305535307135,5.698181169920384,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:50 2922,Guido,Hendriks,32.63841383953898,3.6292818984438564,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2930,Age Buitenrust,Hettema,19.62008554772085,3.3296058505160815,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2931,Edwin van,Buuren,33.13960418454211,6.12098225576103,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2932,Freek,Reinders,33.1396041845421,6.12098225576103,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2933,Hans,Janssen,17.93842498255002,3.3300924701823824,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 3427,Jappe,Zijlstra,25.0403537069768,7.628051833628429,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 1911,Wouter Op den,Velde,33.03489141147275,3.577733221835253,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2921,Vincent van,Gool,31.13762241702821,5.698122831945327,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2922,Guido,Hendriks,32.63853563154103,3.629268368105717,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2930,Age Buitenrust,Hettema,19.620187512309624,3.3295955134427686,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2931,Edwin van,Buuren,33.13997559437856,6.120907648802905,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2932,Freek,Reinders,33.139975594378555,6.120907648802905,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2933,Hans,Janssen,17.93852697778264,3.3300821284062865,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 3427,Jappe,Zijlstra,25.040975487843717,7.627884047190878,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 1911,Wouter Op den,Velde,33.03504005899887,3.5777775042960607,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2921,Vincent van,Gool,31.138020774807774,5.698322511779008,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2922,Guido,Hendriks,32.63868873848371,3.6293146802544127,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2930,Age Buitenrust,Hettema,19.62031569385016,3.3296308955916114,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:51 2931,Edwin van,Buuren,33.1404425004445,6.121163013679244,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2932,Freek,Reinders,33.14044250044449,6.121163013679244,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2933,Hans,Janssen,17.93865519784611,3.330117526651962,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 3427,Jappe,Zijlstra,25.041757139889402,7.628458340191629,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 1911,Wouter Op den,Velde,33.03521958661811,3.5778796276522136,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2921,Vincent van,Gool,31.13850188758266,5.6987829923040785,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2922,Guido,Hendriks,32.63887365192039,3.629421484369879,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2930,Age Buitenrust,Hettema,19.62047050387226,3.3297124934562863,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2931,Edwin van,Buuren,33.14100640175262,6.121751902664577,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2932,Freek,Reinders,33.14100640175261,6.121751902664577,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2933,Hans,Janssen,17.938810054393915,3.330199161638506,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 3427,Jappe,Zijlstra,25.042701172625776,7.629782625919531,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 1911,Wouter Op den,Velde,33.0354305422193,3.5780410213990304,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2921,Vincent van,Gool,31.139067223630096,5.699510677621638,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2922,Guido,Hendriks,32.639090936176544,3.6295902753042304,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2930,Age Buitenrust,Hettema,19.620652414830698,3.3298414497910502,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2931,Edwin van,Buuren,33.14166901923718,6.1226824900312,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2932,Freek,Reinders,33.14166901923717,6.1226824900312,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 2933,Hans,Janssen,17.93899202002282,3.3303281766389894,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:52 3427,Jappe,Zijlstra,25.043810467085823,7.631875109585205,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2631,Jan Hendrik,Wiggers,28.04686933553854,7.483527520443855,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2632,Jan,Bruijn,12.067111211261427,3.493492341773946,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2634,Carel,Oosterloo,28.04686933553854,7.483527520443855,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2635,Egbert,Boevé,28.046869335538542,7.483527520443855,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2636,Jaap,Gelling,28.046869335538542,7.483527520443855,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2637,Frank,Verhulst,19.643438744891576,3.4900653981999903,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 3428,Diederik Tjeenk,Willink,27.558194771288353,7.82410212716435,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 3429,Willem,Helbing,27.558194771288353,7.82410212716435,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2631,Jan Hendrik,Wiggers,28.053766918242285,7.482495014613205,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2632,Jan,Bruijn,12.068482611182574,3.493404914093117,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2634,Carel,Oosterloo,28.053766918242285,7.482495014613205,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2635,Egbert,Boevé,28.053766918242285,7.482495014613204,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2636,Jaap,Gelling,28.053766918242292,7.482495014613205,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2637,Frank,Verhulst,19.644807395906252,3.4899782351568067,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 3428,Diederik Tjeenk,Willink,27.565832775493508,7.822891155545461,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 3429,Willem,Helbing,27.565832775493508,7.822891155545461,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2631,Jan Hendrik,Wiggers,28.066795682889165,7.481584552212218,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:53 2632,Jan,Bruijn,12.07107303272253,3.493327828662853,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2634,Carel,Oosterloo,28.066795682889165,7.481584552212218,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2635,Egbert,Boevé,28.06679568288917,7.481584552212218,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2636,Jaap,Gelling,28.06679568288917,7.481584552212218,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2637,Frank,Verhulst,19.647392625068388,3.4899013830626044,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 3428,Diederik Tjeenk,Willink,27.580260113799554,7.821823305337315,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 3429,Willem,Helbing,27.580260113799554,7.821823305337315,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2631,Jan Hendrik,Wiggers,28.08596990003259,7.480788266023745,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2632,Jan,Bruijn,12.074885313199331,3.493260416398779,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2634,Carel,Oosterloo,28.08596990003259,7.480788266023745,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2635,Egbert,Boevé,28.085969900032598,7.480788266023745,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2636,Jaap,Gelling,28.085969900032598,7.480788266023745,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2637,Frank,Verhulst,19.651197264008747,3.489834174856958,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 3428,Diederik Tjeenk,Willink,27.601492588633448,7.820889355522531,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 3429,Willem,Helbing,27.601492588633448,7.820889355522531,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2631,Jan Hendrik,Wiggers,28.111302052525552,7.480098727735729,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2632,Jan,Bruijn,12.07992193449458,3.493202045980402,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:54 2634,Carel,Oosterloo,28.111302052525552,7.480098727735729,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2635,Egbert,Boevé,28.111302052525556,7.480098727735729,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2636,Jaap,Gelling,28.111302052525556,7.480098727735729,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2637,Frank,Verhulst,19.656223789634115,3.4897759811292857,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 3428,Diederik Tjeenk,Willink,27.629544022820934,7.820080598619867,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 3429,Willem,Helbing,27.629544022820934,7.820080598619867,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2631,Jan Hendrik,Wiggers,28.14280259811117,7.479509000045704,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2632,Jan,Bruijn,12.086184975850914,3.493152128169154,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2634,Carel,Oosterloo,28.142802598111174,7.479509000045704,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2635,Egbert,Boevé,28.142802598111174,7.479509000045704,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2636,Jaap,Gelling,28.142802598111174,7.479509000045704,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2637,Frank,Verhulst,19.66247427701939,3.489726214423782,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 3428,Diederik Tjeenk,Willink,27.664425996692287,7.819388901987105,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 3429,Willem,Helbing,27.664425996692287,7.819388901987105,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2631,Jan Hendrik,Wiggers,28.18047884034892,7.479012712382438,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2632,Jan,Bruijn,12.093675889385885,3.4931101221352097,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2634,Carel,Oosterloo,28.18047884034892,7.479012712382438,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2635,Egbert,Boevé,28.180478840348925,7.479012712382438,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2636,Jaap,Gelling,28.180478840348925,7.479012712382438,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:55 2637,Frank,Verhulst,19.669950175371422,3.4896843355470417,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 3428,Diederik Tjeenk,Willink,27.706146597808097,7.818806796805131,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 3429,Willem,Helbing,27.706146597808097,7.818806796805131,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 2631,Jan Hendrik,Wiggers,28.224333844577966,7.478604066637309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 2632,Jan,Bruijn,12.102395284560238,3.4930755358699423,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 2634,Carel,Oosterloo,28.224333844577966,7.478604066637309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 2635,Egbert,Boevé,28.224333844577973,7.478604066637309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 2636,Jaap,Gelling,28.224333844577973,7.478604066637309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 2637,Frank,Verhulst,19.67865209292932,3.4896498539792415,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 3428,Diederik Tjeenk,Willink,27.754709220556574,7.818327484949515,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 3429,Willem,Helbing,27.754709220556574,7.818327484949515,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 1978,Mark van,Hoeij,25.282773572247287,7.4810251557994745,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 1980,Jos van,Eldonk,24.21393585453461,5.793236264398621,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 1981,Frank den,Blijker,24.21393585453461,5.793236264398621,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 1982,Bernard,Ouwehand,25.387684228864597,7.159930538435972,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 1983,Sytze van der,Laan,25.387684228864597,7.159930538435972,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 1984,Martijn,Gouman,25.3876842288646,7.159930538435972,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 1985,Allard,Feddes,25.3876842288646,7.159930538435972,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:56 2572,Jan Willem van,Brummelen,25.19408023239293,7.455489109403552,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1978,Mark van,Hoeij,25.332194239937788,7.480616961174446,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1980,Jos van,Eldonk,24.242118966001932,5.793064844042667,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1981,Frank den,Blijker,24.242118966001936,5.793064844042667,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1982,Bernard,Ouwehand,25.432447244034403,7.15958064177468,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1983,Sytze van der,Laan,25.432447244034403,7.15958064177468,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1984,Martijn,Gouman,25.432447244034403,7.15958064177468,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1985,Allard,Feddes,25.432447244034403,7.15958064177468,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 2572,Jan Willem van,Brummelen,25.243118554422832,7.455085829909505,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1978,Mark van,Hoeij,25.38192933734554,7.480262293880523,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1980,Jos van,Eldonk,24.270481387223338,5.792915905837425,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1981,Frank den,Blijker,24.270481387223338,5.792915905837425,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1982,Bernard,Ouwehand,25.477495055481985,7.159276629340659,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1983,Sytze van der,Laan,25.477495055481985,7.159276629340659,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1984,Martijn,Gouman,25.477495055481988,7.159276629340659,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1985,Allard,Feddes,25.477495055481988,7.159276629340659,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 2572,Jan Willem van,Brummelen,25.29246887356754,7.4547354333708515,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1978,Mark van,Hoeij,25.432095258176876,7.4799578506248645,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1980,Jos van,Eldonk,24.299089494007827,5.792788061182865,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1981,Frank den,Blijker,24.299089494007827,5.792788061182865,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:57 1982,Bernard,Ouwehand,25.522933087384825,7.1590156689671485,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1983,Sytze van der,Laan,25.522933087384825,7.1590156689671485,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1984,Martijn,Gouman,25.52293308738483,7.1590156689671485,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1985,Allard,Feddes,25.52293308738483,7.1590156689671485,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 2572,Jan Willem van,Brummelen,25.342246683047165,7.454434656208332,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1978,Mark van,Hoeij,25.48280913353061,7.479700769873789,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1980,Jos van,Eldonk,24.328010082677032,5.792680107288387,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1981,Frank den,Blijker,24.328010082677032,5.792680107288387,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1982,Bernard,Ouwehand,25.56886743181731,7.158795307291605,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1983,Sytze van der,Laan,25.56886743181731,7.158795307291605,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1984,Martijn,Gouman,25.568867431817313,7.158795307291605,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1985,Allard,Feddes,25.568867431817313,7.158795307291605,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 2572,Jan Willem van,Brummelen,25.392568207769482,7.45418067129562,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1978,Mark van,Hoeij,25.534188882669387,7.479488610259432,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1980,Jos van,Eldonk,24.35731039901856,5.792591018052252,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1981,Frank den,Blijker,24.357310399018562,5.792591018052252,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1982,Bernard,Ouwehand,25.615404894737146,7.1586134512218935,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:58 1983,Sytze van der,Laan,25.615404894737146,7.1586134512218935,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1984,Martijn,Gouman,25.615404894737146,7.1586134512218935,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1985,Allard,Feddes,25.615404894737146,7.1586134512218935,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 2572,Jan Willem van,Brummelen,25.4435504547084,7.453971066623662,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1978,Mark van,Hoeij,25.586353253355856,7.4793193304260415,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1980,Jos van,Eldonk,24.387058161288515,5.792519935555947,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1981,Frank den,Blijker,24.387058161288515,5.792519935555947,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1982,Bernard,Ouwehand,25.662653032520005,7.158468350641308,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1983,Sytze van der,Laan,25.662653032520005,7.158468350641308,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1984,Martijn,Gouman,25.66265303252001,7.158468350641308,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1985,Allard,Feddes,25.66265303252001,7.158468350641308,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 2572,Jan Willem van,Brummelen,25.495311252928094,7.453803825387772,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1978,Mark van,Hoeij,25.639421847682133,7.4791912701501335,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1980,Jos van,Eldonk,24.417321574941244,5.7924661621024285,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1981,Frank den,Blijker,24.417321574941244,5.7924661621024285,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1982,Bernard,Ouwehand,25.710720175354748,7.158358582209683,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1983,Sytze van der,Laan,25.710720175354748,7.158358582209683,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1984,Martijn,Gouman,25.71072017535475,7.158358582209683,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 1985,Allard,Feddes,25.71072017535475,7.158358582209683,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 2572,Jan Willem van,Brummelen,25.547969279212648,7.453677307333639,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:14:59 2073,Dirk,Imkamp,25.444370819536925,7.151194781240872,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2074,Thijs van der,Heijden,24.37774670900205,6.800114863941421,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2075,Jos,Adema,25.44437081953692,7.151194781240872,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2076,Johan,Bielderman,23.31990144486262,3.6739830748506557,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2079,Frans van,Mierlo,25.44437081953692,7.151194781240872,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2080,Willem,Muller,25.44437081953692,7.151194781240872,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2675,Marno,Rijk,25.26845443491216,7.445379378512654,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2982,Nico van,Walree,24.08562631180692,7.038825147998058,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2073,Dirk,Imkamp,25.49491854362682,7.151008447116737,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2074,Thijs van der,Heijden,24.422917981516914,6.799958377926175,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2075,Jos,Adema,25.494918543626817,7.151008447116737,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2076,Johan,Bielderman,23.332206515184836,3.6739615819786677,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2079,Frans van,Mierlo,25.49491854362682,7.151008447116737,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2080,Willem,Muller,25.49491854362682,7.151008447116737,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2675,Marno,Rijk,25.32383646657396,7.445164536439724,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2982,Nico van,Walree,24.134408157959538,7.038648835191069,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2073,Dirk,Imkamp,25.54579973839363,7.150853667335333,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2074,Thijs van der,Heijden,24.468387255476816,6.799828392053467,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:00 2075,Jos,Adema,25.54579973839363,7.150853667335333,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2076,Johan,Bielderman,23.34459276384304,3.673943729100061,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2079,Frans van,Mierlo,25.54579973839363,7.150853667335333,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2080,Willem,Muller,25.54579973839363,7.150853667335333,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2675,Marno,Rijk,25.379583861541803,7.4449860758681465,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2982,Nico van,Walree,24.183511825035843,7.038502379823986,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2073,Dirk,Imkamp,25.597135381397525,7.150728988867424,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2074,Thijs van der,Heijden,24.514262640800403,6.799723685855326,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2075,Jos,Adema,25.597135381397525,7.150728988867424,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2076,Johan,Bielderman,23.357089640973957,3.673929348437399,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2079,Frans van,Mierlo,25.597135381397525,7.150728988867424,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2080,Willem,Muller,25.59713538139753,7.150728988867424,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2675,Marno,Rijk,25.435829167486027,7.444842321708793,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2982,Nico van,Walree,24.233054064261253,7.03838440694136,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2073,Dirk,Imkamp,25.649046938255488,7.15063322979367,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2074,Thijs van der,Heijden,24.560652683551513,6.799643266592389,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2075,Jos,Adema,25.649046938255488,7.15063322979367,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2076,Johan,Bielderman,23.369726715524276,3.6739183035272482,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2079,Frans van,Mierlo,25.649046938255488,7.15063322979367,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2080,Willem,Muller,25.649046938255488,7.15063322979367,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:01 2675,Marno,Rijk,25.492705466810747,7.444731911401562,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2982,Nico van,Walree,24.28315209786775,7.03829379813438,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2073,Dirk,Imkamp,25.70165639129549,7.150565468955062,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2074,Thijs van der,Heijden,24.607666391545592,6.799586360555152,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2075,Jos,Adema,25.70165639129549,7.150565468955062,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2076,Johan,Bielderman,23.382533682226057,3.673910488019969,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2079,Frans van,Mierlo,25.70165639129549,7.150565468955062,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2080,Willem,Muller,25.70165639129549,7.150565468955062,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2675,Marno,Rijk,25.55034640804855,7.444653782991298,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2982,Nico van,Walree,24.333923646747106,7.038229681745301,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2073,Dirk,Imkamp,25.75508625170122,7.1505250359894585,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2074,Thijs van der,Heijden,24.65541324520265,6.799552404691269,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2075,Jos,Adema,25.75508625170122,7.1505250359894585,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2076,Johan,Bielderman,23.39554036455323,3.6739058245256935,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2079,Frans van,Mierlo,25.75508625170121,7.1505250359894585,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2080,Willem,Muller,25.75508625170121,7.1505250359894585,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2675,Marno,Rijk,25.60888621916671,7.444607163646588,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2982,Nico van,Walree,24.38548694217129,7.0381914234378655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2073,Dirk,Imkamp,25.809459550521645,7.150511501624413,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:02 2074,Thijs van der,Heijden,24.70400318951313,6.7995410384496955,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 2075,Jos,Adema,25.809459550521645,7.150511501624413,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 2076,Johan,Bielderman,23.408776712532937,3.6739042634913184,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 2079,Frans van,Mierlo,25.809459550521645,7.150511501624413,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 2080,Willem,Muller,25.809459550521645,7.150511501624413,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 2675,Marno,Rijk,25.668459697716866,7.44459155847205,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 2982,Nico van,Walree,24.437960717116148,7.038178617010843,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 2740,Frank,Vandewal,23.27731941034407,6.9085016336101965,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 3430,Tom,Vollebergh,24.97014994679416,7.906014519833275,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 3431,René de,Vreede,24.97014994679416,7.906014519833275,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 3432,Han,Verheijen,24.97014994679416,7.906014519833275,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 3433,Aart-Jan,Hoeven,24.97014994679416,7.906014519833275,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 3434,Rob van den,Berg,24.97014994679416,7.906014519833275,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 3435,Jorik de,Vries,24.97014994679416,7.906014519833275,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 3436,Peter,Schroeten,24.97014994679416,7.906014519833275,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 2740,Frank,Vandewal,23.31801064745163,6.908449274557649,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 3430,Tom,Vollebergh,25.024966330016305,7.905931489336041,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 3431,René de,Vreede,25.024966330016305,7.905931489336041,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:03 3432,Han,Verheijen,25.024966330016305,7.905931489336041,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3433,Aart-Jan,Hoeven,25.024966330016305,7.905931489336041,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3434,Rob van den,Berg,25.024966330016305,7.905931489336041,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3435,Jorik de,Vries,25.024966330016305,7.905931489336041,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3436,Peter,Schroeten,25.024966330016305,7.905931489336041,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 2740,Frank,Vandewal,23.35874184826336,6.908404190393813,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3430,Tom,Vollebergh,25.079836549540282,7.905859995094995,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3431,René de,Vreede,25.079836549540282,7.905859995094995,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3432,Han,Verheijen,25.079836549540282,7.905859995094995,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3433,Aart-Jan,Hoeven,25.079836549540282,7.905859995094995,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3434,Rob van den,Berg,25.079836549540282,7.905859995094995,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3435,Jorik de,Vries,25.079836549540282,7.905859995094995,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3436,Peter,Schroeten,25.079836549540282,7.905859995094995,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 2740,Frank,Vandewal,23.39959103279442,6.908366058957302,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3430,Tom,Vollebergh,25.1348657084633,7.90579952631362,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3431,René de,Vreede,25.1348657084633,7.90579952631362,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3432,Han,Verheijen,25.1348657084633,7.90579952631362,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3433,Aart-Jan,Hoeven,25.1348657084633,7.90579952631362,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3434,Rob van den,Berg,25.1348657084633,7.90579952631362,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3435,Jorik de,Vries,25.1348657084633,7.90579952631362,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:04 3436,Peter,Schroeten,25.1348657084633,7.90579952631362,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 2740,Frank,Vandewal,23.440636310022,6.908334612677684,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3430,Tom,Vollebergh,25.190159029726022,7.905749658748303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3431,René de,Vreede,25.190159029726022,7.905749658748303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3432,Han,Verheijen,25.190159029726022,7.905749658748303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3433,Aart-Jan,Hoeven,25.190159029726022,7.905749658748303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3434,Rob van den,Berg,25.190159029726022,7.905749658748303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3435,Jorik de,Vries,25.190159029726022,7.905749658748303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3436,Peter,Schroeten,25.190159029726022,7.905749658748303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 2740,Frank,Vandewal,23.481955895901404,6.908309637333035,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3430,Tom,Vollebergh,25.24582188038251,7.905710052740613,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3431,René de,Vreede,25.24582188038251,7.905710052740613,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3432,Han,Verheijen,25.245821880382515,7.905710052740613,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3433,Aart-Jan,Hoeven,25.245821880382515,7.905710052740613,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3434,Rob van den,Berg,25.245821880382515,7.905710052740613,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3435,Jorik de,Vries,25.24582188038251,7.905710052740613,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3436,Peter,Schroeten,25.24582188038251,7.905710052740613,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 2740,Frank,Vandewal,23.523628127118982,6.908290970843525,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:05 3430,Tom,Vollebergh,25.301959790127206,7.905680451306145,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3431,René de,Vreede,25.301959790127206,7.905680451306145,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3432,Han,Verheijen,25.301959790127206,7.905680451306145,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3433,Aart-Jan,Hoeven,25.301959790127206,7.905680451306145,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3434,Rob van den,Berg,25.301959790127206,7.905680451306145,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3435,Jorik de,Vries,25.301959790127206,7.905680451306145,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3436,Peter,Schroeten,25.301959790127206,7.905680451306145,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 2740,Frank,Vandewal,23.565731468608416,6.90827850209862,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3430,Tom,Vollebergh,25.358678461420403,7.905660678276202,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3431,René de,Vreede,25.358678461420403,7.905660678276202,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3432,Han,Verheijen,25.358678461420403,7.905660678276202,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3433,Aart-Jan,Hoeven,25.358678461420403,7.905660678276202,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3434,Rob van den,Berg,25.358678461420403,7.905660678276202,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3435,Jorik de,Vries,25.358678461420403,7.905660678276202,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 3436,Peter,Schroeten,25.358678461420403,7.905660678276202,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 1946,Johan,IJff,24.347064251735947,3.5803962770106086,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 1949,Kees de,Bruijn,15.898970427968289,3.9822501476422043,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 1950,Engbert,Wilmink,25.266110908106292,7.052828489460576,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 1951,Jan van,Vliet,18.900807920564205,6.003399453311593,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 1953,Jan Willem,Boissevain,25.77473859327393,5.8886769496001845,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 2666,Eric ter,Mors,24.91117014343618,7.35845159590834,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:06 2929,Hans,Link,38.53742760041938,2.915694930956289,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 3449,Willem,Handels,24.57546287609554,7.679404964098855,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 1946,Johan,IJff,24.36348312426813,3.5803816435448987,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 1949,Kees de,Bruijn,15.919430381677113,3.982229717442509,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 1950,Engbert,Wilmink,25.33669337023825,7.052691203776278,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 1951,Jan van,Vliet,18.949844199660404,6.003321608202438,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 1953,Jan Willem,Boissevain,25.821735638145082,5.888604051400821,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 2666,Eric ter,Mors,24.989151366512512,7.3582909797890785,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 2929,Hans,Link,38.548206749333154,2.9156871860141145,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 3449,Willem,Handels,24.661865949961694,7.679216022798532,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 1946,Johan,IJff,24.379715887511455,3.580372468484226,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 1949,Kees de,Bruijn,15.939658420105074,3.9822169078672136,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 1950,Engbert,Wilmink,25.406475774278086,7.052605125722978,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 1951,Jan van,Vliet,18.998324648445298,6.0032727996171555,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 1953,Jan Willem,Boissevain,25.868199967594876,5.888558344530874,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 2666,Eric ter,Mors,25.066248665924626,7.358190273371556,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 2929,Hans,Link,38.558863715695416,2.9156823300057657,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:07 3449,Willem,Handels,24.747289637782863,7.6790975562053925,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1946,Johan,IJff,24.39580872007781,3.5803686648163926,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1949,Kees de,Bruijn,15.959712087536023,3.9822115974508807,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1950,Engbert,Wilmink,25.47565663569133,7.052569440448828,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1951,Jan van,Vliet,19.04638718304536,6.003252565159474,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1953,Jan Willem,Boissevain,25.914263762337335,5.888539395948786,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 2666,Eric ter,Mors,25.142681366393383,7.358148523590458,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 2929,Hans,Link,38.569428816212344,2.915680316871282,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 3449,Willem,Handels,24.831976951008603,7.679048443541646,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1946,Johan,IJff,24.411807766751664,3.5803701994869597,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1949,Kees de,Bruijn,15.979648886100648,3.9822137400513027,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1950,Engbert,Wilmink,25.544434324524186,7.05258383844771,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1951,Jan van,Vliet,19.094169618558784,6.0032607291867714,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1953,Jan Willem,Boissevain,25.96005910625957,5.888547041161562,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 2666,Eric ter,Mors,25.218668631976747,7.358165368449464,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 2929,Hans,Link,38.579932345382076,2.9156811291130533,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 3449,Willem,Handels,24.916170723074213,7.679068259120377,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1946,Johan,IJff,24.427759134598837,3.5803770941963418,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:08 1949,Kees de,Bruijn,15.999526270927522,3.982223365962627,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1950,Engbert,Wilmink,25.613007048675577,7.05264852306498,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1951,Jan van,Vliet,19.14180965743398,6.0032974070594385,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1953,Jan Willem,Boissevain,26.005717975283645,5.888581388203518,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 2666,Eric ter,Mors,25.294429447588467,7.358241045807506,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 2929,Hans,Link,38.59040457294009,2.91568477821755,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 3449,Willem,Handels,25.000113588923494,7.679157282688136,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1946,Johan,IJff,24.443708894170253,3.5803894260722684,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1949,Kees de,Bruijn,16.01940165164313,3.9822405828540446,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1950,Engbert,Wilmink,25.68157285907192,7.052764216790618,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1951,Jan van,Vliet,19.189444893064692,6.003363008713015,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1953,Jan Willem,Boissevain,26.051372240812093,5.888642820981744,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 2666,Eric ter,Mors,25.370182624715248,7.358376400738562,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 2929,Hans,Link,38.60087574464948,2.9156913050113134,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 3449,Willem,Handels,25.084047991343336,7.679316508078796,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1946,Johan,IJff,24.4597030830607,3.580407328238573,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1949,Kees de,Bruijn,16.03933239680649,3.982265576563278,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1950,Engbert,Wilmink,25.750329664965776,7.052932166535305,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1951,Jan van,Vliet,19.23721282041852,6.003458241664276,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 1953,Jan Willem,Boissevain,26.09715367991448,5.888732002092374,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:09 2666,Eric ter,Mors,25.446146818319036,7.358572891693588,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2929,Hans,Link,38.61137608463733,2.915700779962309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 3449,Willem,Handels,25.168216199691475,7.679547650447259,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2649,Jan Willem,Sanders,24.790436557715164,7.534800810501347,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2650,Robin den,Hamer,24.790436557715164,7.534800810501347,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2652,Lucas,Noldus,24.79043655771516,7.534800810501347,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2653,Frank,Buitenhuis,24.790436557715168,7.534800810501347,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2654,Jan,Hulskotte,24.790436557715164,7.534800810501347,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2655,Jan Joost,Kessler,24.790436557715168,7.534800810501347,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2656,Dick van,Leeuwen,24.790436557715164,7.534800810501347,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 3437,Bernard,Matser,24.367592826294146,7.886298135517452,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2649,Jan Willem,Sanders,24.841610660489803,7.53483149771812,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2650,Robin den,Hamer,24.841610660489803,7.53483149771812,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2652,Lucas,Noldus,24.8416106604898,7.53483149771812,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2653,Frank,Buitenhuis,24.841610660489806,7.53483149771812,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2654,Jan,Hulskotte,24.841610660489806,7.53483149771812,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2655,Jan Joost,Kessler,24.841610660489806,7.53483149771812,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 2656,Dick van,Leeuwen,24.841610660489806,7.53483149771812,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:10 3437,Bernard,Matser,24.424290105224575,7.886334125359266,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2649,Jan Willem,Sanders,24.891726701340822,7.534874058682077,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2650,Robin den,Hamer,24.891726701340822,7.534874058682077,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2652,Lucas,Noldus,24.89172670134082,7.534874058682077,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2653,Frank,Buitenhuis,24.891726701340822,7.534874058682077,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2654,Jan,Hulskotte,24.891726701340822,7.534874058682077,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2655,Jan Joost,Kessler,24.891726701340822,7.534874058682077,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2656,Dick van,Leeuwen,24.891726701340826,7.534874058682077,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 3437,Bernard,Matser,24.479815126533335,7.886384040653779,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2649,Jan Willem,Sanders,24.940880974708374,7.534928777007916,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2650,Robin den,Hamer,24.940880974708374,7.534928777007916,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2652,Lucas,Noldus,24.940880974708374,7.534928777007916,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2653,Frank,Buitenhuis,24.940880974708378,7.534928777007916,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2654,Jan,Hulskotte,24.940880974708378,7.534928777007916,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2655,Jan Joost,Kessler,24.940880974708378,7.534928777007916,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2656,Dick van,Leeuwen,24.940880974708378,7.534928777007916,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 3437,Bernard,Matser,24.534274577635305,7.886448213994101,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2649,Jan Willem,Sanders,24.989169281538775,7.534996038708002,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2650,Robin den,Hamer,24.989169281538775,7.534996038708002,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:11 2652,Lucas,Noldus,24.98916928153877,7.534996038708002,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2653,Frank,Buitenhuis,24.989169281538775,7.534996038708002,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2654,Jan,Hulskotte,24.989169281538775,7.534996038708002,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2655,Jan Joost,Kessler,24.989169281538775,7.534996038708002,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2656,Dick van,Leeuwen,24.989169281538775,7.534996038708002,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 3437,Bernard,Matser,24.58777459918913,7.886527098055219,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2649,Jan Willem,Sanders,25.036686901254328,7.535076336614342,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2650,Robin den,Hamer,25.036686901254328,7.535076336614342,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2652,Lucas,Noldus,25.036686901254324,7.535076336614342,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2653,Frank,Buitenhuis,25.03668690125433,7.535076336614342,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2654,Jan,Hulskotte,25.03668690125433,7.535076336614342,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2655,Jan Joost,Kessler,25.03668690125433,7.535076336614342,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2656,Dick van,Leeuwen,25.03668690125433,7.535076336614342,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 3437,Bernard,Matser,24.64042075404185,7.886621270778606,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2649,Jan Willem,Sanders,25.083528582983032,7.535170275031441,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2650,Robin den,Hamer,25.083528582983032,7.535170275031441,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2652,Lucas,Noldus,25.08352858298303,7.535170275031441,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2653,Frank,Buitenhuis,25.083528582983035,7.535170275031441,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2654,Jan,Hulskotte,25.083528582983035,7.535170275031441,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:12 2655,Jan Joost,Kessler,25.083528582983035,7.535170275031441,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2656,Dick van,Leeuwen,25.083528582983035,7.535170275031441,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 3437,Bernard,Matser,24.692318017511976,7.886731440827188,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2649,Jan Willem,Sanders,25.129788553359347,7.535278574692206,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2650,Robin den,Hamer,25.129788553359347,7.535278574692206,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2652,Lucas,Noldus,25.129788553359347,7.535278574692206,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2653,Frank,Buitenhuis,25.12978855335935,7.535278574692206,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2654,Jan,Hulskotte,25.12978855335935,7.535278574692206,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2655,Jan Joost,Kessler,25.12978855335935,7.535278574692206,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2656,Dick van,Leeuwen,25.12978855335935,7.535278574692206,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 3437,Bernard,Matser,24.74357078603221,7.886858453395218,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2035,Stefan de,Bakker,24.670902556235408,7.180675496075345,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2097,Cees,Braams,24.666560311812358,7.18064876589309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2098,Robert,Clement,24.666560311812358,7.18064876589309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2100,Hans,Hartog,24.666560311812358,7.18064876589309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2101,Guus,Zabel,24.666560311812358,7.18064876589309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2102,Guido,Hollander,24.666560311812358,7.18064876589309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 2103,Paul,Wintgens,24.666560311812358,7.18064876589309,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:13 3438,Bert,Luteijn,24.210969290931992,7.856439046009768,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2035,Stefan de,Bakker,24.71373955289353,7.180688541517155,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2097,Cees,Braams,24.70939695413408,7.180661811167644,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2098,Robert,Clement,24.70939695413408,7.180661811167644,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2100,Hans,Hartog,24.709396954134075,7.180661811167644,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2101,Guus,Zabel,24.709396954134075,7.180661811167644,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2102,Guido,Hollander,24.709396954134075,7.180661811167644,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2103,Paul,Wintgens,24.70939695413408,7.180661811167644,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 3438,Bert,Luteijn,24.26342563930182,7.856456925549248,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2035,Stefan de,Bakker,24.75522761397305,7.180721108786281,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2097,Cees,Braams,24.75088467203524,7.180694378019228,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2098,Robert,Clement,24.750884672035244,7.180694378019228,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2100,Hans,Hartog,24.75088467203524,7.180694378019228,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2101,Guus,Zabel,24.75088467203524,7.180694378019228,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2102,Guido,Hollander,24.75088467203524,7.180694378019228,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2103,Paul,Wintgens,24.750884672035244,7.180694378019228,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 3438,Bert,Luteijn,24.31423013903239,7.856501560856763,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2035,Stefan de,Bakker,24.795451552338207,7.180773517390009,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2097,Cees,Braams,24.791108277678532,7.180746785951035,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2098,Robert,Clement,24.791108277678532,7.180746785951035,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:14 2100,Hans,Hartog,24.791108277678532,7.180746785951035,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2101,Guus,Zabel,24.791108277678532,7.180746785951035,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2102,Guido,Hollander,24.791108277678532,7.180746785951035,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2103,Paul,Wintgens,24.791108277678532,7.180746785951035,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 3438,Bert,Luteijn,24.363486648318712,7.856573389742311,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2035,Stefan de,Bakker,24.834495005614077,7.180846256279321,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2097,Cees,Braams,24.8301514079972,7.180819523907778,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2098,Robert,Clement,24.8301514079972,7.180819523907778,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2100,Hans,Hartog,24.830151407997196,7.180819523907778,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2101,Guus,Zabel,24.830151407997196,7.180819523907778,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2102,Guido,Hollander,24.830151407997196,7.180819523907778,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2103,Paul,Wintgens,24.8301514079972,7.180819523907778,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 3438,Bert,Luteijn,24.41129758620835,7.856673082187445,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2035,Stefan de,Bakker,24.872440388359703,7.1809399927637285,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2097,Cees,Braams,24.86809647686857,7.180913259190422,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2098,Robert,Clement,24.868096476868573,7.180913259190422,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:15 2100,Hans,Hartog,24.86809647686857,7.180913259190422,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2101,Guus,Zabel,24.86809647686857,7.180913259190422,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2102,Guido,Hollander,24.86809647686857,7.180913259190422,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2103,Paul,Wintgens,24.868096476868573,7.180913259190422,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 3438,Bert,Luteijn,24.45776387403466,7.856801552556587,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2035,Stefan de,Bakker,24.90936886720493,7.18105558199926,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2097,Cees,Braams,24.905024650251107,7.181028846944038,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2098,Robert,Clement,24.905024650251107,7.181028846944038,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2100,Hans,Hartog,24.905024650251107,7.181028846944038,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2101,Guus,Zabel,24.905024650251107,7.181028846944038,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2102,Guido,Hollander,24.905024650251107,7.181028846944038,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2103,Paul,Wintgens,24.905024650251107,7.181028846944038,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 3438,Bert,Luteijn,24.502984904970443,7.85695997259089,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2035,Stefan de,Bakker,24.94536035607249,7.181194077248247,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2097,Cees,Braams,24.941015841406525,7.181167340417466,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2098,Robert,Clement,24.941015841406525,7.181167340417466,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2100,Hans,Hartog,24.94101584140652,7.181167340417466,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2101,Guus,Zabel,24.94101584140652,7.181167340417466,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2102,Guido,Hollander,24.94101584140652,7.181167340417466,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 2103,Paul,Wintgens,24.941015841406525,7.181167340417466,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:16 3438,Bert,Luteijn,24.547058538177122,7.857149785456532,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2114,Joris,Klompé,24.377389977579497,7.200247761070986,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2115,Andreas,Jeunink,24.377389977579497,7.200247761070986,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2118,Patrick,Janssen,24.377389977579497,7.200247761070986,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2119,Marc,Lausberg,24.377389977579497,7.200247761070986,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2120,Remco,Veenbrink,24.377389977579497,7.200247761070986,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2610,Jan Karel,Mak,24.16902712991442,7.5016794328909295,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 3439,Alain,Kummer,24.180093800595706,7.872260758924804,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 3440,Philip,Ledeboer,24.180093800595703,7.872260758924804,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2114,Joris,Klompé,24.41003752436,7.200243419344737,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2115,Andreas,Jeunink,24.41003752436,7.200243419344737,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2118,Patrick,Janssen,24.410037524359996,7.200243419344737,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2119,Marc,Lausberg,24.410037524359996,7.200243419344737,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2120,Remco,Veenbrink,24.410037524359996,7.200243419344737,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2610,Jan Karel,Mak,24.20479603188368,7.501674430685753,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 3439,Alain,Kummer,24.21997400126222,7.872254833438435,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 3440,Philip,Ledeboer,24.21997400126222,7.872254833438435,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2114,Joris,Klompé,24.441249766693296,7.200262247188479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2115,Andreas,Jeunink,24.441249766693296,7.200262247188479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2118,Patrick,Janssen,24.441249766693293,7.200262247188479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2119,Marc,Lausberg,24.441249766693293,7.200262247188479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:17 2120,Remco,Veenbrink,24.441249766693293,7.200262247188479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2610,Jan Karel,Mak,24.238992403322133,7.501696122686126,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 3439,Alain,Kummer,24.258100923810876,7.872280529232505,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 3440,Philip,Ledeboer,24.258100923810872,7.872280529232505,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2114,Joris,Klompé,24.47108942549371,7.2003044876680695,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2115,Andreas,Jeunink,24.47108942549371,7.2003044876680695,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2118,Patrick,Janssen,24.471089425493705,7.2003044876680695,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2119,Marc,Lausberg,24.471089425493705,7.2003044876680695,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2120,Remco,Veenbrink,24.471089425493705,7.2003044876680695,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2610,Jan Karel,Mak,24.271684961743265,7.501744788911552,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 3439,Alain,Kummer,24.294551184186687,7.872338177975352,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 3440,Philip,Ledeboer,24.294551184186687,7.872338177975352,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2114,Joris,Klompé,24.499617389818344,7.200370580794767,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2115,Andreas,Jeunink,24.499617389818344,7.200370580794767,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2118,Patrick,Janssen,24.499617389818344,7.200370580794767,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2119,Marc,Lausberg,24.49961738981834,7.200370580794767,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2120,Remco,Veenbrink,24.49961738981834,7.200370580794767,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 2610,Jan Karel,Mak,24.302940417663773,7.501820936258207,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:18 3439,Alain,Kummer,24.32939916065251,7.872428380041846,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 3440,Philip,Ledeboer,24.32939916065251,7.872428380041846,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2114,Joris,Klompé,24.52689268294909,7.200461172598723,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2115,Andreas,Jeunink,24.52689268294909,7.200461172598723,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2118,Patrick,Janssen,24.52689268294909,7.200461172598723,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2119,Marc,Lausberg,24.526892682949086,7.200461172598723,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2120,Remco,Veenbrink,24.526892682949086,7.200461172598723,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2610,Jan Karel,Mak,24.332823437442737,7.501925308950222,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 3439,Alain,Kummer,24.362716952356905,7.872552016889727,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 3440,Philip,Ledeboer,24.362716952356905,7.872552016889727,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2114,Joris,Klompé,24.552972444556126,7.200577125070734,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2115,Andreas,Jeunink,24.552972444556126,7.200577125070734,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2118,Patrick,Janssen,24.552972444556126,7.200577125070734,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2119,Marc,Lausberg,24.552972444556126,7.200577125070734,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2120,Remco,Veenbrink,24.552972444556126,7.200577125070734,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2610,Jan Karel,Mak,24.361396623739868,7.502058899989952,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 3439,Alain,Kummer,24.394574357546215,7.872710264617151,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 3440,Philip,Ledeboer,24.394574357546215,7.872710264617151,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2114,Joris,Klompé,24.57791192673508,7.200719527188942,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2115,Andreas,Jeunink,24.57791192673508,7.200719527188942,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:19 2118,Patrick,Janssen,24.57791192673508,7.200719527188942,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2119,Marc,Lausberg,24.57791192673508,7.200719527188942,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2120,Remco,Veenbrink,24.577911926735073,7.200719527188942,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2610,Jan Karel,Mak,24.388720511173755,7.502222963856703,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 3439,Alain,Kummer,24.425038868723806,7.872904608996692,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 3440,Philip,Ledeboer,24.425038868723806,7.872904608996692,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2671,Henk,Stefels,-1.753006046258277,3.7559783954770283,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2727,Peter,Schwarz,26.711253399254012,7.511394270293303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2728,Bert,Bouwman,26.711253399254012,7.511394270293303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2729,Bernt Andersen,Röed,26.711253399254016,7.511394270293303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2732,Frits Mansvelt,Beck,26.711253399254016,7.511394270293303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2733,Lex,Ros,26.711253399254016,7.511394270293303,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 3441,Hub,Stapper,26.658742152741823,7.859028085274889,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 3450,,,26.658742152741823,7.859028085274889,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2671,Henk,Stefels,-1.7459456473875368,3.755964123148033,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2727,Peter,Schwarz,26.741902700293085,7.511259782423718,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:20 2728,Bert,Bouwman,26.741902700293085,7.511259782423718,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2729,Bernt Andersen,Röed,26.741902700293085,7.511259782423718,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2732,Frits Mansvelt,Beck,26.74190270029309,7.511259782423718,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2733,Lex,Ros,26.74190270029309,7.511259782423718,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 3441,Hub,Stapper,26.692701020211693,7.8588702876179415,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 3450,,,26.692701020211693,7.8588702876179415,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2671,Henk,Stefels,-1.7380605483495755,3.75595377551763,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2727,Peter,Schwarz,26.77613203755319,7.5111622757239465,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2728,Bert,Bouwman,26.77613203755319,7.5111622757239465,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2729,Bernt Andersen,Röed,26.77613203755319,7.5111622757239465,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2732,Frits Mansvelt,Beck,26.776132037553193,7.5111622757239465,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2733,Lex,Ros,26.776132037553193,7.5111622757239465,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 3441,Hub,Stapper,26.730626502626933,7.858755880588815,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 3450,,,26.730626502626937,7.858755880588815,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2671,Henk,Stefels,-1.7293408117677838,3.755947229597647,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2727,Peter,Schwarz,26.813984549340347,7.5111005923860334,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2728,Bert,Bouwman,26.813984549340347,7.5111005923860334,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:21 2729,Bernt Andersen,Röed,26.81398454934035,7.5111005923860334,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2732,Frits Mansvelt,Beck,26.813984549340354,7.5111005923860334,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2733,Lex,Ros,26.813984549340354,7.5111005923860334,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 3441,Hub,Stapper,26.772566396445168,7.85868350590549,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 3450,,,26.772566396445168,7.85868350590549,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2671,Henk,Stefels,-1.7197760465821026,3.7559443903388967,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2727,Peter,Schwarz,26.85550534340751,7.511073837434912,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2728,Bert,Bouwman,26.85550534340751,7.511073837434912,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2729,Bernt Andersen,Röed,26.85550534340751,7.511073837434912,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2732,Frits Mansvelt,Beck,26.855505343407515,7.511073837434912,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2733,Lex,Ros,26.855505343407515,7.511073837434912,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 3441,Hub,Stapper,26.818570680235286,7.858652113594948,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 3450,,,26.818570680235286,7.858652113594948,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2671,Henk,Stefels,-1.709355553700124,3.755945187784909,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2727,Peter,Schwarz,26.900740864680795,7.511081351949259,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2728,Bert,Bouwman,26.900740864680795,7.511081351949259,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2729,Bernt Andersen,Röed,26.900740864680795,7.511081351949259,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2732,Frits Mansvelt,Beck,26.900740864680802,7.511081351949259,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2733,Lex,Ros,26.900740864680802,7.511081351949259,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 3441,Hub,Stapper,26.86869081412974,7.858660930580021,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 3450,,,26.86869081412974,7.858660930580021,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:22 2671,Henk,Stefels,-1.69806848590302,3.7559495739413884,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2727,Peter,Schwarz,26.94973820110545,7.511122683589071,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2728,Bert,Bouwman,26.94973820110545,7.511122683589071,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2729,Bernt Andersen,Röed,26.94973820110545,7.511122683589071,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2732,Frits Mansvelt,Beck,26.949738201105458,7.511122683589071,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2733,Lex,Ros,26.949738201105458,7.511122683589071,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 3441,Hub,Stapper,26.92297897071445,7.858709426103552,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 3450,,,26.92297897071445,7.858709426103552,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2671,Henk,Stefels,-1.6859040208365643,3.7559575193371884,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2727,Peter,Schwarz,27.002544332689066,7.51119755420479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2728,Bert,Bouwman,27.002544332689066,7.51119755420479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2729,Bernt Andersen,Röed,27.00254433268907,7.51119755420479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2732,Frits Mansvelt,Beck,27.002544332689073,7.51119755420479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2733,Lex,Ros,27.002544332689073,7.51119755420479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 3441,Hub,Stapper,26.981487202982393,7.858797273726158,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 3450,,,26.981487202982393,7.858797273726158,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2612,Matthijs van der,Doef,23.547460044933832,7.5480528137026655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:23 2613,Patrick,Overdijk,23.547460044933832,7.5480528137026655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2614,Jaap Jan,Stoffelsma,23.547460044933832,7.5480528137026655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2615,Ruud,Arendts,23.547460044933832,7.5480528137026655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2619,Adriaan,Olgers,23.547460044933835,7.5480528137026655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 3442,Gijs,Maertzdorf,23.801169516265702,7.898553162165622,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 3443,Hans,Middelkoop,23.801169516265706,7.898553162165622,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 3444,Lex,Vermeij,23.801169516265706,7.898553162165622,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2612,Matthijs van der,Doef,23.597289688809568,7.548092151109946,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2613,Patrick,Overdijk,23.597289688809568,7.548092151109946,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2614,Jaap Jan,Stoffelsma,23.59728968880957,7.548092151109946,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2615,Ruud,Arendts,23.59728968880957,7.548092151109946,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2619,Adriaan,Olgers,23.597289688809575,7.548092151109946,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 3442,Gijs,Maertzdorf,23.856331644636562,7.898599230174798,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 3443,Hans,Middelkoop,23.856331644636562,7.898599230174798,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 3444,Lex,Vermeij,23.856331644636562,7.898599230174798,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2612,Matthijs van der,Doef,23.645056994493142,7.548158298281552,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2613,Patrick,Overdijk,23.645056994493142,7.548158298281552,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2614,Jaap Jan,Stoffelsma,23.645056994493142,7.548158298281552,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2615,Ruud,Arendts,23.645056994493142,7.548158298281552,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:24 2619,Adriaan,Olgers,23.645056994493146,7.548158298281552,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 3442,Gijs,Maertzdorf,23.909210735135744,7.898676695015076,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 3443,Hans,Middelkoop,23.909210735135744,7.898676695015076,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 3444,Lex,Vermeij,23.909210735135744,7.898676695015076,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 2612,Matthijs van der,Doef,23.690836384684026,7.548252009063117,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 2613,Patrick,Overdijk,23.690836384684026,7.548252009063117,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 2614,Jaap Jan,Stoffelsma,23.690836384684026,7.548252009063117,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 2615,Ruud,Arendts,23.690836384684026,7.548252009063117,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 2619,Adriaan,Olgers,23.69083638468403,7.548252009063117,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 3442,Gijs,Maertzdorf,23.95988917475586,7.898786439413703,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 3443,Hans,Middelkoop,23.959889174755865,7.898786439413703,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 3444,Lex,Vermeij,23.959889174755865,7.898786439413703,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 2612,Matthijs van der,Doef,23.734701616301802,7.548374233673636,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 2613,Patrick,Overdijk,23.734701616301802,7.548374233673636,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 2614,Jaap Jan,Stoffelsma,23.734701616301802,7.548374233673636,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 2615,Ruud,Arendts,23.734701616301802,7.548374233673636,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 2619,Adriaan,Olgers,23.734701616301802,7.548374233673636,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 3442,Gijs,Maertzdorf,24.008448613461688,7.8989295760229545,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:25 3443,Hans,Middelkoop,24.008448613461688,7.8989295760229545,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 3444,Lex,Vermeij,24.008448613461688,7.8989295760229545,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2612,Matthijs van der,Doef,23.776725533236068,7.548526136228057,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2613,Patrick,Overdijk,23.776725533236068,7.548526136228057,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2614,Jaap Jan,Stoffelsma,23.77672553323607,7.548526136228057,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2615,Ruud,Arendts,23.77672553323607,7.548526136228057,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2619,Adriaan,Olgers,23.776725533236075,7.548526136228057,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 3442,Gijs,Maertzdorf,24.054969690480725,7.899107467934043,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 3443,Hans,Middelkoop,24.054969690480725,7.899107467934043,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 3444,Lex,Vermeij,24.054969690480725,7.899107467934043,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2612,Matthijs van der,Doef,23.816979853723616,7.548709112469822,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2613,Patrick,Overdijk,23.816979853723616,7.548709112469822,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2614,Jaap Jan,Stoffelsma,23.816979853723616,7.548709112469822,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2615,Ruud,Arendts,23.816979853723616,7.548709112469822,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2619,Adriaan,Olgers,23.81697985372362,7.548709112469822,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 3442,Gijs,Maertzdorf,24.099531798926705,7.89932174943479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 3443,Hans,Middelkoop,24.09953179892671,7.89932174943479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 3444,Lex,Vermeij,24.09953179892671,7.89932174943479,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2612,Matthijs van der,Doef,23.855534990180278,7.548924808002188,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2613,Patrick,Overdijk,23.855534990180278,7.548924808002188,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:26 2614,Jaap Jan,Stoffelsma,23.85553499018028,7.548924808002188,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2615,Ruud,Arendts,23.855534990180278,7.548924808002188,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2619,Adriaan,Olgers,23.85553499018028,7.548924808002188,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 3442,Gijs,Maertzdorf,24.142212886350933,7.899574347348942,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 3443,Hans,Middelkoop,24.142212886350933,7.899574347348942,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 3444,Lex,Vermeij,24.142212886350933,7.899574347348942,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2747,Frank,Kaiser,23.593874233698806,7.543402184794578,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2748,Louis de,Wiljes,23.593874233698806,7.543402184794578,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2749,Johan,Huizinga,23.59387423369881,7.543402184794578,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2750,Richard,Streng,23.59387423369881,7.543402184794578,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2752,Jan,Breken,23.59387423369881,7.543402184794578,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2753,Martijn,Kruithof,23.59387423369881,7.543402184794578,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 3445,Jacques,Ahlrichs,23.250112489556447,7.896525963485635,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 3446,Gerrit-Jan,Nieuwenhuis,23.250112489556447,7.896525963485635,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2747,Frank,Kaiser,23.6277983870916,7.543550599356659,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2748,Louis de,Wiljes,23.6277983870916,7.543550599356659,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2749,Johan,Huizinga,23.6277983870916,7.543550599356659,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2750,Richard,Streng,23.6277983870916,7.543550599356659,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:27 2752,Jan,Breken,23.6277983870916,7.543550599356659,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2753,Martijn,Kruithof,23.6277983870916,7.543550599356659,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 3445,Jacques,Ahlrichs,23.28769937958646,7.896700008644165,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 3446,Gerrit-Jan,Nieuwenhuis,23.28769937958646,7.896700008644165,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2747,Frank,Kaiser,23.658392556893553,7.5437433966976615,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2748,Louis de,Wiljes,23.658392556893553,7.5437433966976615,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2749,Johan,Huizinga,23.658392556893556,7.543743396697662,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2750,Richard,Streng,23.658392556893556,7.543743396697662,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2752,Jan,Breken,23.658392556893556,7.543743396697662,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2753,Martijn,Kruithof,23.658392556893556,7.543743396697662,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 3445,Jacques,Ahlrichs,23.321596753018042,7.896926100693709,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 3446,Gerrit-Jan,Nieuwenhuis,23.32159675301804,7.896926100693709,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2747,Frank,Kaiser,23.68569133791488,7.543982608196982,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2748,Louis de,Wiljes,23.68569133791488,7.543982608196982,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2749,Johan,Huizinga,23.685691337914882,7.543982608196982,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2750,Richard,Streng,23.685691337914882,7.543982608196982,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2752,Jan,Breken,23.685691337914882,7.543982608196982,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 2753,Martijn,Kruithof,23.685691337914882,7.543982608196982,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 3445,Jacques,Ahlrichs,23.351842939807767,7.8972066213257115,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:28 3446,Gerrit-Jan,Nieuwenhuis,23.351842939807767,7.8972066213257115,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2747,Frank,Kaiser,23.709727415246345,7.5442705935105066,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2748,Louis de,Wiljes,23.709727415246345,7.5442705935105066,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2749,Johan,Huizinga,23.70972741524635,7.5442705935105066,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2750,Richard,Streng,23.70972741524635,7.5442705935105066,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2752,Jan,Breken,23.70972741524635,7.5442705935105066,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2753,Martijn,Kruithof,23.70972741524635,7.5442705935105066,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 3445,Jacques,Ahlrichs,23.378474154003463,7.89754433704169,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 3446,Gerrit-Jan,Nieuwenhuis,23.37847415400346,7.89754433704169,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2747,Frank,Kaiser,23.730531174972974,7.544610062862302,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2748,Louis de,Wiljes,23.730531174972974,7.544610062862302,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2749,Johan,Huizinga,23.730531174972974,7.544610062862302,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2750,Richard,Streng,23.730531174972974,7.544610062862302,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2752,Jan,Breken,23.730531174972974,7.544610062862302,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2753,Martijn,Kruithof,23.730531174972974,7.544610062862302,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 3445,Jacques,Ahlrichs,23.401524062427164,7.897942425265812,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 3446,Gerrit-Jan,Nieuwenhuis,23.401524062427164,7.897942425265812,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:29 2747,Frank,Kaiser,23.74813037472209,7.545004096731655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2748,Louis de,Wiljes,23.74813037472209,7.545004096731655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2749,Johan,Huizinga,23.74813037472209,7.545004096731655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2750,Richard,Streng,23.74813037472209,7.545004096731655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2752,Jan,Breken,23.74813037472209,7.545004096731655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2753,Martijn,Kruithof,23.74813037472209,7.545004096731655,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 3445,Jacques,Ahlrichs,23.421023419652883,7.898404497396441,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 3446,Gerrit-Jan,Nieuwenhuis,23.421023419652883,7.898404497396441,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2747,Frank,Kaiser,23.76254989213288,7.5454561636767865,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2748,Louis de,Wiljes,23.76254989213288,7.5454561636767865,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2749,Johan,Huizinga,23.762549892132885,7.5454561636767865,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2750,Richard,Streng,23.762549892132885,7.5454561636767865,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2752,Jan,Breken,23.762549892132885,7.5454561636767865,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2753,Martijn,Kruithof,23.762549892132885,7.5454561636767865,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 3445,Jacques,Ahlrichs,23.436999789318776,7.898934619665049,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 3446,Gerrit-Jan,Nieuwenhuis,23.436999789318776,7.898934619665049,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2153,Frank de,Winter,24.240055012464367,7.196983637234695,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2156,Philip,Todd,24.24005501246437,7.196983637234695,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:30 2157,Henk,Wismeijer,16.362311834847265,5.996163118886447,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2158,Jos,Broersen,15.293641466394778,6.127594354639188,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2159,Huub,Hillege,24.24005501246437,7.196983637234695,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2771,Frans Willem,Hogewind,24.593626551644384,7.495140309796068,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 3447,Dirk van der,Heide,24.274779029563064,7.864745290993082,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 3448,Jeroen,Niemeijer,24.27477902956306,7.864745290993082,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2153,Frank de,Winter,24.2499266002988,7.19701106790089,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2156,Philip,Todd,24.249926600298803,7.19701106790089,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2157,Henk,Wismeijer,16.368950058144144,5.996178007127996,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2158,Jos,Broersen,15.300595072938734,6.12761034076854,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2159,Huub,Hillege,24.249926600298803,7.19701106790089,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2771,Frans Willem,Hogewind,24.60443383503116,7.495171879177127,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 3447,Dirk van der,Heide,24.286829212089064,7.864782694749989,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 3448,Jeroen,Niemeijer,24.286829212089064,7.864782694749989,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2153,Frank de,Winter,24.25834480921922,7.197159518803649,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2156,Philip,Todd,24.258344809219224,7.197159518803649,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2157,Henk,Wismeijer,16.37461094588691,5.9962585805379005,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2158,Jos,Broersen,15.306524910531152,6.12769685578302,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2159,Huub,Hillege,24.258344809219224,7.197159518803649,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:31 2771,Frans Willem,Hogewind,24.613649978466032,7.49534272800252,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 3447,Dirk van der,Heide,24.297105264506815,7.8649851180024015,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 3448,Jeroen,Niemeijer,24.297105264506815,7.8649851180024015,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2153,Frank de,Winter,24.265328195573883,7.197430598649652,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2156,Philip,Todd,24.265328195573886,7.197430598649652,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2157,Henk,Wismeijer,16.379306976431153,5.996405713691122,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2158,Jos,Broersen,15.311444050376663,6.127854838604406,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2159,Huub,Hillege,24.265328195573886,7.197430598649652,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2771,Frans Willem,Hogewind,24.621295297192862,7.495654706781787,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 3447,Dirk van der,Heide,24.305629838428935,7.865354751778948,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 3448,Jeroen,Niemeijer,24.305629838428935,7.865354751778948,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2153,Frank de,Winter,24.270892820406797,7.197827006479917,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2156,Philip,Todd,24.270892820406797,7.197827006479917,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2157,Henk,Wismeijer,16.383048950146406,5.9966208741962435,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2158,Jos,Broersen,15.315363805972392,6.1280858647928405,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2159,Huub,Hillege,24.270892820406797,7.197827006479917,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2771,Frans Willem,Hogewind,24.62738737462954,7.496110920071729,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 3447,Dirk van der,Heide,24.31242253946649,7.865895271637483,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 3448,Jeroen,Niemeijer,24.31242253946649,7.865895271637483,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:32 2153,Frank de,Winter,24.275052218765058,7.198352552804868,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2156,Philip,Todd,24.27505221876506,7.198352552804868,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2157,Henk,Wismeijer,16.385845968776625,5.996906134294163,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2158,Jos,Broersen,15.3182937114879,6.128392158987851,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2159,Huub,Hillege,24.27505221876506,7.198352552804868,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2771,Frans Willem,Hogewind,24.63194102876605,7.496715750719045,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 3447,Dirk van der,Heide,24.31749988976272,7.866611866257451,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 3448,Jeroen,Niemeijer,24.31749988976272,7.866611866257451,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2153,Frank de,Winter,24.27781736484681,7.199012172301639,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2156,Philip,Todd,24.277817364846815,7.199012172301639,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2157,Henk,Wismeijer,16.3877054120037,5.997264177935487,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2158,Jos,Broersen,15.320241497215143,6.128776602488673,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2159,Huub,Hillege,24.277817364846815,7.199012172301639,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2771,Frans Willem,Hogewind,24.634968274008923,7.497474874354949,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 3447,Dirk van der,Heide,24.320875285449315,7.867511254423027,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 3448,Jeroen,Niemeijer,24.320875285449315,7.867511254423027,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2153,Frank de,Winter,24.279196570465004,7.199811803319061,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2156,Philip,Todd,24.279196570465007,7.199811803319061,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:33 2157,Henk,Wismeijer,16.38863286916859,5.997698235619759,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:34 2158,Jos,Broersen,15.321213018045732,6.129242663264048,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:34 2159,Huub,Hillege,24.279196570465007,7.199811803319061,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:34 2771,Frans Willem,Hogewind,24.636478210020677,7.498395120567673,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:34 3447,Dirk van der,Heide,24.322558872701826,7.8686015202941855,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 06:15:34 3448,Jeroen,Niemeijer,24.322558872701826,7.8686015202941855,34,Spaarne lenterace HM 8+ E-J +Jul-01-2022 14:22:37 2495,Martine van,Tol,28.306865246264337,6.816989124358722,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2496,Doris,Maat,28.306865246264344,6.816989124358722,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2497,Josine,Vrouwe,28.306865246264348,6.816989124358722,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3451,Evelijn,Plantenberg,31.29901365294428,7.40102314804264,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2495,Martine van,Tol,28.31896798412418,6.815438244993409,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2496,Doris,Maat,28.31896798412418,6.815438244993409,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2497,Josine,Vrouwe,28.318967984124182,6.815438244993409,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3451,Evelijn,Plantenberg,31.31401817818882,7.398827457444401,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2495,Martine van,Tol,28.343140624293184,6.814117289810488,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2496,Doris,Maat,28.343140624293184,6.814117289810488,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2497,Josine,Vrouwe,28.343140624293188,6.814117289810488,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3451,Evelijn,Plantenberg,31.34398652038076,7.396957167066776,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2495,Martine van,Tol,28.379288262132597,6.813017470728319,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2496,Doris,Maat,28.3792882621326,6.813017470728319,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 2497,Josine,Vrouwe,28.3792882621326,6.813017470728319,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3451,Evelijn,Plantenberg,31.388801020271053,7.395399890733038,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3011,Marlies van der,Lugt,30.218500221507135,6.835707155373119,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3012,Janneke,Voordouw,30.218500221507135,6.835707155373119,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3452,Suzan van,Kruchten,27.80874783846375,7.423343333141089,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3453,Silke,Tas,27.80874783846375,7.423343333141089,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3011,Marlies van der,Lugt,30.269390595985982,6.834855694113516,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3012,Janneke,Voordouw,30.269390595985982,6.834855694113516,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:37 3452,Suzan van,Kruchten,27.871771864107448,7.42214079762806,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3453,Silke,Tas,27.871771864107448,7.42214079762806,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3011,Marlies van der,Lugt,30.325228400705804,6.834128553364392,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3012,Janneke,Voordouw,30.325228400705804,6.834128553364392,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3452,Suzan van,Kruchten,27.940922922094142,7.421113806772947,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3453,Silke,Tas,27.940922922094142,7.421113806772947,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3011,Marlies van der,Lugt,30.3860521645511,6.833517871292311,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3012,Janneke,Voordouw,30.3860521645511,6.833517871292311,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3452,Suzan van,Kruchten,28.016248727643625,7.420251273128323,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3453,Silke,Tas,28.016248727643625,7.420251273128323,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 2366,Eveline,Veraart,35.96875041305697,3.6467912627447276,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 2367,Inge,Nijhuis,25.637048170447116,5.784838914480988,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 2368,Lise,Klausen,29.613089515839413,4.980575502572708,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3013,Heleen van der,Pol,28.90565409739646,5.128473046018017,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 2366,Eveline,Veraart,35.99508694443857,3.6466270684793605,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 2367,Inge,Nijhuis,25.715147316563815,5.783928629382508,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 2368,Lise,Klausen,29.66642792013455,4.980082369680251,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3013,Heleen van der,Pol,28.96292228556364,5.1279209633070835,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 2366,Eveline,Veraart,36.01887379283507,3.646520555914269,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 2367,Inge,Nijhuis,25.785685555698535,5.783338074155419,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 2368,Lise,Klausen,29.714602545649825,4.97976246089907,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 3013,Heleen van der,Pol,29.01464624610108,5.127562809616676,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:38 2366,Eveline,Veraart,36.040144185381756,3.6464723621874433,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2367,Inge,Nijhuis,25.84876142060243,5.783070851558791,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2368,Lise,Klausen,29.757680686075098,4.979617708130675,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 3013,Heleen van der,Pol,29.060898230658324,5.127400751078885,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2354,Anne-Lize,Hoftijzer,27.587002002922627,6.741045424089355,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2356,Rachael,Davies,27.587002002922627,6.741045424089355,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2357,Elien,Meijer,29.934614510338765,6.275674506427879,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 3008,Christine,Nabuurs,28.098238205944124,6.701062915930852,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2354,Anne-Lize,Hoftijzer,27.63574809518506,6.740748362778984,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2356,Rachael,Davies,27.635748095185065,6.740748362778984,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2357,Elien,Meijer,29.975288489500578,6.275452346991581,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 3008,Christine,Nabuurs,28.14623545651547,6.700773193194544,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2354,Anne-Lize,Hoftijzer,27.68501754906786,6.740560978277271,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2356,Rachael,Davies,27.685017549067876,6.740560978277271,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2357,Elien,Meijer,30.01639916417281,6.275312211135502,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 3008,Christine,Nabuurs,28.194748028780648,6.70059043794558,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2354,Anne-Lize,Hoftijzer,27.73492745979972,6.740481315263005,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2356,Rachael,Davies,27.73492745979972,6.740481315263005,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2357,Elien,Meijer,30.058044239190238,6.275252635230872,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 3008,Christine,Nabuurs,28.243891219141283,6.700512743000557,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2189,Anita,Meiland,26.882495475830773,7.05467114096871,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2190,Pieta van,Dishoeck,27.120871830060988,6.787536608918956,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2192,Tessa,Zwolle-Appeldoorn,27.120871830060988,6.787536608918956,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:39 2380,Dorien,Stilma,28.022136348922857,6.24800609738038,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2189,Anita,Meiland,26.939926329364923,7.054320610650959,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2190,Pieta van,Dishoeck,27.172719778102007,6.787239673851491,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2192,Tessa,Zwolle-Appeldoorn,27.172719778102,6.787239673851491,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2380,Dorien,Stilma,28.06425213225527,6.247793255666685,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2189,Anita,Meiland,26.99974396829838,7.054074211226286,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2190,Pieta van,Dishoeck,27.226722489963393,6.7870309493675745,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2192,Tessa,Zwolle-Appeldoorn,27.226722489963397,6.7870309493675745,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2380,Dorien,Stilma,28.10811821756914,6.247643644133844,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2189,Anita,Meiland,27.062073541033126,7.053929040726376,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2190,Pieta van,Dishoeck,27.28299294825718,6.7869079761213715,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2192,Tessa,Zwolle-Appeldoorn,27.28299294825718,6.7869079761213715,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 2380,Dorien,Stilma,28.15382637997591,6.24755549867044,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3454,Mandy,Hulst,26.478586911040683,7.482011906773961,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3455,Zillah van der,Meij,26.478586911040683,7.482011906773961,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3456,Fleur,Hiensch,26.478586911040686,7.482011906773961,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3457,Margot,Tjalma,26.478586911040686,7.482011906773961,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3454,Mandy,Hulst,26.541859026510352,7.481726901820991,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3455,Zillah van der,Meij,26.541859026510352,7.481726901820991,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3456,Fleur,Hiensch,26.541859026510352,7.481726901820991,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3457,Margot,Tjalma,26.541859026510352,7.481726901820991,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3454,Mandy,Hulst,26.608138316895683,7.481494630458435,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3455,Zillah van der,Meij,26.608138316895683,7.481494630458435,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:40 3456,Fleur,Hiensch,26.60813831689569,7.481494630458435,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 3457,Margot,Tjalma,26.60813831689569,7.481494630458435,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 3454,Mandy,Hulst,26.67752403485305,7.481313092582119,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 3455,Zillah van der,Meij,26.67752403485305,7.481313092582119,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 3456,Fleur,Hiensch,26.677524034853054,7.481313092582119,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 3457,Margot,Tjalma,26.677524034853054,7.481313092582119,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2370,Maud van,Etten,27.045374332699538,6.327694154829895,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2371,Marit de,Haan,27.80680350665296,6.077485500178775,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2372,Antoinette der,Kinderen,27.86445755881526,5.8848135257808405,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2373,Marion,Dauwerse,21.44184664530489,3.59491807139901,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2370,Maud van,Etten,27.13107214061415,6.327313343604682,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2371,Marit de,Haan,27.883605872845244,6.077167051556646,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2372,Antoinette der,Kinderen,27.935067032332142,5.884535550469927,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2373,Marion,Dauwerse,21.46476405399183,3.5948701369605627,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2370,Maud van,Etten,27.219066279766484,6.327082888704874,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2371,Marit de,Haan,27.962466210844614,6.076974337734306,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2372,Antoinette der,Kinderen,28.00756853487126,5.884367330358427,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2373,Marion,Dauwerse,21.488295550281894,3.5948411296464178,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2370,Maud van,Etten,27.309588391646475,6.326998879568345,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2371,Marit de,Haan,28.043592117729325,6.076904086809789,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2372,Antoinette der,Kinderen,28.08215292409917,5.884306008378405,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2373,Marion,Dauwerse,21.51250308001504,3.5948305556370355,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2374,Nicolette,Buiter,26.39035442470107,6.270916904783741,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:41 2375,Cisca,Kruijsdijk,26.172740961155156,6.758327066310759,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3028,Marieke,Bos,25.367356660079253,6.702551662904702,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3458,Sanne,Beukers,25.10114453624525,7.326372678891584,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 2374,Nicolette,Buiter,26.453930134016694,6.270862639470365,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 2375,Cisca,Kruijsdijk,26.249403344543396,6.758253851855602,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3028,Marieke,Bos,25.442405580040134,6.702480913943286,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3458,Sanne,Beukers,25.1964051546522,7.326268396752532,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 2374,Nicolette,Buiter,26.517791332764368,6.2708474275261725,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 2375,Cisca,Kruijsdijk,26.32640998363131,6.758233327957538,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3028,Marieke,Bos,25.517791510374412,6.7024610811901635,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3458,Sanne,Beukers,25.292093544925773,7.326239163718612,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 2374,Nicolette,Buiter,26.582072756339823,6.2708710872248545,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 2375,Cisca,Kruijsdijk,26.403923348278454,6.758265249528865,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3028,Marieke,Bos,25.593673501543957,6.702491927799083,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3458,Sanne,Beukers,25.388411591987996,7.326284630916289,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3030,Jette,Eshuis,25.410103770712894,6.780873364350543,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3032,Marian,Schuver,25.410103770712897,6.780873364350543,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3033,Suzan,Ruijtenberg,25.410103770712897,6.780873364350543,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3459,Clarine,Bronkhorst,25.02631446787568,7.362128187880907,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3030,Jette,Eshuis,25.485566628197763,6.780853135253653,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3032,Marian,Schuver,25.485566628197773,6.780853135253653,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3033,Suzan,Ruijtenberg,25.485566628197773,6.780853135253653,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:42 3459,Clarine,Bronkhorst,25.120175129305,7.362099363520201,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 3030,Jette,Eshuis,25.56122969645292,6.780878314828026,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 3032,Marian,Schuver,25.561229696452926,6.780878314828026,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 3033,Suzan,Ruijtenberg,25.561229696452926,6.780878314828026,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 3459,Clarine,Bronkhorst,25.21428481278239,7.362135241792739,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 3030,Jette,Eshuis,25.637246733259612,6.780949046797505,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 3032,Marian,Schuver,25.637246733259612,6.780949046797505,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 3033,Suzan,Ruijtenberg,25.637246733259612,6.780949046797505,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 3459,Clarine,Bronkhorst,25.308834762153214,7.362236027264087,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 2382,Iris,Teeuw,25.132224795100935,6.1686716354673505,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 2383,Mandy,Backx,25.24845960009349,5.964332514860522,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 2385,Eva,Vennik,25.13222479510094,6.1686716354673505,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 3055,Femke,Kuivenhoven,24.129535251769248,6.569852592502786,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 2382,Iris,Teeuw,25.206823871241237,6.168718954741907,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 2383,Mandy,Backx,25.317054747694414,5.96437389461735,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 2385,Eva,Vennik,25.206823871241244,6.168718954741907,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 3055,Femke,Kuivenhoven,24.217385329574682,6.569914208167415,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 2382,Iris,Teeuw,25.281333375772412,6.168835911168774,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 2383,Mandy,Backx,25.38556753264331,5.964476170797753,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:43 2385,Eva,Vennik,25.281333375772423,6.168835911168774,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 3055,Femke,Kuivenhoven,24.305129925204756,6.570066499737424,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2382,Iris,Teeuw,25.35593187554982,6.169023545721941,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2383,Mandy,Backx,25.454162150268516,5.9646402540481995,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2385,Eva,Vennik,25.355931875549825,6.169023545721941,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 3055,Femke,Kuivenhoven,24.392979324268197,6.570310821528217,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2386,Tamara,Vreeken-Poldervaart,25.190438907405735,6.184282980919878,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2387,Willemke,Stilma,25.190438907405742,6.184282980919878,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2388,Lisa van der,Putten,25.190438907405742,6.184282980919878,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 3460,Nienke,Engberts,23.55332319468446,7.250859310557609,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2386,Tamara,Vreeken-Poldervaart,25.257607709756048,6.184446488998139,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2387,Willemke,Stilma,25.257607709756055,6.184446488998139,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2388,Lisa van der,Putten,25.25760770975605,6.184446488998139,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 3460,Nienke,Engberts,23.655887171161904,7.251184464919654,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2386,Tamara,Vreeken-Poldervaart,25.322712068209363,6.184672388935672,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2387,Willemke,Stilma,25.322712068209373,6.184672388935672,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2388,Lisa van der,Putten,25.322712068209373,6.184672388935672,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 3460,Nienke,Engberts,23.755298827397194,7.25163368272769,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2386,Tamara,Vreeken-Poldervaart,25.3858837141218,6.184963274295648,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2387,Willemke,Stilma,25.385883714121803,6.184963274295648,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:44 2388,Lisa van der,Putten,25.385883714121803,6.184963274295648,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3460,Nienke,Engberts,23.85175931170972,7.252212111769452,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3461,Anna,Zanstra,24.1198963019844,7.4833204909163955,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3462,Noor,Klapwijk,24.1198963019844,7.4833204909163955,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3463,Chiharu,Inoue,24.119896301984404,7.4833204909163955,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3464,Joanne,Preuter,24.119896301984404,7.4833204909163955,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3461,Anna,Zanstra,24.192524909667657,7.48363239828563,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3462,Noor,Klapwijk,24.192524909667657,7.48363239828563,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3463,Chiharu,Inoue,24.192524909667657,7.48363239828563,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3464,Joanne,Preuter,24.192524909667657,7.48363239828563,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3461,Anna,Zanstra,24.263603266007117,7.484008283878318,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3462,Noor,Klapwijk,24.263603266007117,7.484008283878318,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3463,Chiharu,Inoue,24.263603266007117,7.484008283878318,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3464,Joanne,Preuter,24.263603266007113,7.484008283878318,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3461,Anna,Zanstra,24.333257421929524,7.484451152584649,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3462,Noor,Klapwijk,24.333257421929524,7.484451152584649,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3463,Chiharu,Inoue,24.333257421929524,7.484451152584649,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3464,Joanne,Preuter,24.333257421929524,7.484451152584649,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3465,Emma van de,Vreugde,23.64931077467426,7.486642868682478,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3466,Anne van,Klinken,23.64931077467426,7.486642868682478,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3467,Elif,Karatas,23.649310774674262,7.486642868682478,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3468,Sophie,Mensen,23.649310774674262,7.486642868682478,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3465,Emma van de,Vreugde,23.715047370712483,7.487032171064296,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3466,Anne van,Klinken,23.715047370712483,7.487032171064296,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:45 3467,Elif,Karatas,23.715047370712483,7.487032171064296,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3468,Sophie,Mensen,23.715047370712483,7.487032171064296,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3465,Emma van de,Vreugde,23.778271144480414,7.487506551096468,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3466,Anne van,Klinken,23.778271144480414,7.487506551096468,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3467,Elif,Karatas,23.77827114448042,7.487506551096468,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3468,Sophie,Mensen,23.77827114448042,7.487506551096468,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3465,Emma van de,Vreugde,23.839086317083606,7.488070209977709,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3466,Anne van,Klinken,23.839086317083606,7.488070209977709,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3467,Elif,Karatas,23.839086317083606,7.488070209977709,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3468,Sophie,Mensen,23.83908631708361,7.488070209977709,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3469,Gooitske,Marsman,23.09128263481416,7.491790132361973,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3470,Kim van der,Pijl,23.09128263481416,7.491790132361973,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3471,Jacqueline van der,Velden,23.09128263481416,7.491790132361973,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3472,Femke,Verlinden,23.09128263481416,7.491790132361973,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3469,Gooitske,Marsman,23.14599402120039,7.492305500003113,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3470,Kim van der,Pijl,23.145994021200394,7.492305500003113,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3471,Jacqueline van der,Velden,23.145994021200394,7.492305500003113,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3472,Femke,Verlinden,23.145994021200394,7.492305500003113,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3469,Gooitske,Marsman,23.19698139937427,7.4929380943643995,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3470,Kim van der,Pijl,23.19698139937427,7.4929380943643995,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3471,Jacqueline van der,Velden,23.19698139937427,7.4929380943643995,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3472,Femke,Verlinden,23.196981399374273,7.4929380943643995,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3469,Gooitske,Marsman,23.244316203586884,7.493693922517649,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3470,Kim van der,Pijl,23.244316203586884,7.493693922517649,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:46 3471,Jacqueline van der,Velden,23.244316203586884,7.493693922517649,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3472,Femke,Verlinden,23.244316203586884,7.493693922517649,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3473,Marieke,Eg,22.355084212541144,7.501834532227205,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3474,Suzanne de,Pee,22.355084212541144,7.501834532227205,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3475,Wendy,Stoop,22.355084212541144,7.501834532227205,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3476,Ada den,Otter,22.355084212541147,7.501834532227205,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3473,Marieke,Eg,22.393414629194833,7.502522293175316,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3474,Suzanne de,Pee,22.393414629194833,7.502522293175316,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3475,Wendy,Stoop,22.393414629194833,7.502522293175316,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3476,Ada den,Otter,22.393414629194837,7.502522293175316,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3473,Marieke,Eg,22.426356486822428,7.503384261650957,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3474,Suzanne de,Pee,22.42635648682243,7.503384261650957,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3475,Wendy,Stoop,22.42635648682243,7.503384261650957,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3476,Ada den,Otter,22.426356486822435,7.503384261650957,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3473,Marieke,Eg,22.453940322830768,7.504428527762548,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3474,Suzanne de,Pee,22.453940322830768,7.504428527762548,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3475,Wendy,Stoop,22.45394032283077,7.504428527762548,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3476,Ada den,Otter,22.45394032283077,7.504428527762548,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3223,Suzanne,Heijbrock,16.156270631480925,6.17659240544605,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3477,Nora,Bijl,22.3363252836082,7.47327281406623,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3478,Agnes van,Uitert,22.3363252836082,7.47327281406623,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3479,Annemarie,Palmers,22.336325283608197,7.47327281406623,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3223,Suzanne,Heijbrock,16.167546847027573,6.177064638078811,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3477,Nora,Bijl,22.35433629001904,7.474268519772884,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:47 3478,Agnes van,Uitert,22.35433629001904,7.474268519772884,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:48 3479,Annemarie,Palmers,22.35433629001904,7.474268519772884,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:48 3223,Suzanne,Heijbrock,16.17505230990092,6.177734614673156,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:48 3477,Nora,Bijl,22.366324437937013,7.475681072993052,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:48 3478,Agnes van,Uitert,22.366324437937013,7.475681072993052,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:48 3479,Annemarie,Palmers,22.366324437937013,7.475681072993052,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:48 3223,Suzanne,Heijbrock,16.178798978402458,6.178607878151747,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:48 3477,Nora,Bijl,22.372308827834612,7.4775220578913855,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:48 3478,Agnes van,Uitert,22.372308827834612,7.4775220578913855,35,Spaarne lenterace DM 4x A-C +Jul-01-2022 14:22:48 3479,Annemarie,Palmers,22.372308827834612,7.4775220578913855,35,Spaarne lenterace DM 4x A-C \ No newline at end of file diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index 164c9153..3ee00411 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -76,6 +76,7 @@ INSTALLED_APPS = [ 'django_countries', 'rules', 'taggit', + 'boatmovers', ] AUTHENTICATION_BACKENDS = ( @@ -137,10 +138,7 @@ TEMPLATES = [ ], 'libraries': { 'staticfiles': 'django.templatetags.static', - } - # 'loaders': [ - # 'django.template.loaders.app_directories.Loader', - # ], + }, }, }, ] diff --git a/rowsandall_app/urls.py b/rowsandall_app/urls.py index e7fdbfba..7a9fceb3 100644 --- a/rowsandall_app/urls.py +++ b/rowsandall_app/urls.py @@ -79,7 +79,8 @@ urlpatterns += [ {'next_page': '/'}, name='logout',), re_path(r'^rowers/', include('rowers.urls')), - # re_path(r'^survey/',include('survey.urls')), + re_path(r'^boatmovers/',include('boatmovers.urls')), + #re_path(r'^survey/',include('survey.urls')), # re_path(r'^cvkbrno/',include('cvkbrno.urls')), # re_path(r'^admin/rq/',include('django_rq_dashboard.urls')), re_path(r'^call\_back', rowersviews.rower_process_callback),