def _regioschutters_inschrijven(self): boog_c = BoogType.objects.get(afkorting='C') klasse_r = CompetitieKlasse.objects.filter(indiv__boogtype__afkorting='R', indiv__is_onbekend=False, indiv__niet_voor_rk_bk=False)[0] klasse_c = CompetitieKlasse.objects.filter(indiv__boogtype__afkorting='C', indiv__is_onbekend=False, indiv__niet_voor_rk_bk=False)[0] # recurve, lid 1 RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_101, sporterboog=self.sporterboog, bij_vereniging=self.sporterboog.sporter.bij_vereniging, klasse=klasse_r, aantal_scores=7).save() # compound, lid 1 sporterboog = SporterBoog(sporter=self.lid_sporter_1, boogtype=boog_c, voor_wedstrijd=True) sporterboog.save() RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_101, sporterboog=sporterboog, bij_vereniging=sporterboog.sporter.bij_vereniging, klasse=klasse_c, aantal_scores=6).save() # compound, lid2 sporterboog = SporterBoog(sporter=self.lid_sporter_2, boogtype=boog_c, voor_wedstrijd=True) sporterboog.save() RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_101, sporterboog=sporterboog, bij_vereniging=sporterboog.sporter.bij_vereniging, klasse=klasse_c, aantal_scores=6).save()
def test_verwijder_dupe_data(self): f1 = io.StringIO() f2 = io.StringIO() with self.assert_max_queries(20): management.call_command('verwijder_dupe_data', stderr=f1, stdout=f2) self.assertTrue(f1.getvalue() == '') self.assertTrue(f2.getvalue() == '') # maak een echte dupe aan dupe = RegioCompetitieSchutterBoog( deelcompetitie=self.deelnemer_r.deelcompetitie, sporterboog=self.deelnemer_r.sporterboog, bij_vereniging=self.deelnemer_r.bij_vereniging, klasse=self.deelnemer_r.klasse) dupe.save() f1 = io.StringIO() f2 = io.StringIO() with self.assert_max_queries(20): management.call_command('verwijder_dupe_data', stderr=f1, stdout=f2) self.assertTrue('Gebruik --commit om' in f1.getvalue()) # maak nog een dupe aan, voor extra coverage dupe = RegioCompetitieSchutterBoog( deelcompetitie=self.deelnemer_r.deelcompetitie, sporterboog=self.deelnemer_r.sporterboog, bij_vereniging=self.deelnemer_r.bij_vereniging, klasse=self.deelnemer_r.klasse) dupe.save() f1 = io.StringIO() f2 = io.StringIO() with self.assert_max_queries(20): management.call_command('verwijder_dupe_data', '--commit', stderr=f1, stdout=f2) # print("f1: %s" % f1.getvalue()) # print("f2: %s" % f2.getvalue()) self.assertTrue('Verwijder alle data voor deelnemer 123456' in f2.getvalue()) self.assertTrue(' 3 deelnemers' in f2.getvalue())
def test_ag_controle(self): self.e2e_login_and_pass_otp(self.account_rcl112_18) self.e2e_wissel_naar_functie(self.functie_rcl112_18) url = self.url_ag_controle % (self.comp_18.pk, 112) with self.assert_max_queries(20): resp = self.client.get(url) self.assertEqual(resp.status_code, 200) # 200 = OK self.assert_html_ok(resp) self.assert_template_used( resp, ('compregio/rcl-ag-controle.dtl', 'plein/site_layout.dtl')) # maak een inschrijving met handmatig AG RegioCompetitieSchutterBoog( sporterboog=self.sporterboog, bij_vereniging=self.sporterboog.sporter.bij_vereniging, deelcompetitie=self.deelcomp_regio112_18, klasse=self.klasse_recurve_onbekend, inschrijf_voorkeur_team=True, ag_voor_team_mag_aangepast_worden=True, ag_voor_team=5.0).save() with self.assert_max_queries(20): resp = self.client.get(url) self.assertEqual(resp.status_code, 200) # 200 = OK self.assert_html_ok(resp) # verkeerde fase zet_competitie_fase(self.comp_18, 'K') with self.assert_max_queries(20): resp = self.client.get(url) self.assert404(resp) # bad pk with self.assert_max_queries(20): resp = self.client.get(self.url_ag_controle % (999999, 999999)) self.assert404(resp) # verkeerde regio with self.assert_max_queries(20): resp = self.client.get(self.url_ag_controle % (self.comp_18.pk, 110)) self.assert403(resp)
def _schrijf_in_voor_competitie(deelcomp, sportersboog, skip=1): while len(sportersboog): sporterboog = sportersboog[0] # let op: de testen die een schutter doorschuiven vereisen dat schutter 100001 in klasse onbekend klassen = (CompetitieKlasse.objects.filter( competitie=deelcomp.competitie, indiv__is_onbekend=(sporterboog.sporter.lid_nr == 100001), indiv__boogtype=sporterboog.boogtype)) aanmelding = RegioCompetitieSchutterBoog(deelcompetitie=deelcomp, sporterboog=sporterboog) aanmelding.bij_vereniging = aanmelding.sporterboog.sporter.bij_vereniging if len(sportersboog) < len(klassen): aanmelding.klasse = klassen[len(sportersboog)] else: aanmelding.klasse = klassen[0] aanmelding.save() # print('ingeschreven: %s in klasse %s' % (aanmelding.sporterboog, aanmelding.klasse)) sportersboog = sportersboog[skip:]
def get_context_data(self, **kwargs): """ called by the template system to get the context data for the template """ context = super().get_context_data(**kwargs) # converteer en doe eerste controle op de parameters try: deelcomp_pk = int( kwargs['deelcomp_pk'][:10]) # afkappen voor de veiligheid sporterboog_pk = int( kwargs['sporterboog_pk'][:10]) # afkappen voor de veiligheid sporterboog = (SporterBoog.objects.select_related('sporter').get( pk=sporterboog_pk)) deelcomp = (DeelCompetitie.objects.select_related( 'competitie', 'nhb_regio').get(pk=deelcomp_pk)) except (ValueError, KeyError): # vuilnis raise Http404() except (SporterBoog.DoesNotExist, DeelCompetitie.DoesNotExist): # niet bestaand record raise Http404('Sporter of competitie niet gevonden') # controleer dat de competitie aanmeldingen accepteert deelcomp.competitie.bepaal_fase() if deelcomp.competitie.fase < 'B' or deelcomp.competitie.fase >= 'F': raise Http404('Verkeerde competitie fase') # controleer dat sporterboog bij de ingelogde gebruiker hoort # controleer dat deelcompetitie bij de juist regio hoort account = self.request.user sporter = account.sporter_set.all()[ 0] # ROL_SPORTER geeft bescherming tegen geen nhblid if (sporterboog.sporter != sporter or deelcomp.laag != LAAG_REGIO or deelcomp.nhb_regio != sporter.bij_vereniging.regio): raise Http404('Geen valide combinatie') # voorkom dubbele aanmelding if (RegioCompetitieSchutterBoog.objects.filter( deelcompetitie=deelcomp, sporterboog=sporterboog).count() > 0): # al aangemeld - zie niet hier moeten zijn gekomen raise Http404('Sporter is al aangemeld') # urlconf parameters geaccepteerd # bepaal in welke wedstrijdklasse de sporter komt age = sporterboog.sporter.bereken_wedstrijdleeftijd( deelcomp.competitie.begin_jaar + 1) # haal AG op, indien aanwezig scores = Score.objects.filter( sporterboog=sporterboog, type=SCORE_TYPE_INDIV_AG, afstand_meter=deelcomp.competitie.afstand) ag = Decimal(AG_NUL) if len(scores): score = scores[0] ag = Decimal(score.waarde) / 1000 hist = ScoreHist.objects.filter(score=score).order_by('-when') if len(hist): context['ag_hist'] = hist[0] context['ag'] = ag aanmelding = RegioCompetitieSchutterBoog(deelcompetitie=deelcomp, sporterboog=sporterboog, ag_voor_indiv=ag) bepaler = KlasseBepaler(deelcomp.competitie) try: bepaler.bepaal_klasse_deelnemer(aanmelding) except LookupError as exc: raise Http404(str(exc)) context['wedstrijdklasse'] = aanmelding.klasse.indiv.beschrijving context['is_klasse_onbekend'] = aanmelding.klasse.indiv.is_onbekend del aanmelding udvl = deelcomp.competitie.uiterste_datum_lid # uiterste datum van lidmaatschap dvl = sporterboog.sporter.sinds_datum # datum van lidmaatschap # geen aspirant, op tijd lid en op tijd aangemeld? mag_team_schieten = (deelcomp.regio_organiseert_teamcompetitie and age > MAXIMALE_WEDSTRIJDLEEFTIJD_ASPIRANT and dvl < udvl and deelcomp.competitie.fase == 'B') context['mag_team_schieten'] = mag_team_schieten # bepaal de inschrijfmethode voor deze regio methode = deelcomp.inschrijf_methode context['deelcomp'] = deelcomp context['sporterboog'] = sporterboog context['voorkeuren'], _ = SporterVoorkeuren.objects.get_or_create( sporter=sporter) context['bevestig_url'] = reverse('CompInschrijven:aanmelden', kwargs={ 'sporterboog_pk': sporterboog.pk, 'deelcomp_pk': deelcomp.pk }) if methode == INSCHRIJF_METHODE_1: # toon de sporter alle wedstrijden in de regio, dus alle clusters pks = list() for ronde in ( DeelcompetitieRonde.objects.select_related('plan').filter( deelcompetitie=deelcomp)): pks.extend(ronde.plan.wedstrijden.values_list('pk', flat=True)) # for wedstrijden = ( CompetitieWedstrijd.objects.filter(pk__in=pks).exclude( vereniging__isnull=True ) # voorkom wedstrijd niet toegekend aan vereniging .select_related('vereniging').order_by('datum_wanneer', 'tijd_begin_wedstrijd')) # splits de wedstrijden op naar in-cluster en out-of-cluster ver = sporterboog.sporter.bij_vereniging ver_in_hwl_cluster = dict() # [ver_nr] = True/False for cluster in ( ver.clusters.prefetch_related('nhbvereniging_set').filter( gebruik=deelcomp.competitie.afstand).all()): ver_nrs = list( cluster.nhbvereniging_set.values_list('ver_nr', flat=True)) for ver_nr in ver_nrs: ver_in_hwl_cluster[ver_nr] = True # for # for wedstrijden1 = list() wedstrijden2 = list() for wedstrijd in wedstrijden: try: in_cluster = ver_in_hwl_cluster[ wedstrijd.vereniging.ver_nr] except KeyError: in_cluster = False if in_cluster: wedstrijden1.append(wedstrijd) else: wedstrijden2.append(wedstrijd) # for if len(wedstrijden1): context['wedstrijden_1'] = wedstrijden1 context['wedstrijden_2'] = wedstrijden2 else: context['wedstrijden_1'] = wedstrijden2 if methode == INSCHRIJF_METHODE_3: context['dagdelen'] = DAGDELEN if deelcomp.toegestane_dagdelen != '': dagdelen_spl = deelcomp.toegestane_dagdelen.split(',') context['dagdelen'] = list() for dagdeel in DAGDELEN: # dagdeel = tuple(code, beschrijving) # code = GN / AV / ZA / ZO / WE if dagdeel[0] in dagdelen_spl: context['dagdelen'].append(dagdeel) # for if deelcomp.competitie.afstand == '18': if sporterboog.boogtype.afkorting in ('R', 'BB'): context['show_dt'] = True menu_dynamics(self.request, context, actief='sporter-profiel') return context
def post(request, *args, **kwargs): """ Deze functie wordt aangeroepen als de sporter op zijn profiel pagina de knop Aanmelden gebruikt voor een specifieke regiocompetitie en boogtype. """ # voorkom misbruik: ingelogd als niet geblokkeerd nhblid vereist sporter = None account = request.user if account.is_authenticated: if account.sporter_set.count() > 0: sporter = account.sporter_set.all()[0] if not (sporter.is_actief_lid and sporter.bij_vereniging): sporter = None if not sporter: raise Http404('Sporter niet gevonden') # converteer en doe eerste controle op de parameters try: deelcomp_pk = int( kwargs['deelcomp_pk'][:10]) # afkappen voor de veiligheid sporterboog_pk = int( kwargs['sporterboog_pk'][:10]) # afkappen voor de veiligheid sporterboog = (SporterBoog.objects.select_related('sporter').get( pk=sporterboog_pk)) deelcomp = (DeelCompetitie.objects.select_related( 'competitie', 'nhb_regio').get(pk=deelcomp_pk)) except (ValueError, KeyError): # vuilnis raise Http404() except (SporterBoog.DoesNotExist, DeelCompetitie.DoesNotExist): # niet bestaand record(s) raise Http404('Sporter of competitie niet gevonden') # controleer dat de competitie aanmeldingen accepteert deelcomp.competitie.bepaal_fase() if deelcomp.competitie.fase < 'B' or deelcomp.competitie.fase >= 'F': raise Http404('Verkeerde competitie fase') # controleer dat sporterboog bij de ingelogde gebruiker hoort # controleer dat deelcompetitie bij de juist regio hoort if (sporterboog.sporter != sporter or deelcomp.laag != LAAG_REGIO or deelcomp.nhb_regio != sporter.bij_vereniging.regio): raise Http404('Geen valide combinatie') # voorkom dubbele aanmelding if (RegioCompetitieSchutterBoog.objects.filter( deelcompetitie=deelcomp, sporterboog=sporterboog).count() > 0): # al aangemeld - zie niet hier moeten zijn gekomen raise Http404('Sporter is al aangemeld') # urlconf parameters geaccepteerd # bepaal de inschrijfmethode voor deze regio methode = deelcomp.inschrijf_methode # bepaal in welke wedstrijdklasse de sporter komt age = sporterboog.sporter.bereken_wedstrijdleeftijd( deelcomp.competitie.begin_jaar + 1) aanmelding = RegioCompetitieSchutterBoog( deelcompetitie=deelcomp, sporterboog=sporterboog, bij_vereniging=sporterboog.sporter.bij_vereniging, ag_voor_indiv=AG_NUL, ag_voor_team=AG_NUL, ag_voor_team_mag_aangepast_worden=True) # haal AG op, indien aanwezig scores = Score.objects.filter( sporterboog=sporterboog, type=SCORE_TYPE_INDIV_AG, afstand_meter=deelcomp.competitie.afstand) if len(scores): score = scores[0] ag = Decimal(score.waarde) / 1000 aanmelding.ag_voor_indiv = ag aanmelding.ag_voor_team = ag if ag > 0.000: aanmelding.ag_voor_team_mag_aangepast_worden = False bepaler = KlasseBepaler(deelcomp.competitie) try: bepaler.bepaal_klasse_deelnemer(aanmelding) except LookupError as exc: raise Http404(str(exc)) udvl = deelcomp.competitie.uiterste_datum_lid # uiterste datum van lidmaatschap dvl = sporterboog.sporter.sinds_datum # datum van lidmaatschap # geen aspirant, op tijd lid en op tijd aangemeld? mag_team_schieten = (deelcomp.regio_organiseert_teamcompetitie and age > MAXIMALE_WEDSTRIJDLEEFTIJD_ASPIRANT and dvl < udvl and deelcomp.competitie.fase == 'B') # kijk of de sporter met een team mee wil schieten voor deze competitie if mag_team_schieten and request.POST.get('wil_in_team', '') != '': aanmelding.inschrijf_voorkeur_team = True # kijk of er velden van een formulier bij zitten if methode == INSCHRIJF_METHODE_3: aanmelding.inschrijf_voorkeur_dagdeel = '' dagdelen_spl = deelcomp.toegestane_dagdelen.split(',') dagdeel = request.POST.get('dagdeel', '') if dagdeel in DAGDEEL_AFKORTINGEN: if deelcomp.toegestane_dagdelen == '' or dagdeel in dagdelen_spl: aanmelding.inschrijf_voorkeur_dagdeel = dagdeel if aanmelding.inschrijf_voorkeur_dagdeel == '': # dagdeel is verplicht raise Http404('Verzoek is niet compleet') opmerking = request.POST.get('opmerking', '') if len(opmerking) > 500: opmerking = opmerking[: 500] # moet afkappen, anders database foutmelding aanmelding.inschrijf_notitie = opmerking aanmelding.save() if methode == INSCHRIJF_METHODE_1: pks = list() for ronde in ( DeelcompetitieRonde.objects.select_related('plan').filter( deelcompetitie=deelcomp)): # sta alle wedstrijden in de regio toe, dus alle clusters pks.extend(ronde.plan.wedstrijden.values_list('pk', flat=True)) # for wedstrijden = list() for pk in pks: key = 'wedstrijd_%s' % pk if request.POST.get(key, '') != '': wedstrijden.append(pk) # for aanmelding.inschrijf_gekozen_wedstrijden.set(wedstrijden) return HttpResponseRedirect(reverse('Sporter:profiel'))
def post(self, request, *args, **kwargs): """ Deze functie wordt aangeroepen als de knop 'Geselecteerde schutters aanmelden' wordt gebruikt het csrf token is al gecontroleerd """ try: comp_pk = int(self.kwargs['comp_pk'][:10]) # afkappen voor de veiligheid comp = Competitie.objects.get(pk=comp_pk) except (ValueError, TypeError, Competitie.DoesNotExist): raise Http404('Competitie niet gevonden') # check dat competitie open is voor inschrijvingen comp.bepaal_fase() if not ('B' <= comp.fase <= 'E'): raise Http404('Verkeerde competitie fase') # rol is HWL (zie test_func) # bepaal de inschrijfmethode voor deze regio hwl_regio = self.functie_nu.nhb_ver.regio if hwl_regio.is_administratief: # niemand van deze vereniging mag meedoen aan wedstrijden raise Http404('Geen wedstrijden in deze regio') # zoek de juiste DeelCompetitie erbij deelcomp = DeelCompetitie.objects.get(competitie=comp, nhb_regio=hwl_regio) methode = deelcomp.inschrijf_methode boog2teamtype = dict() for obj in TeamType.objects.all(): boog2teamtype[obj.afkorting] = obj # for # zoek eerst de voorkeuren op mag_team_schieten = comp.fase == 'B' bulk_team = False if mag_team_schieten and request.POST.get('wil_in_team', '') != '': bulk_team = True bulk_wedstrijden = list() if methode == INSCHRIJF_METHODE_1: pks = list() for ronde in (DeelcompetitieRonde .objects .select_related('plan') .filter(deelcompetitie=deelcomp)): # sta alle wedstrijden in de regio toe, dus alle clusters pks.extend(ronde.plan.wedstrijden.values_list('pk', flat=True)) # for for pk in pks: key = 'wedstrijd_%s' % pk if request.POST.get(key, '') != '': bulk_wedstrijden.append(pk) # for bulk_dagdeel = '' if methode == INSCHRIJF_METHODE_3: dagdeel = request.POST.get('dagdeel', '') if dagdeel in DAGDEEL_AFKORTINGEN: if dagdeel in deelcomp.toegestane_dagdelen or deelcomp.toegestane_dagdelen == '': bulk_dagdeel = dagdeel if not bulk_dagdeel: raise Http404('Incompleet verzoek') bulk_opmerking = request.POST.get('opmerking', '') if len(bulk_opmerking) > 500: bulk_opmerking = bulk_opmerking[:500] # moet afkappen, anders database foutmelding udvl = comp.uiterste_datum_lid bepaler = KlasseBepaler(comp) # all checked boxes are in the post request as keys, typically with value 'on' for key, _ in request.POST.items(): # key = 'lid_NNNNNN_boogtype_MM' (of iets anders) spl = key.split('_') # spl = ('lid', 'NNNNNN', 'boogtype', 'MM') if len(spl) == 4 and spl[0] == 'lid' and spl[2] == 'boogtype': # dit lijkt ergens op - converteer de getallen (geeft ook input bescherming) try: sporter_pk = int(spl[1]) boogtype_pk = int(spl[3]) except (TypeError, ValueError): # iemand loopt te klooien raise Http404('Verkeerde parameters') # SporterBoog record met voor_wedstrijd==True moet bestaan try: sporterboog = (SporterBoog .objects .select_related('sporter', 'boogtype') .get(sporter=sporter_pk, boogtype=boogtype_pk)) except SporterBoog.DoesNotExist: # iemand loopt te klooien raise Http404('Sporter niet gevonden') if not sporterboog.voor_wedstrijd: # iemand loopt te klooien raise Http404('Sporter heeft geen voorkeur voor wedstrijden opgegeven') # controleer lid bij vereniging HWL if sporterboog.sporter.bij_vereniging != self.functie_nu.nhb_ver: # iemand loopt te klooien raise PermissionDenied('Geen lid bij jouw vereniging') # voorkom dubbele aanmelding if (RegioCompetitieSchutterBoog .objects .filter(deelcompetitie=deelcomp, sporterboog=sporterboog) .count() > 0): # al aangemeld - zou niet hier moeten zijn gekomen raise Http404('Sporter is al ingeschreven') # bepaal in welke wedstrijdklasse de schutter komt age = sporterboog.sporter.bereken_wedstrijdleeftijd(deelcomp.competitie.begin_jaar + 1) dvl = sporterboog.sporter.sinds_datum aanmelding = RegioCompetitieSchutterBoog() aanmelding.deelcompetitie = deelcomp aanmelding.sporterboog = sporterboog aanmelding.bij_vereniging = sporterboog.sporter.bij_vereniging aanmelding.ag_voor_indiv = AG_NUL aanmelding.ag_voor_team = AG_NUL aanmelding.ag_voor_team_mag_aangepast_worden = True # zoek de aanvangsgemiddelden er bij, indien beschikbaar for score in Score.objects.filter(sporterboog=sporterboog, afstand_meter=comp.afstand, type=SCORE_TYPE_INDIV_AG): ag = Decimal(score.waarde) / 1000 aanmelding.ag_voor_indiv = ag aanmelding.ag_voor_team = ag aanmelding.ag_voor_team_mag_aangepast_worden = False # for # zoek een toepasselijke klasse aan de hand van de leeftijd try: bepaler.bepaal_klasse_deelnemer(aanmelding) except LookupError as exc: raise Http404(str(exc)) # kijk of de schutter met een team mee wil en mag schieten voor deze competitie if age > MAXIMALE_WEDSTRIJDLEEFTIJD_ASPIRANT and dvl < udvl: # is geen aspirant en was op tijd lid aanmelding.inschrijf_voorkeur_team = bulk_team aanmelding.inschrijf_voorkeur_dagdeel = bulk_dagdeel aanmelding.inschrijf_notitie = bulk_opmerking aanmelding.save() if methode == INSCHRIJF_METHODE_1: aanmelding.inschrijf_gekozen_wedstrijden.set(bulk_wedstrijden) # else: silently ignore # for url = reverse('CompInschrijven:leden-ingeschreven', kwargs={'deelcomp_pk': deelcomp.pk}) return HttpResponseRedirect(url)
def _maak_inschrijvingen(self): # schrijf iemand in boog_ib = BoogType.objects.get(afkorting='IB') boog_r = BoogType.objects.get(afkorting='R') boog_c = BoogType.objects.get(afkorting='C') # sporter 1 aanmelden sporterboog = self.sporterboog_100001 SporterVoorkeuren(sporter=sporterboog.sporter, voorkeur_eigen_blazoen=True).save() klasse = (CompetitieKlasse .objects .filter(competitie=self.comp_18, indiv__boogtype=boog_r, indiv__is_onbekend=True))[0] RegioCompetitieSchutterBoog( deelcompetitie=self.deelcomp_regio_18, sporterboog=sporterboog, bij_vereniging=sporterboog.sporter.bij_vereniging, klasse=klasse).save() klasse = (CompetitieKlasse .objects .filter(competitie=self.comp_25, indiv__boogtype=boog_r, indiv__is_onbekend=True))[0] RegioCompetitieSchutterBoog( deelcompetitie=self.deelcomp_regio_25, sporterboog=sporterboog, bij_vereniging=sporterboog.sporter.bij_vereniging, klasse=klasse).save() # Schutter 2 aanmelden klasse = (CompetitieKlasse .objects .filter(competitie=self.comp_18, indiv__boogtype=boog_c, indiv__is_onbekend=False))[0] sporterboog = SporterBoog(sporter=self.sporter_100002, boogtype=boog_c, voor_wedstrijd=True) sporterboog.save() aanmelding = RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_18, sporterboog=sporterboog, bij_vereniging=sporterboog.sporter.bij_vereniging, klasse=klasse) aanmelding.save() klasse = (CompetitieKlasse .objects .filter(competitie=self.comp_25, indiv__boogtype=boog_c, indiv__is_onbekend=False))[0] aanmelding = RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_25, sporterboog=sporterboog, bij_vereniging=sporterboog.sporter.bij_vereniging, klasse=klasse) aanmelding.save() # aspirant schutter aanmelden self.sporter_100012.geboorte_datum = datetime.date(year=self.comp_18.begin_jaar - 10, month=1, day=1) self.sporter_100012.save() klasse = (CompetitieKlasse .objects .filter(competitie=self.comp_18, indiv__boogtype=boog_ib, indiv__beschrijving__contains="Aspirant"))[0] sporterboog = SporterBoog(sporter=self.sporter_100012, boogtype=boog_ib, voor_wedstrijd=True) sporterboog.save() aanmelding = RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_18, sporterboog=sporterboog, bij_vereniging=sporterboog.sporter.bij_vereniging, klasse=klasse) aanmelding.save() klasse = (CompetitieKlasse .objects .filter(competitie=self.comp_25, indiv__boogtype=boog_ib, indiv__beschrijving__contains="Aspirant"))[0] RegioCompetitieSchutterBoog( deelcompetitie=self.deelcomp_regio_25, sporterboog=sporterboog, bij_vereniging=sporterboog.sporter.bij_vereniging, klasse=klasse).save() # Schutter 3 aanmelden klasse = (CompetitieKlasse .objects .filter(competitie=self.comp_18, indiv__boogtype=boog_r))[0] sporterboog = SporterBoog(sporter=self.sporter_100003, boogtype=boog_r, voor_wedstrijd=True) sporterboog.save() RegioCompetitieSchutterBoog( deelcompetitie=self.deelcomp_regio_18, sporterboog=sporterboog, bij_vereniging=sporterboog.sporter.bij_vereniging, klasse=klasse).save()
def setUp(self): """ initialisatie van de test case """ regio_111 = NhbRegio.objects.get(pk=111) boog_r = BoogType.objects.get(afkorting='R') boog_bb = BoogType.objects.get(afkorting='BB') boog_ib = BoogType.objects.get(afkorting='IB') teamtype_r = TeamType.objects.get(afkorting='R') datum = datetime.date(year=2000, month=1, day=1) comp = Competitie( beschrijving='Test', afstand='18', begin_jaar=2000, uiterste_datum_lid=datum, begin_aanmeldingen=datum, einde_aanmeldingen=datum, einde_teamvorming=datum, eerste_wedstrijd=datum, laatst_mogelijke_wedstrijd=datum, datum_klassengrenzen_rk_bk_teams=datum, rk_eerste_wedstrijd=datum, rk_laatste_wedstrijd=datum, bk_eerste_wedstrijd=datum, bk_laatste_wedstrijd=datum) comp.save() self.comp = comp deelcomp = DeelCompetitie( competitie=comp, laag=LAAG_REGIO, nhb_regio=regio_111) deelcomp.save() indiv_r1 = IndivWedstrijdklasse.objects.filter(boogtype=boog_r)[1] indiv_r2 = IndivWedstrijdklasse.objects.filter(boogtype=boog_r)[2] indiv_ib = IndivWedstrijdklasse.objects.filter(boogtype=boog_ib)[0] indiv_bb = IndivWedstrijdklasse.objects.filter(boogtype=boog_bb)[0] klasse_r1 = CompetitieKlasse( competitie=comp, indiv=indiv_r1, min_ag=2.0) klasse_r1.save() CompetitieKlasse( competitie=comp, indiv=indiv_r2, min_ag=1.0).save() CompetitieKlasse( competitie=comp, indiv=indiv_bb, min_ag=0.0).save() klasse_ib = CompetitieKlasse( competitie=comp, indiv=indiv_ib, min_ag=0.0) klasse_ib.save() # maak een test vereniging ver = NhbVereniging() ver.naam = "Grote Club met een naam langer dan 30 tekens" ver.ver_nr = "1000" ver.regio = regio_111 ver.save() # maak een test lid aan sporter = Sporter() sporter.lid_nr = 123456 sporter.geslacht = "M" sporter.voornaam = "Ramon" sporter.achternaam = "de Tester" sporter.geboorte_datum = datetime.date(year=1972, month=3, day=4) sporter.sinds_datum = datetime.date(year=2010, month=11, day=12) sporter.bij_vereniging = ver sporter.account = None sporter.email = '' sporter.save() self.sporter = sporter sporterboog_r = SporterBoog( sporter=sporter, boogtype=boog_r, voor_wedstrijd=True) sporterboog_r.save() self.sporterboog_r = sporterboog_r sporterboog_ib = SporterBoog( sporter=sporter, boogtype=boog_ib, voor_wedstrijd=False) sporterboog_ib.save() self.sporterboog_ib = sporterboog_ib sporterboog_bb = SporterBoog( sporter=sporter, boogtype=boog_bb, voor_wedstrijd=False) sporterboog_bb.save() self.sporterboog_bb = sporterboog_bb deelnemer_r = RegioCompetitieSchutterBoog( deelcompetitie=deelcomp, sporterboog=sporterboog_r, bij_vereniging=ver, klasse=klasse_r1, aantal_scores=1) deelnemer_r.save() self.deelnemer_r = deelnemer_r deelnemer_ib = RegioCompetitieSchutterBoog( deelcompetitie=deelcomp, sporterboog=sporterboog_ib, bij_vereniging=ver, klasse=klasse_ib, aantal_scores=2) deelnemer_ib.save() self.deelnemer_ib = deelnemer_ib team = RegiocompetitieTeam( deelcompetitie=deelcomp, vereniging=ver, volg_nr=1, team_type=teamtype_r, team_naam='Test') team.save() self.team = team team.gekoppelde_schutters.add(deelnemer_ib)