def setUp(self): """ initialisatie van de test case """ self.account_admin = self.e2e_create_account_admin() self.account_normaal = self.e2e_create_account('normaal', '*****@*****.**', 'Normaal') self.account_hwl = self.e2e_create_account('hwl', '*****@*****.**', 'Secretaris') self.e2e_account_accepteert_vhpg(self.account_hwl) # maak een test vereniging ver = NhbVereniging() ver.naam = "Grote Club" ver.ver_nr = "1000" ver.regio = NhbRegio.objects.get(regio_nr=111) ver.save() self.nhbver1 = ver self.functie_hwl = maak_functie('HWL 1000', 'HWL') self.functie_hwl.nhb_ver = ver self.functie_hwl.save() self.functie_hwl.accounts.add(self.account_hwl) # maak een test lid aan sporter = Sporter() sporter.lid_nr = 100001 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 = self.account_normaal sporter.email = sporter.account.email sporter.save() self.sporter_100001 = sporter self.boog_r = BoogType.objects.get(afkorting='R') self.boog_c = BoogType.objects.get(afkorting='C') # maak 2 schutterboog aan sporterboog = SporterBoog(sporter=sporter, boogtype=self.boog_c, voor_wedstrijd=True) sporterboog.save() self.sporterboog_100001c = sporterboog sporterboog = SporterBoog(sporter=sporter, boogtype=self.boog_r, voor_wedstrijd=True) sporterboog.save() self.sporterboog_100001r = sporterboog # maak een AG aan score_indiv_ag_opslaan(sporterboog, 18, 9.123, None, 'test melding') score_indiv_ag_opslaan(sporterboog, 25, 9.251, self.account_hwl, 'test melding') self._maak_uitslag(sporterboog)
def test_verwijder_score_fail(self): # maak 100024 aan f1 = io.StringIO() f2 = io.StringIO() with self.assert_max_queries(61): management.call_command('import_nhb_crm', './NhbStructuur/management/testfiles/testfile_14.json', '--sim_now=2020-07-01', stderr=f1, stdout=f2) # maak een schutterboog aan boog_r = BoogType.objects.get(afkorting='R') sporter = Sporter.objects.get(lid_nr="100024") sporterboog = SporterBoog(sporter=sporter, boogtype=boog_r) sporterboog.save() score_indiv_ag_opslaan(sporterboog, 18, 5.678, None, "") # probeer 100024 te verwijderen f1 = io.StringIO() f2 = io.StringIO() with self.assert_max_queries(40): management.call_command('import_nhb_crm', './NhbStructuur/management/testfiles/testfile_16.json', '--sim_now=2020-07-01', stderr=f1, stdout=f2) # print("f1: %s" % f1.getvalue()) # print("f2: %s" % f2.getvalue()) self.assertTrue("[INFO] Lid 100024 Voornaam van der Achternaam [V, 2000] wordt nu verwijderd" in f2.getvalue()) self.assertTrue('[ERROR] Onverwachte fout bij het verwijderen van een lid' in f1.getvalue())
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 setUp(self): """ initialisatie van de test case """ self.account_normaal = self.e2e_create_account('normaal', '*****@*****.**', 'Normaal') # maak een test lid aan sporter = Sporter() sporter.lid_nr = 100001 sporter.geslacht = "M" sporter.voornaam = "Ramon" sporter.achternaam = "de Tester" sporter.email = "*****@*****.**" sporter.geboorte_datum = datetime.date(year=1972, month=3, day=4) sporter.sinds_datum = datetime.date(year=2010, month=11, day=12) sporter.save() # maak een sporterboog aan self.sporterboog = SporterBoog( boogtype=BoogType.objects.get(afkorting='R'), sporter=sporter) self.sporterboog.save()
def _maak_leden(self): """ Maak voor elke vereniging een aantal leden aan: een mix van alle wedstrijdklassen en boogtypen. Aspirant <13, Aspirant 13-14, Cadet 15-17, Junior 18-20, Senior 21-49, Master 50-59, Veteraan 60+ """ huidige_jaar = timezone.now().year lid_sinds_datum = datetime.date(year=huidige_jaar - 1, month=11, day=12) soorten = [ # wedstrijdleeftijd, geslacht, voornaam, boogtype, account (10, 'M', 'Asp10', 'R', False), (10, 'V', 'Asp10', 'R', False), (11, 'M', 'Asp11', 'R', False), (12, 'V', 'Asp12', 'R', False), (13, 'M', 'Asp13', 'R', False), (14, 'M', 'Cad14', 'R', False), (14, 'M', 'Cad14b', 'C', False), (14, 'M', 'Cad15', 'c', False), # kleine letter: geen voorkeur voor de competitie (15, 'V', 'Cad15', 'R', False), (15, 'M', 'Cad15b', 'BB', False), (15, 'V', 'Cad15b', 'C', False), (16, 'M', 'Cad16', 'R', False), (16, 'M', 'Cad16b', 'C', False), (16, 'M', 'Cad16c', 'BB', False), (17, 'V', 'Cad17', 'R', True), # account (17, 'V', 'Cad17b', 'C', False), (17, 'V', 'Cad17c', 'BB', False), (18, 'M', 'Jun18', 'R', False), (18, 'M', 'Jun18b', 'C', False), (18, 'M', 'Jun18c', 'BB', False), (18, 'V', 'Jun18', 'BB', False), (19, 'V', 'Jun19', 'R', False), (19, 'V', 'Jun19b', 'C', True), # account (20, 'M', 'Jun20', 'R', False), (20, 'M', 'Jun20b', 'LB', False), (21, 'V', 'Sen21', 'R', False), (21, 'V', 'Sen21b', 'C', False), (22, 'M', 'Sen22', 'R', False), (22, 'M', 'Sen22b', 'C', False), (22, 'M', 'Sen23', 'r', False), # kleine letter: geen voorkeur voor de competitie (31, 'V', 'Sen31', 'R', False), (32, 'M', 'Sen32', 'C', False), (32, 'M', 'Sen32b', 'BB', True), # account (33, 'V', 'Sen33', 'R', False), (33, 'V', 'Sen33b', 'BB', False), (34, 'M', 'Sen34', 'LB', True), # Sen34 = HWL (35, 'V', 'Sen35', 'R', False), (36, 'M', 'Sen36', 'C', False), (36, 'M', 'Sen36b', 'BB', False), (37, 'V', 'Sen37', 'R', False), (38, 'M', 'Sen38', 'LB', False), (39, 'V', 'Sen39', 'R', True), # Sen39 = BKO/RKO/RCL (40, 'M', 'Sen40', 'C', False), (41, 'V', 'Sen41', 'R', False), (42, 'M', 'Sen42', 'R', False), (42, 'M', 'Sen42b', 'C', False), (49, 'V', 'Sen49', 'R', False), (49, 'V', 'Sen49b', 'BB', False), (50, 'M', 'Mas50', 'R', True), # Mas50 = SEC (51, 'V', 'Mas51', 'R', True), # account (51, 'V', 'Mas51b', 'C', False), (51, 'V', 'Mas52', 'r', False), # kleine letter: geen voorkeur voor de competitie (59, 'M', 'Mas59', 'R', False), (59, 'M', 'Mas59b', 'LB', False), (60, 'V', 'Vet60', 'R', False), (60, 'V', 'Vet60b', 'C', False), (60, 'V', 'Vet60c', 'LB', True), # account (61, 'M', 'Vet61', 'C', False), (61, 'M', 'Vet61b', 'C', False), (80, 'V', 'Vet80', 'R', False), ] geslacht_voornaam2boogtype = dict() for _, geslacht, voornaam, boogtype, _ in soorten: try: _ = geslacht_voornaam2boogtype[geslacht + voornaam] except KeyError: geslacht_voornaam2boogtype[geslacht + voornaam] = boogtype else: raise IndexError( 'TestData: combinatie geslacht %s + voornaam %s komt meerdere keren voor' % (geslacht, voornaam)) # pragma: no cover # for # maak voor elke vereniging een paar accounts aan lid_nr = 300000 bulk = list() for ver in self.vereniging.values(): self.regio_ver_nrs[ver.regio.regio_nr] = ver.ver_nr for _, _, voornaam, _, maak_account in soorten: lid_nr += 1 if maak_account: account = Account(username=str(lid_nr), otp_code=self.OTP_CODE, otp_is_actief=True) account.set_password(self.WACHTWOORD) bulk.append(account) if len(bulk) > 100: # pragma: no branch Account.objects.bulk_create(bulk) # maak e-mails aan bulk2 = list() for account in bulk: # let op: e-mailadres moet overeenkomen met het Sporter.email email = AccountEmail( account=account, email_is_bevestigd=True, bevestigde_email='*****@*****.**' % account.username) bulk2.append(email) # for AccountEmail.objects.bulk_create(bulk2) del bulk2 bulk = list() # for # for if len(bulk) > 0: # pragma: no branch Account.objects.bulk_create(bulk) # maak e-mails aan bulk2 = list() for account in bulk: email = AccountEmail(account=account, email_is_bevestigd=True, bevestigde_email='*****@*****.**' % account.username) bulk2.append(email) # for AccountEmail.objects.bulk_create(bulk2) del bulk2 del bulk # cache de aangemaakte accounts lid_nr2account = dict() for account in Account.objects.all(): lid_nr2account[account.username] = account # for lid_nr = 300000 bulk = list() for ver in self.vereniging.values(): self.ver_sporters[ver.ver_nr] = list() self.ver_sporters_met_account[ver.ver_nr] = list() for wleeftijd, geslacht, voornaam, _, _ in soorten: lid_nr += 1 achternaam = "Lid%s van Club%s" % (ver.ver_nr, lid_nr) geboortedatum = datetime.date(year=huidige_jaar - wleeftijd, month=3, day=24) try: account = lid_nr2account[str(lid_nr)] except KeyError: account = None sporter = Sporter(lid_nr=lid_nr, voornaam=voornaam, achternaam=achternaam, unaccented_naam=voornaam + ' ' + achternaam, email='*****@*****.**' % lid_nr, geboorte_datum=geboortedatum, geslacht=geslacht, para_classificatie='', is_actief_lid=True, sinds_datum=lid_sinds_datum, bij_vereniging=ver, account=account, lid_tot_einde_jaar=huidige_jaar) bulk.append(sporter) if len(bulk) > 250: # pragma: no branch Sporter.objects.bulk_create(bulk) bulk = list() # for # for if len(bulk) > 0: # pragma: no branch Sporter.objects.bulk_create(bulk) del bulk del lid_nr2account # maak voor elke Sporter nu de SporterBoog records aan boogtypen = self.afkorting2boogtype.values() bulk_voorkeuren = list() bulk_sporter = list() for sporter in (Sporter.objects.select_related( 'account', 'bij_vereniging').all()): ver_nr = sporter.bij_vereniging.ver_nr self.ver_sporters[ver_nr].append(sporter) if sporter.account: self.ver_sporters_met_account[ver_nr].append(sporter) gewenst_boogtype = geslacht_voornaam2boogtype[sporter.geslacht + sporter.voornaam] # voorkeuren voorkeuren = SporterVoorkeuren(sporter=sporter) if gewenst_boogtype.islower(): voorkeuren.voorkeur_meedoen_competitie = False gewenst_boogtype = gewenst_boogtype.upper() # alle junioren willen een eigen blazoen if gewenst_boogtype == 'R' and sporter.voornaam.startswith('Jun'): voorkeuren.voorkeur_eigen_blazoen = True bulk_voorkeuren.append(voorkeuren) if len(bulk_voorkeuren) > 100: SporterVoorkeuren.objects.bulk_create(bulk_voorkeuren) bulk_voorkeuren = list() # sporterboog for boogtype in boogtypen: sporterboog = SporterBoog( sporter=sporter, # heeft_interesse=True # voor_wedstrijd=False boogtype=boogtype) if boogtype.afkorting == gewenst_boogtype: sporterboog.voor_wedstrijd = True bulk_sporter.append(sporterboog) if len(bulk_sporter) > 250: SporterBoog.objects.bulk_create(bulk_sporter) bulk_sporter = list() # for # for if len(bulk_voorkeuren): # pragma: no branch SporterVoorkeuren.objects.bulk_create(bulk_voorkeuren) del bulk_voorkeuren if len(bulk_sporter): # pragma: no branch SporterBoog.objects.bulk_create(bulk_sporter) del bulk_sporter
def setUp(self): """ eenmalige setup voor alle tests wordt als eerste aangeroepen """ # deze test is afhankelijk van de standaard regio's self.regio_101 = regio = NhbRegio.objects.get(regio_nr=101) # maak een test vereniging ver = NhbVereniging() ver.naam = "Grote Club" ver.ver_nr = 1000 ver.regio = regio # secretaris kan nog niet ingevuld worden ver.save() # maak een volwassen test lid aan (komt in groep met klasse onbekend) sporter = Sporter() sporter.lid_nr = 100001 sporter.geslacht = "M" sporter.voornaam = "Ramon" sporter.achternaam = "de Tester" sporter.email = "*****@*****.**" 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 self.account_lid = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam) sporter.account = self.account_lid sporter.save() self.sporter_100001 = sporter self.functie_hwl = maak_functie('HWL test', 'HWL') self.functie_hwl.nhb_ver = ver self.functie_hwl.save() self.functie_hwl.accounts.add(self.account_lid) # maak een jeugdlid aan (komt in BB jeugd zonder klasse onbekend) sporter = Sporter() sporter.lid_nr = 100002 sporter.geslacht = "M" sporter.voornaam = "Ramon" sporter.achternaam = "het Testertje" sporter.email = "*****@*****.**" sporter.geboorte_datum = datetime.date(year=2008, month=3, day=4) sporter.sinds_datum = datetime.date(year=2015, month=11, day=12) sporter.bij_vereniging = ver self.account_jeugdlid = self.e2e_create_account( sporter.lid_nr, sporter.email, sporter.voornaam) sporter.account = self.account_jeugdlid sporter.save() self.sporter_100002 = sporter boog_bb = BoogType.objects.get(afkorting='BB') boog_ib = BoogType.objects.get(afkorting='IB') # maak een sporterboog aan voor het jeugdlid (nodig om aan te melden) sporterboog = SporterBoog(sporter=self.sporter_100002, boogtype=boog_bb, voor_wedstrijd=False) sporterboog.save() self.sporterboog_100002 = sporterboog sporter = Sporter() sporter.lid_nr = 100003 sporter.geslacht = "V" sporter.voornaam = "Zus" sporter.achternaam = "de Testerin" sporter.email = "*****@*****.**" sporter.geboorte_datum = datetime.date(year=2008, month=3, day=4) sporter.sinds_datum = datetime.date(year=2015, month=11, day=12) sporter.bij_vereniging = ver sporter.save() self.sporter_100003 = sporter # maak een sporterboog aan voor het lid (nodig om aan te melden) sporterboog = SporterBoog(sporter=self.sporter_100003, boogtype=boog_bb, voor_wedstrijd=True) sporterboog.save() self.sporterboog_100003 = sporterboog # maak een sporterboog aan voor het lid (nodig om aan te melden) sporterboog = SporterBoog(sporter=self.sporter_100001, boogtype=boog_ib, voor_wedstrijd=True) sporterboog.save() # (strategisch gekozen) historische data om klassengrenzen uit te bepalen histcomp = HistCompetitie() histcomp.seizoen = '2018/2019' histcomp.comp_type = '18' histcomp.klasse = 'Testcurve1' # TODO: kan de klasse een spatie bevatten? histcomp.is_team = False histcomp.save() self.histcomp = histcomp # een ouder seizoen dat niet gebruikt moet worden histcomp2 = HistCompetitie() histcomp2.seizoen = '2017/2018' histcomp2.comp_type = '18' histcomp2.klasse = 'Testcurve2' histcomp2.is_team = False histcomp2.save() # record voor het volwassen lid rec = HistCompetitieIndividueel() rec.histcompetitie = histcomp rec.rank = 1 rec.schutter_nr = self.sporter_100001.lid_nr rec.schutter_naam = self.sporter_100001.volledige_naam() rec.vereniging_nr = ver.ver_nr rec.vereniging_naam = ver.naam rec.boogtype = 'R' rec.score1 = 10 rec.score2 = 20 rec.score3 = 30 rec.score4 = 40 rec.score5 = 50 rec.score6 = 60 rec.score7 = 70 rec.totaal = 80 rec.gemiddelde = 5.321 rec.save() # nog een record voor het volwassen lid rec = HistCompetitieIndividueel() rec.histcompetitie = histcomp2 rec.rank = 1 rec.schutter_nr = self.sporter_100001.lid_nr rec.schutter_naam = self.sporter_100001.volledige_naam() rec.vereniging_nr = ver.ver_nr rec.vereniging_naam = ver.naam rec.boogtype = 'R' rec.score1 = 11 rec.score2 = 21 rec.score3 = 31 rec.score4 = 41 rec.score5 = 51 rec.score6 = 61 rec.score7 = 71 rec.totaal = 81 rec.gemiddelde = 6.12 rec.save() # nog een record voor het volwassen lid rec = HistCompetitieIndividueel() rec.histcompetitie = histcomp rec.rank = 100 rec.schutter_nr = self.sporter_100001.lid_nr rec.schutter_naam = self.sporter_100001.volledige_naam() rec.vereniging_nr = ver.ver_nr rec.vereniging_naam = ver.naam rec.boogtype = 'IB' rec.score1 = 11 rec.score2 = 21 rec.score3 = 31 rec.score4 = 41 rec.score5 = 51 rec.score6 = 61 rec.score7 = 71 rec.totaal = 81 rec.gemiddelde = 6.12 rec.save() # maak een record aan zonder eindgemiddelde rec = HistCompetitieIndividueel() rec.histcompetitie = histcomp rec.rank = 1 rec.schutter_nr = self.sporter_100002.lid_nr rec.schutter_naam = self.sporter_100002.volledige_naam() rec.vereniging_nr = ver.ver_nr rec.vereniging_naam = ver.naam rec.boogtype = 'C' rec.score1 = 0 rec.score2 = 0 rec.score3 = 0 rec.score4 = 0 rec.score5 = 0 rec.score6 = 0 rec.score7 = 0 rec.totaal = 0 rec.gemiddelde = 0.0 rec.save() # record voor het jeugdlid rec = HistCompetitieIndividueel() rec.histcompetitie = histcomp rec.rank = 1 rec.schutter_nr = self.sporter_100002.lid_nr rec.schutter_naam = self.sporter_100002.volledige_naam() rec.vereniging_nr = ver.ver_nr rec.vereniging_naam = ver.naam rec.boogtype = 'BB' rec.score1 = 10 rec.score2 = 20 rec.score3 = 30 rec.score4 = 40 rec.score5 = 50 rec.score6 = 60 rec.score7 = 70 rec.totaal = 80 rec.gemiddelde = 5.321 rec.save() # maak een record aan voor iemand die geen lid meer is rec = HistCompetitieIndividueel() rec.histcompetitie = histcomp rec.rank = 1 rec.schutter_nr = 991111 rec.schutter_naam = "Die is weg" rec.vereniging_nr = ver.ver_nr rec.vereniging_naam = ver.naam rec.boogtype = 'BB' rec.score1 = 10 rec.score2 = 20 rec.score3 = 30 rec.score4 = 40 rec.score5 = 50 rec.score6 = 60 rec.score7 = 70 rec.totaal = 80 rec.gemiddelde = 5.321 rec.save()
def setUp(self): """ eenmalige setup voor alle tests wordt als eerste aangeroepen """ self._next_lid_nr = 100001 self.rayon_1 = NhbRayon.objects.get(rayon_nr=1) self.rayon_2 = NhbRayon.objects.get(rayon_nr=2) self.regio_101 = NhbRegio.objects.get(regio_nr=101) self.regio_105 = NhbRegio.objects.get(regio_nr=105) self.regio_112 = NhbRegio.objects.get(regio_nr=112) # maak een test vereniging ver = NhbVereniging() ver.naam = "Zuidelijke Club" ver.ver_nr = "1111" ver.regio = self.regio_112 # secretaris kan nog niet ingevuld worden ver.save() self.nhbver_112 = ver # maak een test vereniging ver = NhbVereniging() ver.naam = "Grote Club" ver.ver_nr = "1000" ver.regio = self.regio_101 # secretaris kan nog niet ingevuld worden ver.save() self.nhbver_101 = ver loc = WedstrijdLocatie(banen_18m=1, banen_25m=1, adres='De Spanning 1, Houtdorp') loc.save() loc.verenigingen.add(ver) self.loc = loc # maak HWL functie aan voor deze vereniging self.functie_hwl = maak_functie("HWL Vereniging %s" % ver.ver_nr, "HWL") self.functie_hwl.nhb_ver = ver self.functie_hwl.save() # maak test leden aan die we kunnen koppelen aan beheerders functies self.account_bko_18 = self._prep_beheerder_lid('BKO') self.account_rko1_18 = self._prep_beheerder_lid('RKO1') self.account_rko2_18 = self._prep_beheerder_lid('RKO2') self.account_rcl101_18 = self._prep_beheerder_lid('RCL101') self.account_rcl101_25 = self._prep_beheerder_lid('RCL101-25') self.account_rcl112_18 = self._prep_beheerder_lid('RCL112') self.account_schutter = self._prep_beheerder_lid('Schutter') self.lid_sporter_1 = Sporter.objects.get(lid_nr=self.account_schutter.username) self.account_schutter2 = self._prep_beheerder_lid('Schutter2') self.lid_sporter_2 = Sporter.objects.get(lid_nr=self.account_schutter2.username) self.boog_r = BoogType.objects.get(afkorting='R') self.sporterboog = SporterBoog(sporter=self.lid_sporter_1, boogtype=self.boog_r, voor_wedstrijd=True) self.sporterboog.save() # creëer een competitie met deelcompetities competities_aanmaken(jaar=2019) self.comp_18 = Competitie.objects.get(afstand='18') self.comp_25 = Competitie.objects.get(afstand='25') # klassengrenzen vaststellen om de competitie voorbij fase A te krijgen self.e2e_login_and_pass_otp(self.testdata.account_bb) self.e2e_wisselnaarrol_bb() self.url_klassengrenzen_vaststellen_18 = '/bondscompetities/%s/klassengrenzen/vaststellen/' % self.comp_18.pk resp = self.client.post(self.url_klassengrenzen_vaststellen_18) self.assert_is_redirect_not_plein(resp) # check for success self.deelcomp_bond_18 = DeelCompetitie.objects.filter(competitie=self.comp_18, laag=LAAG_BK)[0] self.deelcomp_rayon1_18 = DeelCompetitie.objects.filter(competitie=self.comp_18, laag=LAAG_RK, nhb_rayon=self.rayon_1)[0] self.deelcomp_regio_101 = DeelCompetitie.objects.filter(competitie=self.comp_18, laag=LAAG_REGIO, nhb_regio=self.regio_101)[0] self.functie_bko_18 = self.deelcomp_bond_18.functie self.functie_bko_18.accounts.add(self.account_bko_18) self.functie_rko1_18 = self.deelcomp_rayon1_18.functie self.functie_rko1_18.accounts.add(self.account_rko1_18) # maak nog een test vereniging, zonder HWL functie ver = NhbVereniging() ver.naam = "Kleine Club" ver.ver_nr = "1100" ver.regio = self.regio_101 # secretaris kan nog niet ingevuld worden ver.save()
def setUp(self): """ eenmalige setup voor alle tests wordt als eerste aangeroepen """ self.regio_111 = NhbRegio.objects.get(regio_nr=111) # maak een test vereniging ver = NhbVereniging() ver.naam = "Grote Club" ver.ver_nr = "1000" ver.regio = self.regio_111 # secretaris kan nog niet ingevuld worden ver.save() self.nhbver1 = ver # maak de SEC functie self.functie_sec = maak_functie("SEC test", "SEC") self.functie_sec.nhb_ver = ver self.functie_sec.save() # maak de HWL functie self.functie_hwl = maak_functie("HWL test", "HWL") self.functie_hwl.nhb_ver = ver self.functie_hwl.save() # maak de WL functie self.functie_wl = maak_functie("WL test", "WL") self.functie_wl.nhb_ver = ver self.functie_wl.save() # maak het lid aan dat WL wordt sporter = Sporter() sporter.lid_nr = 100001 sporter.geslacht = "M" sporter.voornaam = "Ramon" sporter.achternaam = "de Tester" sporter.email = "*****@*****.**" 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.save() self.account_wl = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam, accepteer_vhpg=True) self.functie_wl.accounts.add(self.account_wl) sporter.account = self.account_wl sporter.save() self.sporter_100001 = sporter boog_r = BoogType.objects.get(afkorting='R') sporterboog = SporterBoog(sporter=sporter, boogtype=boog_r, voor_wedstrijd=True) sporterboog.save() self.sporterboog_100001 = sporterboog voorkeuren = SporterVoorkeuren(sporter=self.sporter_100001, opmerking_para_sporter="test para opmerking") voorkeuren.save() # maak een jeugdlid aan sporter = Sporter() sporter.lid_nr = 100002 sporter.geslacht = "V" sporter.voornaam = "Ramona" sporter.achternaam = "de Jeugdschutter" sporter.email = "" sporter.geboorte_datum = datetime.date(year=2010, month=3, day=4) sporter.sinds_datum = datetime.date(year=2010, month=11, day=12) sporter.bij_vereniging = ver sporter.save() self.sporter_100002 = sporter # maak nog een jeugdlid aan, in dezelfde leeftijdsklasse sporter = Sporter() sporter.lid_nr = 100012 sporter.geslacht = "V" sporter.voornaam = "Andrea" sporter.achternaam = "de Jeugdschutter" sporter.email = "" sporter.geboorte_datum = datetime.date(year=2010, month=3, day=4) sporter.sinds_datum = datetime.date(year=2010, month=10, day=10) sporter.bij_vereniging = ver sporter.save() self.sporter_100012 = sporter # maak het lid aan dat HWL wordt sporter = Sporter() sporter.lid_nr = 100003 sporter.geslacht = "V" sporter.voornaam = "Ramona" sporter.achternaam = "de Testerin" sporter.email = "*****@*****.**" 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 self.account_hwl = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam, accepteer_vhpg=True) self.functie_hwl.accounts.add(self.account_hwl) sporter.account = self.account_hwl sporter.save() self.sporter_100003 = sporter # maak het lid aan dat SEC wordt sporter = Sporter() sporter.lid_nr = 100004 sporter.geslacht = "M" sporter.voornaam = "Ramon" sporter.achternaam = "de Secretaris" sporter.email = "*****@*****.**" sporter.geboorte_datum = datetime.date(year=1971, month=5, day=28) sporter.sinds_datum = datetime.date(year=2000, month=1, day=31) sporter.bij_vereniging = ver sporter.save() self.account_sec = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam, accepteer_vhpg=True) self.functie_sec.accounts.add(self.account_sec) sporter.account = self.account_sec sporter.save() self.lid_100004 = sporter # maak een lid aan van een andere vereniging # maak een test vereniging ver2 = NhbVereniging() ver2.naam = "Andere Club" ver2.ver_nr = "1222" ver2.regio = self.regio_111 # secretaris kan nog niet ingevuld worden ver2.save() self.nhbver2 = ver2 # BB worden self.e2e_login_and_pass_otp(self.testdata.account_bb) self.e2e_wisselnaarrol_bb() self.e2e_check_rol('BB') # maak de competitie aan die nodig is voor deze tests self._maak_competitie() self._maak_wedstrijden() self._maak_inschrijvingen()
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 aanvangsgemiddelden_vaststellen_voor_afstand(afstand: int): """ deze functie gooit de huidige aanvangsgemiddelden van alle sporters voor gegeven afstand weg en bepaalt daarna de nieuwe AG's aan de hand van de meest recente historische competitie uitslag """ # zoek uit wat de meest recente HistComp is histcomps = (HistCompetitie .objects .filter(comp_type=afstand) .order_by('-seizoen')) if len(histcomps) == 0: schrijf_in_logboek(None, 'Competitie', 'Geen historisch uitslag om aanvangsgemiddelden vast te stellen voor %sm' % afstand) return seizoen = histcomps[0].seizoen schrijf_in_logboek(None, 'Competitie', 'Aanvangsgemiddelden vaststellen voor de %sm met uitslag seizoen %s' % (afstand, seizoen)) histcomps = histcomps.filter(seizoen=seizoen) # het eindjaar van de competitie was bepalend voor de klasse # daarmee kunnen we bepalen of de sporter aspirant was eindjaar = int(seizoen.split('/')[1]) # maak een cache aan van boogtype boogtype_dict = dict() # [afkorting] = BoogType for obj in BoogType.objects.all(): boogtype_dict[obj.afkorting] = obj # for # maak een cache aan van nhb leden # we filteren hier niet op inactieve leden sporter_dict = dict() # [lid_nr] = Sporter for obj in Sporter.objects.all(): sporter_dict[obj.lid_nr] = obj # for # maak een cache aan van sporter-boog sporterboog_cache = dict() # [lid_nr, boogtype_afkorting] = SporterBoog for sporterboog in SporterBoog.objects.select_related('sporter', 'boogtype'): tup = (sporterboog.sporter.lid_nr, sporterboog.boogtype.afkorting) sporterboog_cache[tup] = sporterboog # for # verwijder alle bestaande aanvangsgemiddelden Score.objects.filter(type=SCORE_TYPE_INDIV_AG, afstand_meter=afstand).all().delete() minimum_aantal_scores = {18: settings.COMPETITIE_18M_MINIMUM_SCORES_VOOR_AG, 25: settings.COMPETITIE_25M_MINIMUM_SCORES_VOOR_AG} # doorloop alle individuele histcomp records die bij dit seizoen horen bulk_score = list() for histcomp in histcomps: for obj in (HistCompetitieIndividueel .objects .select_related('histcompetitie') .filter(histcompetitie=histcomp)): if (obj.gemiddelde > AG_NUL and obj.boogtype in boogtype_dict and obj.tel_aantal_scores() >= minimum_aantal_scores[afstand]): # haal het sporterboog record op, of maak een nieuwe aan try: tup = (obj.schutter_nr, obj.boogtype) sporterboog = sporterboog_cache[tup] except KeyError: # nieuw record nodig sporterboog = SporterBoog() sporterboog.boogtype = boogtype_dict[obj.boogtype] sporterboog.voor_wedstrijd = True try: sporterboog.sporter = sporter_dict[obj.schutter_nr] except KeyError: # geen lid meer - skip sporterboog = None else: sporterboog.save() # zet het nieuwe record in de cache, anders krijgen we dupes tup = (sporterboog.sporter.lid_nr, sporterboog.boogtype.afkorting) sporterboog_cache[tup] = sporterboog else: if not sporterboog.voor_wedstrijd: sporterboog.voor_wedstrijd = True sporterboog.save(update_fields=['voor_wedstrijd']) if sporterboog: # aspiranten schieten op een grotere kaart en altijd op 18m # daarom AG van aspirant niet overnemen als deze cadet wordt # aangezien er maar 1 klasse is, is het AG niet nodig # voorbeeld: eindjaar = 2019 # geboortejaar = 2006 --> leeftijd was 13, dus aspirant # geboortejaar = 2005 --> leeftijd was 14, dus cadet was_aspirant = (eindjaar - sporterboog.sporter.geboorte_datum.year) <= MAXIMALE_WEDSTRIJDLEEFTIJD_ASPIRANT # zoek het score record erbij if not was_aspirant: # aanvangsgemiddelde voor deze afstand waarde = int(obj.gemiddelde * 1000) score = Score(sporterboog=sporterboog, type=SCORE_TYPE_INDIV_AG, waarde=waarde, afstand_meter=afstand) bulk_score.append(score) if len(bulk_score) >= 500: Score.objects.bulk_create(bulk_score) bulk_score = list() # for # for if len(bulk_score) > 0: # pragma: no branch Score.objects.bulk_create(bulk_score) del bulk_score # maak nu alle ScoreHist entries in 1x aan # (dit kost de meeste tijd) # hiervoor hebben we Score.pk nodig en die kregen we niet uit bovenstaande Score.objects.bulk_create bulk_scorehist = list() notitie = "Uitslag competitie seizoen %s" % histcomp.seizoen for score in (Score .objects .filter(type=SCORE_TYPE_INDIV_AG, afstand_meter=afstand)): scorehist = ScoreHist(score=score, oude_waarde=0, nieuwe_waarde=score.waarde, door_account=None, notitie=notitie) bulk_scorehist.append(scorehist) if len(bulk_scorehist) > 250: ScoreHist.objects.bulk_create(bulk_scorehist) bulk_scorehist = list() # for if len(bulk_scorehist) > 0: # pragma: no branch ScoreHist.objects.bulk_create(bulk_scorehist)
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)
def _maak_leden_aan(self): sporter = Sporter() sporter.lid_nr = 100001 sporter.geslacht = "M" sporter.voornaam = "Ramon" sporter.achternaam = "de Tester" sporter.email = "*****@*****.**" 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 = self.ver self.account_lid = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam) sporter.account = self.account_lid sporter.save() self.sporter_100001 = sporter sporterboog = SporterBoog(sporter=self.sporter_100001, boogtype=self.boog_r, voor_wedstrijd=True) # TODO: migrate sporterboog.save() self.sporterboog_100001 = sporterboog sporter = Sporter() sporter.lid_nr = 100002 sporter.geslacht = "M" sporter.voornaam = "Ramon" sporter.achternaam = "het Testertje" sporter.email = "*****@*****.**" sporter.geboorte_datum = datetime.date(year=2008, month=3, day=4) sporter.sinds_datum = datetime.date(year=2015, month=11, day=12) sporter.bij_vereniging = self.ver self.account_jeugdlid = self.e2e_create_account( sporter.lid_nr, sporter.email, sporter.voornaam) sporter.account = self.account_jeugdlid sporter.save() self.sporter_100002 = sporter sporterboog = SporterBoog(sporter=self.sporter_100002, boogtype=self.boog_r, voor_wedstrijd=True) # TODO: migrate sporterboog.save() self.sporterboog_100002 = sporterboog sporter = Sporter() sporter.lid_nr = 100003 sporter.geslacht = "M" sporter.voornaam = "Geen" sporter.achternaam = "Vereniging" sporter.email = "*****@*****.**" sporter.geboorte_datum = datetime.date(year=2008, month=3, day=4) sporter.sinds_datum = datetime.date(year=2015, month=11, day=12) # lid.bij_vereniging = sporter.account = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam) sporter.save() sporter = Sporter() sporter.lid_nr = 100004 sporter.geslacht = "V" sporter.voornaam = "Juf" sporter.achternaam = "de Schutter" sporter.email = "*****@*****.**" sporter.geboorte_datum = datetime.date(year=1988, month=12, day=4) sporter.sinds_datum = datetime.date(year=2015, month=7, day=15) sporter.bij_vereniging = self.ver sporter.account = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam) sporter.save() self.sporter_100004 = sporter sporterboog = SporterBoog(sporter=self.sporter_100004, boogtype=self.boog_r, voor_wedstrijd=True) # TODO: migrate sporterboog.save() self.sporterboog_100004 = sporterboog sporter = Sporter() sporter.lid_nr = 100005 sporter.geslacht = "V" sporter.voornaam = "Jans" sporter.achternaam = "de Schutter" sporter.email = "*****@*****.**" sporter.geboorte_datum = datetime.date(year=1977, month=12, day=4) sporter.sinds_datum = datetime.date(year=2015, month=7, day=15) sporter.bij_vereniging = self.ver sporter.account = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam) sporter.save() self.sporter_100005 = sporter sporterboog = SporterBoog(sporter=self.sporter_100005, boogtype=self.boog_r, voor_wedstrijd=True) # TODO: migrate sporterboog.save() self.sporterboog_100005 = sporterboog