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 %}
+
+ {{ result.order }} {{ result.race.name }}
+
+ {% endfor %}
+
+
+{% 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
+
+
+
+
+
+
+
+
+ Rank
+ Score
+ Name
+ Club
+ Gender
+
+
+
+ {% for athlete in athletes %}
+
+ {{ forloop.counter }}
+ {{ athlete.trueskill_exposed|floatformat:2 }}
+ {{ athlete.first_name }}
+ {{ athlete.last_name }}
+ {{ athlete.club }}
+ {{ athlete.gender }}
+ results
+ {% if user.is_authenticated and user.is_staff %}
+ edit
+ {% endif %}
+
+ {% endfor %}
+
+
+
+
+
+
+ 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 %}
+
+ {{ race.date }} {{ race.name }}
+
+ View Race
+
+
+ {% endfor %}
+
+
+{% if user.is_authenticated and user.is_staff %}
+{% if new_races %}
+
+ Niet verwerkte races:
+
+
+
+ {% for race in new_races %}
+
+ {{ race.date }} {{ race.name }}
+
+ Manage Race
+
+
+ {% endfor %}
+
+
+{% 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 %}
+
+{% 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 @@
+
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
+
+{% 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 %}
+
+{% 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 %}
+
+
+
+
+
+
+
+
+
+
+
+ {% 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 }}
+
+
+
+
+ Athlete
+
+ Score
+
+ {% for athlete in athletes %}
+
+ {{ athlete.first_name }}
+ {{ athlete.last_name }}
+ {{ athlete.trueskill_exposed|floatformat:2 }}
+
+ {% endfor %}
+
+
+{% 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 }}
+
+
+
+
+{% 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:
+
+ Heineken Roeivierkamp (einduitslag over alle afstanden)
+ Head of the River Amstel
+ Tweehead
+ Skiffhead
+ Spaarne Lenterace
+ Dutch Masters Open (alleen uitslagen van races die zonder startverschil worden geroeid)
+ Cottwich
+ Eemhead
+ Tromp Boat Races
+ Novembervieren
+
+
+
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:
+
+ 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.
+
+ 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.
+
+
+
+
+
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
+
+
+
+
+ Order
+ Crew
+
+ {% for result in results %}
+
+ {{ result.order }}
+ {{ result.crew.name }}
+ {% if result.crew.id in duplicate_crews %}
+ !
+ {% elif result.crew.id in duplicate_athletes_crews %}
+ !
+ {% endif %}
+
+ {% endfor %}
+
+
+{% 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),