예제 #1
0
파일: tests.py 프로젝트: RamonvdW/nhb-apps
    def setUp(self):
        """ initialisatie van de test case """

        self.account_admin = self.e2e_create_account_admin()
        self.account_admin.is_BB = True
        self.account_admin.save()

        sporter = Sporter(lid_nr=100000,
                          voornaam='Ad',
                          achternaam='de Admin',
                          geboorte_datum='1966-06-06',
                          sinds_datum='2020-02-02',
                          account=self.account_admin)
        sporter.save()

        # maak een test vereniging
        self.nhbver1 = NhbVereniging(ver_nr=1000,
                                     naam="Grote Club",
                                     regio=NhbRegio.objects.get(regio_nr=112))
        self.nhbver1.save()

        self.functie_hwl = maak_functie('HWL Ver 1000', 'HWL')
        self.functie_hwl.nhb_ver = self.nhbver1
        self.functie_hwl.accounts.add(self.account_admin)
        self.functie_hwl.save()

        self.nhbver2 = NhbVereniging(ver_nr=1001,
                                     naam="Kleine Club",
                                     regio=NhbRegio.objects.get(regio_nr=112))
        self.nhbver2.save()
예제 #2
0
    def setUp(self):
        """ initialisatie van de test case """
        usermodel = get_user_model()
        usermodel.objects.create_user('100001', '*****@*****.**',
                                      'wachtwoord')
        account = Account.objects.get(username='******')
        account.save()
        self.account_100001 = account

        # maak een test vereniging
        # maak een test vereniging
        ver = NhbVereniging(ver_nr="1000",
                            naam="Grote Club",
                            regio=NhbRegio.objects.get(pk=111))
        ver.save()
        self.nhbver1 = ver

        # maak een sporter 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.bij_vereniging = ver
        sporter.account = self.account_100001
        sporter.save()

        self.sporter1 = sporter
예제 #3
0
    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)
예제 #4
0
    def setUp(self):
        """ eenmalige setup voor alle tests
            wordt als eerste aangeroepen
        """
        # deze test is afhankelijk van de standaard regio's
        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.account_geenlid = self.e2e_create_account('geenlid',
                                                       '*****@*****.**',
                                                       'Testertje')
예제 #5
0
    def setUp(self):
        """ initialisatie van de test case """
        self.account_normaal = self.e2e_create_account('normaal', '*****@*****.**', 'Normaal')
        self.account_100001 = self.e2e_create_account('100001', '*****@*****.**', 'Ramon')

        self.functie_bko = maak_functie('BKO Test', 'BKO')

        self.functie_rko = maak_functie('RKO Test', 'RKO')
        self.functie_rko.nhb_rayon = NhbRayon.objects.get(rayon_nr=3)
        self.functie_rko.save()

        self.functie_rcl = maak_functie('RCL Test', 'RCL')
        self.functie_rcl.nhb_regio = NhbRegio.objects.get(regio_nr=111)
        self.functie_rcl.save()

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club"
        ver.ver_nr = "1000"
        ver.regio = NhbRegio.objects.get(regio_nr=111)
        # secretaris kan nog niet ingevuld worden
        ver.save()

        self.functie_sec = maak_functie('Secretaris vereniging 1000', 'SEC')
        self.functie_sec.nhb_ver = ver
        self.functie_sec.save()

        self.functie_hwl = maak_functie('Hoofdwedstrijdleider 1000', 'HWL')
        self.functie_hwl.nhb_ver = ver
        self.functie_hwl.save()

        self.functie_wl = maak_functie('Wedstrijdleider 1000', 'WL')
        self.functie_wl.nhb_ver = ver
        self.functie_wl.save()

        # 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_100001
        sporter.email = sporter.account.email
        sporter.save()

        # maak een lid aan voor de admin
        sporter = Sporter()
        sporter.lid_nr = 100002
        sporter.geslacht = "M"
        sporter.voornaam = "Ad"
        sporter.achternaam = "Min"
        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.testdata.account_admin
        sporter.email = sporter.account.email
        sporter.save()
예제 #6
0
    def setUp(self):
        """ initialisatie van de test case """
        self.account_normaal = self.e2e_create_account('normaal',
                                                       '*****@*****.**',
                                                       'Normaal')

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club"
        ver.ver_nr = "1000"
        ver.regio = NhbRegio.objects.get(pk=111)
        # secretaris kan nog niet ingevuld worden
        ver.save()

        # maak een test lid aan
        sporter = Sporter()
        sporter.lid_nr = 100001
        sporter.geslacht = "M"
        sporter.voornaam = "Ramon"
        sporter.achternaam = "de Tester"
        sporter.email = ""  # belangrijk: leeg laten!
        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.save()
        self.sporter_100001 = sporter
예제 #7
0
    def test_geen_beheerders(self):
        # login als BB
        self.e2e_login_and_pass_otp(self.testdata.account_bb)
        self.e2e_wisselnaarrol_bb()
        self.e2e_check_rol('BB')

        # maak een extra vereniging aan zonder beheerders
        ver = NhbVereniging()
        ver.naam = "Extra Club"
        ver.ver_nr = 1099
        ver.regio = NhbRegio.objects.get(regio_nr=101)
        # secretaris kan nog niet ingevuld worden
        ver.save()

        # maak de SEC, HWL en WL functies aan voor deze vereniging
        for rol in ('SEC', 'HWL', 'WL'):
            tmp_func = maak_functie(rol + " nhbver 1099", rol)
            tmp_func.nhb_ver = ver
            tmp_func.save()
        # for

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_geen_beheerders)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('vereniging/contact-geen-beheerders.dtl', 'plein/site_layout.dtl'))

        # probeer het met een andere rol
        self.e2e_wisselnaarrol_gebruiker()
        resp = self.client.get(self.url_geen_beheerders)
        self.assert403(resp)

        self.e2e_assert_other_http_commands_not_supported(self.url_geen_beheerders)
예제 #8
0
    def _maak_verenigingen(self):
        """
            Maak in regios 101..107 elk vier verenigingen aan
            Maak in regios 108..116 elk twee verenigingen aan
            Maak in regio 100 twee verenigingen aan

            ver_nr = regio_nr * 10 + volgnummer
                     1053 is dus 3e vereniging in regio 105

            de eerste 3 verenigingen in regio's 101 en 108 gaan in het eerste cluster van die regio
        """
        cluster_regios = list()
        curr_rayon = 0

        bulk = list()
        for regio in NhbRegio.objects.select_related('rayon').order_by(
                'regio_nr'):
            if regio.regio_nr in (101, 107):
                cluster_regios.append(regio)

            aantal = 2
            if 101 <= regio.regio_nr <= 107:
                aantal = 4

            for nr in range(aantal):
                ver_nr = regio.regio_nr * 10 + nr + 1

                # vereniging 0, 1, 2 gaan in een cluster, 3 niet
                if nr >= 3:
                    cluster = None

                ver = NhbVereniging(
                    ver_nr=ver_nr,
                    naam="Club %s" % ver_nr,
                    plaats="Regio %s dorp %s" % (regio.regio_nr, nr + 1),
                    regio=regio,
                    # geen secretaris lid
                    geen_wedstrijden=regio.is_administratief)

                bulk.append(ver)
            # for
        # for

        NhbVereniging.objects.bulk_create(bulk)  # 48x
        # print('TestData: created %sx NhbVereniging' % len(bulk))

        for ver in bulk:
            self.vereniging[ver.ver_nr] = ver
        # for

        for regio in cluster_regios:
            cluster = NhbCluster.objects.filter(
                regio=regio).order_by('letter')[0]
            self.regio_cluster[regio.regio_nr] = cluster
            for ver in NhbVereniging.objects.filter(
                    regio=regio).order_by('ver_nr')[:3]:
                ver.clusters.add(cluster)
예제 #9
0
    def setUp(self):
        """ initialisatie van de test case """
        self.account_normaal = self.e2e_create_account('normaal', '*****@*****.**', 'Normaal')
        self.account_geenlid = self.e2e_create_account('geenlid', '*****@*****.**', 'Geen')
        self.account_twee = self.e2e_create_account('twee', '*****@*****.**', 'Twee')

        # afhankelijk van de rayon/regio's aangemaakt door NhbStructuur migratie

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club"
        ver.ver_nr = "1000"
        ver.regio = NhbRegio.objects.get(pk=111)
        # secretaris kan nog niet ingevuld worden
        ver.save()
        self.nhbver = ver

        # 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.sporter1 = sporter

        # maak een test lid aan
        sporter = Sporter()
        sporter.lid_nr = 100002
        sporter.geslacht = "V"
        sporter.voornaam = "Twee"
        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_twee
        sporter.email = sporter.account.email
        sporter.save()

        # maak een test lid aan
        sporter = Sporter()
        sporter.lid_nr = 100003
        sporter.geslacht = "V"
        sporter.voornaam = "Geen"
        sporter.achternaam = "Lid"
        sporter.geboorte_datum = datetime.date(year=1972, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=2010, month=11, day=12)
        sporter.account = self.account_geenlid
        sporter.email = sporter.account.email
        sporter.save()
예제 #10
0
    def setUp(self):
        """ initialisatie van de test case """

        self.url_planning_regio = '/bondscompetities/regio/planning/%s/'  # deelcomp_pk
        self.url_planning_regio_ronde = '/bondscompetities/regio/planning/ronde/%s/'  # ronde_pk
        self.url_uitslag_invoeren = '/bondscompetities/scores/uitslag-invoeren/%s/'  # wedstrijd_pk
        self.url_inschrijven = '/bondscompetities/deelnemen/leden-aanmelden/%s/'  # comp_pk

        # deze test is afhankelijk van de standaard regio's
        self.regio_101 = NhbRegio.objects.get(regio_nr=101)
        self.boog_r = BoogType.objects.get(afkorting='R')

        # maak een BB aan, nodig om de competitie defaults in te zien
        self.account_bb = self.e2e_create_account('bb',
                                                  '*****@*****.**',
                                                  'BB',
                                                  accepteer_vhpg=True)
        self.account_bb.is_BB = True
        self.account_bb.save()

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club"
        ver.plaats = "Boogstad"
        ver.ver_nr = 1000
        ver.regio = self.regio_101
        # secretaris kan nog niet ingevuld worden
        ver.save()
        self.ver = ver

        # login als BB
        self.e2e_login_and_pass_otp(self.account_bb)
        self.e2e_wisselnaarrol_bb()
        self.e2e_check_rol('BB')

        self._maak_leden_aan()
        self._maak_competitie_aan()

        # schrijf de leden in
        schuttersboog = [
            self.sporterboog_100001, self.sporterboog_100002,
            self.sporterboog_100004, self.sporterboog_100005
        ]
        self._schrijf_in_voor_competitie(self.deelcomp_r101, schuttersboog)

        self.functie_bko = DeelCompetitie.objects.get(
            competitie=self.comp, laag=LAAG_BK, competitie__afstand=18).functie

        self.client.logout()
예제 #11
0
파일: tests.py 프로젝트: RamonvdW/nhb-apps
    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
예제 #12
0
    def setUp(self):
        """ initialisatie van de test case """
        self.account_normaal = self.e2e_create_account('normaal',
                                                       '*****@*****.**',
                                                       'Normaal',
                                                       accepteer_vhpg=True)

        rayon_1 = NhbRayon.objects.get(rayon_nr=1)
        regio_101 = NhbRegio.objects.get(regio_nr=101)
        regio_105 = NhbRegio.objects.get(regio_nr=105)

        # creëer een competitie met deelcompetities
        competities_aanmaken(jaar=2019)

        deel1 = DeelCompetitie.objects.filter(laag=LAAG_BK)[0]
        self.functie_bko1 = deel1.functie
        self.functie_bko2 = DeelCompetitie.objects.filter(
            laag=LAAG_BK)[1].functie
        self.functie_rko1 = DeelCompetitie.objects.filter(
            laag=LAAG_RK, competitie=deel1.competitie,
            nhb_rayon=rayon_1)[0].functie
        self.functie_rcl101 = DeelCompetitie.objects.filter(
            laag=LAAG_REGIO, competitie=deel1.competitie,
            nhb_regio=regio_101)[0].functie
        self.functie_rcl105 = DeelCompetitie.objects.filter(
            laag=LAAG_REGIO, competitie=deel1.competitie,
            nhb_regio=regio_105)[0].functie

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club"
        ver.ver_nr = "1000"
        ver.regio = regio_105
        # secretaris kan nog niet ingevuld worden
        ver.save()
        self.nhbver1 = ver

        self.functie_sec = maak_functie("SEC test", "SEC")
        self.functie_sec.nhb_ver = ver
        self.functie_sec.save()

        self.functie_hwl = maak_functie("HWL test", "HWL")
        self.functie_hwl.nhb_ver = ver
        self.functie_hwl.save()

        self.functie_wl = maak_functie("WL test", "WL")
        self.functie_wl.nhb_ver = ver
        self.functie_wl.save()
예제 #13
0
    def setUp(self):
        """ initialisatie van de test case """
        self.account_normaal = self.e2e_create_account('normaal',
                                                       '*****@*****.**',
                                                       'Normaal')

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club"
        ver.ver_nr = "1000"
        ver.regio = NhbRegio.objects.get(pk=111)
        # secretaris kan nog niet ingevuld worden
        ver.save()
        self.nhbver = ver

        # maak de SEC functie aan
        functie = Functie(rol='SEC',
                          nhb_ver=ver,
                          beschrijving='SEC vereniging 1000')
        functie.save()

        # 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.bij_vereniging = ver
        sporter.save()
        self.sporter_100001 = sporter

        # maak een test lid aan
        sporter = Sporter()
        sporter.lid_nr = 100002
        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
        sporter.save()
        self.sporter_100002 = sporter
예제 #14
0
    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.functie_sec = maak_functie("SEC test", "SEC")
        self.functie_tst = maak_functie("Test test", "x")

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club"
        ver.ver_nr = "1000"
        ver.regio = NhbRegio.objects.get(pk=111)
        # secretaris kan nog niet ingevuld worden
        ver.save()
        self.nhbver1 = ver

        self.functie_sec.nhb_ver = ver
        self.functie_sec.save()
예제 #15
0
    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)
예제 #16
0
class TestKalenderWedstrijd(E2EHelpers, TestCase):
    """ tests voor de Kalender applicatie """

    url_kalender_manager = '/kalender/manager/'
    url_kalender_vereniging = '/kalender/vereniging/'
    url_kalender_wijzig_wedstrijd = '/kalender/%s/wijzig/'  # wedstrijd_pk
    url_kalender_zet_status = '/kalender/%s/zet-status/'  # wedstrijd_pk
    url_kalender_sessies = '/kalender/%s/sessies/'  # wedstrijd_pk

    def setUp(self):
        """ initialisatie van de test case """

        self.account_admin = self.e2e_create_account_admin()
        self.account_admin.is_BB = True
        self.account_admin.save()

        sporter = Sporter(lid_nr=100000,
                          voornaam='Ad',
                          achternaam='de Admin',
                          geboorte_datum='1966-06-06',
                          sinds_datum='2020-02-02',
                          account=self.account_admin)
        sporter.save()

        # maak een test vereniging
        self.nhbver1 = NhbVereniging(ver_nr=1000,
                                     naam="Grote Club",
                                     regio=NhbRegio.objects.get(regio_nr=112))
        self.nhbver1.save()

        self.functie_hwl = maak_functie('HWL Ver 1000', 'HWL')
        self.functie_hwl.nhb_ver = self.nhbver1
        self.functie_hwl.accounts.add(self.account_admin)
        self.functie_hwl.save()

        self.nhbver2 = NhbVereniging(ver_nr=1001,
                                     naam="Kleine Club",
                                     regio=NhbRegio.objects.get(regio_nr=112))
        self.nhbver2.save()

    @staticmethod
    def _maak_externe_locatie(ver):
        # voeg een locatie toe
        locatie = WedstrijdLocatie(
            baan_type='E',  # externe locatie
            naam='Test locatie')
        locatie.save()
        locatie.verenigingen.add(ver)

        return locatie

    @staticmethod
    def _maak_accommodatie_binnen(ver):
        # voeg een locatie toe
        binnen_locatie = WedstrijdLocatie(
            baan_type='X',  # onbekend
            adres='Verweg 1, Om de hoek',
            adres_uit_crm=True)
        binnen_locatie.save()
        binnen_locatie.verenigingen.add(ver)
        return binnen_locatie

    @staticmethod
    def _maak_accommodatie_buiten(ver):
        # voeg een locatie toe
        buiten_locatie = WedstrijdLocatie(
            baan_type='B',  # buiten
            adres_uit_crm=False,
            discipline_outdoor=True,
            buiten_banen=4)
        buiten_locatie.save()
        buiten_locatie.verenigingen.add(ver)
        return buiten_locatie

    def test_wijzig_wedstrijd(self):
        self.e2e_login_and_pass_otp(self.account_admin)

        # wissel naar HWL en maak een wedstrijd aan
        self._maak_externe_locatie(self.nhbver1)  # locatie is noodzakelijk
        self.e2e_wissel_naar_functie(self.functie_hwl)
        resp = self.client.post(self.url_kalender_vereniging,
                                {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        self.assertEqual(1, KalenderWedstrijd.objects.count())
        wedstrijd = KalenderWedstrijd.objects.all()[0]
        self.assertTrue(str(wedstrijd) != '')
        url = self.url_kalender_wijzig_wedstrijd % wedstrijd.pk

        # haal de wedstrijd op met status 'ontwerp'
        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, ('kalender/wijzig-wedstrijd.dtl', 'plein/site_layout.dtl'))

        # buiten locatie zonder binnen locatie
        locatie_buiten = self._maak_accommodatie_buiten(self.nhbver1)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)

        # buiten locatie met binnen locatie
        self._maak_accommodatie_binnen(self.nhbver1)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)

        # wijzig velden via de 'post' interface
        loc_sel = 'loc_%s' % locatie_buiten.pk
        with self.assert_max_queries(20):
            resp = self.client.post(
                url, {
                    'titel': 'Test Titel',
                    'wedstrijd_duur': 'duur_1',
                    'contact_naam': 'Test Naam',
                    'contact_email': 'Test Email',
                    'contact_website': 'http://test.website.nl',
                    'contact_telefoon': 'Test Telefoon',
                    'aantal_banen': '42',
                    'discipline': 'disc_OD',
                    'wa_status': 'wa_B',
                    'locatie': loc_sel,
                    'aanwezig': 'aanwezig_35',
                    'scheidsrechters': 'Scheids1\nScheids2',
                    'begrenzing': 'begrenzing_L',
                    'extern': 'ja'
                })
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.titel, 'Test Titel')
        self.assertEqual(wedstrijd.datum_begin, wedstrijd.datum_einde)
        self.assertEqual(wedstrijd.contact_naam, 'Test Naam')
        self.assertEqual(wedstrijd.contact_email, 'Test Email')
        self.assertEqual(wedstrijd.contact_website, 'http://test.website.nl')
        self.assertEqual(wedstrijd.contact_telefoon, 'Test Telefoon')
        self.assertEqual(wedstrijd.aantal_banen, 42)
        self.assertEqual(wedstrijd.discipline, 'OD')
        self.assertEqual(wedstrijd.scheidsrechters, 'Scheids1\nScheids2')
        self.assertEqual(wedstrijd.minuten_voor_begin_sessie_aanwezig_zijn, 35)
        self.assertEqual(wedstrijd.locatie, locatie_buiten)
        self.assertEqual(wedstrijd.begrenzing, 'L')
        self.assertTrue(wedstrijd.extern_beheerd)

        datum = '%s-1-1' % (wedstrijd.datum_begin.year + 1)
        with self.assert_max_queries(20):
            resp = self.client.post(
                url, {
                    'datum_begin': datum,
                    'wedstrijd_duur': 'duur_5',
                    'wa_status': 'wa_A',
                    'aantal_banen': '0'
                })
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.wa_status, 'B')
        self.assertFalse(wedstrijd.extern_beheerd)

        # akkoord WA status
        with self.assert_max_queries(20):
            resp = self.client.post(url, {
                'wa_status': 'wa_A',
                'akkoord_a_status': 'ja'
            })
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.wa_status, 'A')

        # zet de wedstrijd door 'Wacht op goedkeuring' en haal de pagina opnieuw op
        wedstrijd.status = 'W'
        wedstrijd.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)

        # probeer wijzigingen te doen aan een wedstrijd die voorbij Ontwerp fase is
        datum = '%s-3-3' % wedstrijd.datum_begin.year
        oude_datum_begin = wedstrijd.datum_begin
        oude_datum_einde = wedstrijd.datum_einde
        with self.assert_max_queries(20):
            resp = self.client.post(
                url,
                {
                    'titel': 'Test Titel 3',  # mag wel
                    'datum_begin': datum,
                    'wedstrijd_duur': 'duur_1',
                    'contact_naam': 'Test Naam 3',  # mag wel
                    'contact_email': 'Test Email 3',
                    'contact_website': 'http://test3.website.nl',
                    'contact_telefoon': 'Test Telefoon 3',
                    'aantal_banen': '41',
                    'discipline': 'disc_3D',
                    'wa_status': 'wa_B',
                    'scheidsrechters': 'Scheids4',
                    'begrenzing': 'begrenzing_V',  # mag wel
                    'extern': 'nee'
                })
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.titel, 'Test Titel 3')
        self.assertEqual(wedstrijd.datum_begin, oude_datum_begin)
        self.assertEqual(wedstrijd.datum_einde, oude_datum_einde)
        self.assertEqual(wedstrijd.contact_naam, 'Test Naam 3')
        self.assertEqual(wedstrijd.contact_email, 'Test Email 3')
        self.assertEqual(wedstrijd.contact_website, 'http://test3.website.nl')
        self.assertEqual(wedstrijd.contact_telefoon, 'Test Telefoon 3')
        self.assertEqual(wedstrijd.aantal_banen, 42)
        self.assertEqual(wedstrijd.discipline, 'OD')
        self.assertEqual(wedstrijd.scheidsrechters, 'Scheids1\nScheids2')
        self.assertEqual(wedstrijd.begrenzing, 'V')
        self.assertTrue(wedstrijd.extern_beheerd)

        # zet de wedstrijd door 'Geaccepteerd' en haal de pagina opnieuw op
        wedstrijd.status = 'A'
        wedstrijd.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)

        # zet de wedstrijd door 'Geannuleerd' en haal de pagina opnieuw op
        wedstrijd.status = WEDSTRIJD_STATUS_GEANNULEERD
        wedstrijd.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)

        # probeer wijzigingen te doen aan een geannuleerde wedstrijd
        datum = '%s-2-2' % wedstrijd.datum_begin.year
        oude_datum_begin = wedstrijd.datum_begin
        oude_datum_einde = wedstrijd.datum_einde
        with self.assert_max_queries(20):
            resp = self.client.post(
                url,
                {
                    'titel': 'Test Titel 2',  # mag wel
                    'datum_begin': datum,
                    'wedstrijd_duur': 'duur_1',
                    'contact_naam': 'Test Naam 2',
                    'contact_email': 'Test Email 2',
                    'contact_website': 'Test Website 2',
                    'contact_telefoon': 'Test Telefoon 2',
                    'aantal_banen': '40',
                    'discipline': 'disc_3D',
                    'wa_status': 'wa_B',
                    'scheidsrechters': 'Scheids3',
                    'begrenzing': 'begrenzing_Y',
                    'extern': 'nee'
                })
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.titel, 'Test Titel 2')
        self.assertEqual(wedstrijd.datum_begin, oude_datum_begin)
        self.assertEqual(wedstrijd.datum_einde, oude_datum_einde)
        self.assertEqual(wedstrijd.contact_naam, 'Test Naam 3')
        self.assertEqual(wedstrijd.contact_email, 'Test Email 3')
        self.assertEqual(wedstrijd.contact_website, 'http://test3.website.nl')
        self.assertEqual(wedstrijd.contact_telefoon, 'Test Telefoon 3')
        self.assertEqual(wedstrijd.aantal_banen, 42)
        self.assertEqual(wedstrijd.discipline, 'OD')
        self.assertEqual(wedstrijd.scheidsrechters, 'Scheids1\nScheids2')
        self.assertEqual(wedstrijd.begrenzing, 'V')
        self.assertTrue(wedstrijd.extern_beheerd)

        # niet bestaande wedstrijd
        resp = self.client.get(self.url_kalender_wijzig_wedstrijd % 999999)
        self.assert404(resp)
        resp = self.client.post(self.url_kalender_wijzig_wedstrijd % 999999)
        self.assert404(resp)

        # nu als BB
        self.e2e_wisselnaarrol_bb()

        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, ('kalender/wijzig-wedstrijd.dtl', 'plein/site_layout.dtl'))

        wedstrijd.status = 'W'  # wacht op goedkeuring
        wedstrijd.save()
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK

        wedstrijd.status = 'A'  # geaccepteerd
        wedstrijd.save()
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK

        with self.assert_max_queries(20):
            resp = self.client.post(url, {'titel': 'Aangepast door BB'})
        self.assert_is_redirect(resp, self.url_kalender_manager)

        wedstrijd.status = 'X'  # geannuleerd
        wedstrijd.save()
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK

        # echt verwijderen van de wedstrijd
        wedstrijd.status = 'O'  # ontwerp
        wedstrijd.save()
        self.assertEqual(1, KalenderWedstrijd.objects.count())
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'verwijder_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_manager)
        self.assertEqual(0, KalenderWedstrijd.objects.count())

        self.e2e_assert_other_http_commands_not_supported(url, post=False)

    def test_wijzig_bad(self):
        self.e2e_login_and_pass_otp(self.account_admin)

        # wissel naar HWL en maak een wedstrijd aan
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self._maak_externe_locatie(self.nhbver1)
        resp = self.client.post(self.url_kalender_vereniging,
                                {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        self.assertEqual(1, KalenderWedstrijd.objects.count())
        wedstrijd = KalenderWedstrijd.objects.all()[0]
        url = self.url_kalender_wijzig_wedstrijd % wedstrijd.pk

        # wijzig velden via de 'post' interface
        with self.assert_max_queries(20):
            resp = self.client.post(url, {})  # geen parameters
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        # geen valide datum (parsing exception)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'datum_begin': 'not-a-date'})
        self.assert404(resp)

        # te ver in het verleden
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'datum_begin': '2000-01-02'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        with self.assert_max_queries(20):
            resp = self.client.post(url, {'wedstrijd_duur': 'duur_'})
        self.assert404(resp)

        # illegaal aantal banen
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'aantal_banen': 'x'})
        self.assert404(resp)

        # niet bestaande locatie
        # en niet bekende aanwezigheid
        with self.assert_max_queries(20):
            resp = self.client.post(url, {
                'locatie': 'loc_99999',
                'aanwezig': 'aanwezig_99'
            })
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        # verwijderen in verkeerde fase
        for status in "WAX":
            wedstrijd.status = status
            wedstrijd.save()
            with self.assert_max_queries(20):
                resp = self.client.post(url, {'verwijder_wedstrijd': 'ja'})
            self.assert_is_redirect(resp, self.url_kalender_vereniging)
            wedstrijd = KalenderWedstrijd.objects.get(
                pk=wedstrijd.pk)  # nog steeds aanwezig?
        # for

        # verkeerder vereniging
        wedstrijd.organiserende_vereniging = self.nhbver2
        wedstrijd.save()

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert403(resp)

        with self.assert_max_queries(20):
            resp = self.client.post(url, {})
        self.assert403(resp)

    def test_zet_status(self):
        self.e2e_login_and_pass_otp(self.account_admin)

        # wissel naar HWL en maak een wedstrijd aan
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self._maak_externe_locatie(self.nhbver1)
        resp = self.client.post(self.url_kalender_vereniging,
                                {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        self.assertEqual(1, KalenderWedstrijd.objects.count())
        wedstrijd = KalenderWedstrijd.objects.all()[0]
        url = self.url_kalender_zet_status % wedstrijd.pk

        with self.assert_max_queries(20):
            resp = self.client.post(url, {})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        # doorzetten naar 'Wacht op goedkeuring'
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'verder': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.status, 'W')

        # verkeerde vereniging
        wedstrijd.organiserende_vereniging = self.nhbver2
        wedstrijd.save()
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'verder': 'ja'})
        self.assert403(resp)

        wedstrijd.organiserende_vereniging = self.nhbver1
        wedstrijd.save()

        # nu als BB
        self.e2e_wisselnaarrol_bb()

        with self.assert_max_queries(20):
            resp = self.client.post(url, {})
        self.assert_is_redirect(resp, self.url_kalender_manager)

        # van Wacht-op-goedkeuring terug naar Ontwerp
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'terug': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_manager)
        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.status, 'O')

        # vanuit ontwerp blijf je in Ontwerp
        with self.assert_max_queries(20):
            resp = self.client.post(url, {})
        self.assert_is_redirect(resp, self.url_kalender_manager)

        # van Ontwerp weer naar Wacht-op-goedkeuring
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'verder': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_manager)
        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.status, 'W')

        # van Wacht-op-goedkeuring door naar Geaccepteerd
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'verder': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_manager)
        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.status, 'A')

        # van Geaccepteerd kan je niet verder of terug
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'verder': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_manager)
        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.status, 'A')

        with self.assert_max_queries(20):
            resp = self.client.post(url, {'terug': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_manager)
        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        self.assertEqual(wedstrijd.status, 'A')

        # Annuleer
        for status in "OWAX":
            wedstrijd.status = status
            wedstrijd.save()
            with self.assert_max_queries(20):
                resp = self.client.post(url, {'annuleer': 'ja'})
            self.assert_is_redirect(resp, self.url_kalender_manager)
            wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
            self.assertEqual(wedstrijd.status, 'X')
        # for

        # slechte wedstrijd_pk
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_kalender_zet_status % 999999, {})
        self.assert404(resp)

    def test_wijzig_wedstrijd_datum(self):
        # wordt HWL
        self.e2e_login_and_pass_otp(self.account_admin)
        self.e2e_wissel_naar_functie(self.functie_hwl)

        # maak een wedstrijd en sessie aan
        self._maak_externe_locatie(self.nhbver1)
        resp = self.client.post(self.url_kalender_vereniging,
                                {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        self.assertEqual(1, KalenderWedstrijd.objects.count())
        wedstrijd = KalenderWedstrijd.objects.all()[0]
        url = self.url_kalender_sessies % wedstrijd.pk
        resp = self.client.post(url, {'nieuwe_sessie': 'graag'})
        self.assert_is_redirect(resp, url)
        self.assertEqual(1, KalenderWedstrijdSessie.objects.count())
        sessie = KalenderWedstrijdSessie.objects.all()[0]

        # wijzig de wedstrijd datum en controleer dat de sessie mee gaat
        self.assertEqual(sessie.datum, wedstrijd.datum_begin)
        url = self.url_kalender_wijzig_wedstrijd % wedstrijd.pk
        datum = wedstrijd.datum_begin + datetime.timedelta(days=3)
        resp = self.client.post(url, {'datum_begin': str(datum)})
        self.assert_is_redirect_not_plein(resp)

        wedstrijd = KalenderWedstrijd.objects.get(pk=wedstrijd.pk)
        sessie = KalenderWedstrijdSessie.objects.get(pk=sessie.pk)
        self.assertEqual(wedstrijd.datum_begin, datum)
        self.assertEqual(sessie.datum, datum)

    def test_vastpinnen(self):
        # controleer dat sessies en boogtypen niet aangepast kunnen worden als ze in gebruik zijn
        # wordt HWL
        self.e2e_login_and_pass_otp(self.account_admin)
        self.e2e_wissel_naar_functie(self.functie_hwl)

        # maak een wedstrijd met twee sessies aan
        self._maak_externe_locatie(self.nhbver1)
        resp = self.client.post(self.url_kalender_vereniging,
                                {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        self.assertEqual(1, KalenderWedstrijd.objects.count())
        wedstrijd = KalenderWedstrijd.objects.all()[0]
        self.assertEqual(wedstrijd.boogtypen.count(), 5)
        self.assertEqual(wedstrijd.wedstrijdklassen.count(), 40)

        url = self.url_kalender_sessies % wedstrijd.pk
        resp = self.client.post(url, {'nieuwe_sessie': 'graag'})
        self.assert_is_redirect(resp, url)
        resp = self.client.post(url, {'nieuwe_sessie': 'graag'})
        self.assert_is_redirect(resp, url)
        self.assertEqual(2, KalenderWedstrijdSessie.objects.count())
        sessie = KalenderWedstrijdSessie.objects.all()[0]
        sessie2 = KalenderWedstrijdSessie.objects.all()[1]

        wkl = wedstrijd.wedstrijdklassen.get(
            beschrijving='Recurve master vrouwen')
        sessie2.wedstrijdklassen.add(wkl)

        wkl = wedstrijd.wedstrijdklassen.get(
            beschrijving='Recurve master mannen')
        wkl_pks = list(wedstrijd.wedstrijdklassen.values_list('pk', flat=True))
        sessie.wedstrijdklassen.add(wkl)
        sessie2.wedstrijdklassen.add(wkl)

        # zet een paar boogtypen uit
        url = self.url_kalender_wijzig_wedstrijd % wedstrijd.pk
        post_data = dict()
        post_data['boog_R'] = 'on'
        post_data['boog_C'] = 'on'
        for pk in wkl_pks:
            post_data['klasse_%s' % pk] = 'on'
        # for
        with self.assert_max_queries(20):
            resp = self.client.post(url, post_data)
        self.assert_is_redirect_not_plein(resp)

        self.assertEqual(wedstrijd.boogtypen.count(), 2)  # alleen R en C
        self.assertEqual(wedstrijd.wedstrijdklassen.count(),
                         16)  # alleen R en C klassen

        # kies een wedstrijdklasse in een sessie
        sessie.wedstrijdklassen.add(wkl)

        # probeer nu de recurve boog uit te zetten
        del post_data['boog_R']
        with self.assert_max_queries(20):
            resp = self.client.post(url, post_data)
        self.assert_is_redirect_not_plein(resp)

        self.assertEqual(wedstrijd.boogtypen.count(), 2)  # alleen R en C

        # probeer nu alle wedstrijdklassen uit te zetten
        with self.assert_max_queries(20):
            resp = self.client.post(url, {})
        self.assert_is_redirect_not_plein(resp)

        self.assertEqual(wedstrijd.boogtypen.count(), 1)  # alleen R
        self.assertEqual(wedstrijd.wedstrijdklassen.count(),
                         2)  # alleen de in de sessies gebruikte klassen

        # doe een GET, voor de coverage
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
예제 #17
0
class TestKalenderSessies(E2EHelpers, TestCase):
    """ tests voor de Kalender applicatie """

    url_kalender_vereniging = '/kalender/vereniging/'
    url_kalender_sessies = '/kalender/%s/sessies/'  # wedstrijd_pk
    url_kalender_wijzig_sessie = '/kalender/%s/sessies/%s/wijzig/'  # wedstrijd_pk, sessie_pk

    def setUp(self):
        """ initialisatie van de test case """

        self.account_admin = self.e2e_create_account_admin()
        self.account_admin.is_BB = True
        self.account_admin.save()

        sporter = Sporter(lid_nr=100000,
                          voornaam='Ad',
                          achternaam='de Admin',
                          geboorte_datum='1966-06-06',
                          sinds_datum='2020-02-02',
                          account=self.account_admin)
        sporter.save()

        # maak een test vereniging
        self.nhbver1 = NhbVereniging(ver_nr=1000,
                                     naam="Grote Club",
                                     regio=NhbRegio.objects.get(regio_nr=112))
        self.nhbver1.save()

        self.functie_hwl = maak_functie('HWL Ver 1000', 'HWL')
        self.functie_hwl.nhb_ver = self.nhbver1
        self.functie_hwl.accounts.add(self.account_admin)
        self.functie_hwl.save()

        self.nhbver2 = NhbVereniging(ver_nr=1001,
                                     naam="Kleine Club",
                                     regio=NhbRegio.objects.get(regio_nr=112))
        self.nhbver2.save()

    @staticmethod
    def _maak_externe_locatie(ver):
        # voeg een locatie toe
        locatie = WedstrijdLocatie(
            baan_type='E',  # externe locatie
            naam='Test locatie')
        locatie.save()
        locatie.verenigingen.add(ver)

        return locatie

    def test_sessies(self):
        self.e2e_login_and_pass_otp(self.account_admin)

        # wissel naar HWL en maak een wedstrijd aan
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self._maak_externe_locatie(self.nhbver1)
        resp = self.client.post(self.url_kalender_vereniging,
                                {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        self.assertEqual(1, KalenderWedstrijd.objects.count())
        wedstrijd = KalenderWedstrijd.objects.all()[0]
        url = self.url_kalender_sessies % wedstrijd.pk

        # haal de sessie op
        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, ('kalender/wijzig-sessies.dtl', 'plein/site_layout.dtl'))

        # post zonder actie
        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert_is_redirect(resp, url)

        # nieuwe sessie
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'nieuwe_sessie': 'graag'})
        self.assert_is_redirect(resp, url)

        # schakel naar BB rol
        self.e2e_wisselnaarrol_bb()
        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, ('kalender/wijzig-sessies.dtl', 'plein/site_layout.dtl'))

        # annuleer de wedstrijd
        wedstrijd.status = 'X'
        wedstrijd.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)

        self.e2e_assert_other_http_commands_not_supported(url, post=False)

    def test_sessies_bad(self):
        # wordt HWL
        self.e2e_login_and_pass_otp(self.account_admin)
        self.e2e_wissel_naar_functie(self.functie_hwl)

        # niet bestaande sessie
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_kalender_sessies % 99999)
        self.assert404(resp)

        with self.assert_max_queries(20):
            resp = self.client.post(self.url_kalender_sessies % 99999)
        self.assert404(resp)

        # maak een wedstrijd aan en wissel die naar een andere vereniging
        self._maak_externe_locatie(self.nhbver1)
        resp = self.client.post(self.url_kalender_vereniging,
                                {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        self.assertEqual(1, KalenderWedstrijd.objects.count())
        wedstrijd = KalenderWedstrijd.objects.all()[0]
        wedstrijd.organiserende_vereniging = self.nhbver2
        wedstrijd.save()

        # verkeerde vereniging
        url = self.url_kalender_sessies % wedstrijd.pk
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert403(resp)

        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert403(resp)

    def test_wijzig_sessie(self):
        # wordt HWL
        self.e2e_login_and_pass_otp(self.account_admin)
        self.e2e_wissel_naar_functie(self.functie_hwl)

        # maak een wedstrijd en sessie aan
        self._maak_externe_locatie(self.nhbver1)
        resp = self.client.post(self.url_kalender_vereniging,
                                {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        self.assertEqual(1, KalenderWedstrijd.objects.count())
        wedstrijd = KalenderWedstrijd.objects.all()[0]
        wedstrijd.datum_einde = wedstrijd.datum_begin + datetime.timedelta(
            days=2)
        wedstrijd.save()
        url = self.url_kalender_sessies % wedstrijd.pk
        resp = self.client.post(url, {'nieuwe_sessie': 'graag'})
        self.assert_is_redirect(resp, url)
        self.assertEqual(1, KalenderWedstrijdSessie.objects.count())
        sessie = KalenderWedstrijdSessie.objects.all()[0]

        # haal de wijzig pagina op
        url = self.url_kalender_wijzig_sessie % (wedstrijd.pk, sessie.pk)
        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, ('kalender/wijzig-sessie.dtl', 'plein/site_layout.dtl'))

        # lege post
        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert_is_redirect(resp, self.url_kalender_sessies % wedstrijd.pk)

        # zet de datum op de 3 mogelijkheden
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'datum': 'datum_2'})
        self.assert_is_redirect(resp, self.url_kalender_sessies % wedstrijd.pk)
        sessie = KalenderWedstrijdSessie.objects.get(pk=sessie.pk)
        self.assertEqual(sessie.datum, wedstrijd.datum_einde)

        with self.assert_max_queries(20):
            resp = self.client.post(url, {'datum': 'datum_0'})
        self.assert_is_redirect(resp, self.url_kalender_sessies % wedstrijd.pk)
        sessie = KalenderWedstrijdSessie.objects.get(pk=sessie.pk)
        self.assertEqual(sessie.datum, wedstrijd.datum_begin)

        wkl = wedstrijd.wedstrijdklassen.all()[0]

        # wijzig een aantal parameters en koppel een wedstrijdklasse
        with self.assert_max_queries(20):
            resp = self.client.post(
                url, {
                    'datum': 'datum_0',
                    'tijd_begin': '12:34',
                    'duur': 'duur_60',
                    'max_sporters': '42',
                    'klasse_%s' % wkl.pk: 'jo!'
                })
        self.assert_is_redirect(resp, self.url_kalender_sessies % wedstrijd.pk)
        sessie = KalenderWedstrijdSessie.objects.get(pk=sessie.pk)
        self.assertEqual(sessie.datum, wedstrijd.datum_begin)
        self.assertEqual(sessie.tijd_begin.hour, 12)
        self.assertEqual(sessie.tijd_begin.minute, 34)
        self.assertEqual(str(sessie.tijd_einde), '13:34:00')
        self.assertEqual(sessie.max_sporters, 42)

        # test de tijdstippen voor een nachtverschieting
        with self.assert_max_queries(20):
            resp = self.client.post(url, {
                'tijd_begin': '23:30',
                'duur': 'duur_90'
            })
        self.assert_is_redirect(resp, self.url_kalender_sessies % wedstrijd.pk)
        sessie = KalenderWedstrijdSessie.objects.get(pk=sessie.pk)
        self.assertEqual(str(sessie.tijd_begin), '23:30:00')
        self.assertEqual(str(sessie.tijd_einde), '01:00:00')

        with self.assert_max_queries(20):
            resp = self.client.post(url, {
                'tijd_begin': '22:00',
                'duur': 'duur_120'
            })
        self.assert_is_redirect(resp, self.url_kalender_sessies % wedstrijd.pk)
        sessie = KalenderWedstrijdSessie.objects.get(pk=sessie.pk)
        self.assertEqual(str(sessie.tijd_begin), '22:00:00')
        self.assertEqual(str(sessie.tijd_einde), '00:00:00')

        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, ('kalender/wijzig-sessie.dtl', 'plein/site_layout.dtl'))

        # annuleer de wedstrijd
        old_status = wedstrijd.status
        wedstrijd.status = WEDSTRIJD_STATUS_GEANNULEERD
        wedstrijd.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)
        self.assert_template_used(
            resp, ('kalender/wijzig-sessie.dtl', 'plein/site_layout.dtl'))

        # verwijder de sessie
        self.assertEqual(1, KalenderWedstrijdSessie.objects.count())
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'verwijder_sessie': 'graag'})
        self.assert404(resp)
        self.assertEqual(1, KalenderWedstrijdSessie.objects.count())

        # herstel de wedstrijd
        wedstrijd.status = old_status
        wedstrijd.save()

        # verwijder de sessie
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'verwijder_sessie': 'graag'})
        self.assert_is_redirect(resp, self.url_kalender_sessies % wedstrijd.pk)
        self.assertEqual(0, KalenderWedstrijdSessie.objects.count())

        self.e2e_assert_other_http_commands_not_supported(url, post=False)

    def test_wijzig_sessie_bad(self):
        # wordt HWL
        self.e2e_login_and_pass_otp(self.account_admin)
        self.e2e_wissel_naar_functie(self.functie_hwl)

        # maak een wedstrijd en sessie aan
        self._maak_externe_locatie(self.nhbver1)
        resp = self.client.post(self.url_kalender_vereniging,
                                {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        self.assertEqual(1, KalenderWedstrijd.objects.count())
        wedstrijd = KalenderWedstrijd.objects.all()[0]
        url = self.url_kalender_sessies % wedstrijd.pk
        resp = self.client.post(url, {'nieuwe_sessie': 'graag'})
        self.assert_is_redirect(resp, url)
        self.assertEqual(1, KalenderWedstrijdSessie.objects.count())
        sessie = KalenderWedstrijdSessie.objects.all()[0]

        # niet bestaande wedstrijd
        url = self.url_kalender_wijzig_sessie % (999999, 0)
        resp = self.client.get(url)
        self.assert404(resp)
        resp = self.client.post(url)
        self.assert404(resp)

        # niet bestaande sessie
        url = self.url_kalender_wijzig_sessie % (wedstrijd.pk, 999999)
        resp = self.client.get(url)
        self.assert404(resp)
        resp = self.client.post(url)
        self.assert404(resp)

        url = self.url_kalender_wijzig_sessie % (wedstrijd.pk, sessie.pk)

        # slechte datum en tijd
        oude_datum = sessie.datum
        self.client.post(url, {'datum': 'datum_999'})
        sessie = KalenderWedstrijdSessie.objects.get(pk=sessie.pk)
        self.assertEqual(oude_datum, sessie.datum)

        # slechte tijd
        resp = self.client.post(url, {'tijd_begin': 'hoi'})
        self.assert404(resp)
        resp = self.client.post(url, {'tijd_begin': '24:60'})
        self.assert404(resp)

        # goede tijd, slechte duur
        resp = self.client.post(url, {'tijd_begin': '10:30', 'duur': 'hoi'})
        self.assert_is_redirect_not_plein(resp)
        resp = self.client.post(url, {
            'tijd_begin': '10:30',
            'duur': 'duur_99999'
        })
        self.assert_is_redirect_not_plein(resp)

        # slecht aantal sporters
        resp = self.client.post(url, {'max_sporters': 'hoi'})
        self.assert404(resp)
        resp = self.client.post(url, {'max_sporters': '-1'})
        self.assert404(resp)
        resp = self.client.post(url, {'max_sporters': 0.141})
        self.assert404(resp)
        resp = self.client.post(url, {'max_sporters': '0'})
        self.assert404(resp)
        resp = self.client.post(url, {'max_sporters': '1000'})
        self.assert404(resp)

        # niet van deze vereniging
        wedstrijd.organiserende_vereniging = self.nhbver2
        wedstrijd.save()
        url = self.url_kalender_wijzig_sessie % (wedstrijd.pk, sessie.pk)
        resp = self.client.get(url)
        self.assert403(resp)
        resp = self.client.post(url)
        self.assert403(resp)

        # maak nog een wedstrijd en sessie aan
        self.client.post(self.url_kalender_vereniging,
                         {'nieuwe_wedstrijd': 'ja'})
        self.assertEqual(2, KalenderWedstrijd.objects.count())
        wedstrijd2 = KalenderWedstrijd.objects.exclude(pk=wedstrijd.pk)[0]
        url = self.url_kalender_sessies % wedstrijd2.pk
        resp = self.client.post(url, {'nieuwe_sessie': 'graag'})
        self.assert_is_redirect(resp, url)
        self.assertEqual(2, KalenderWedstrijdSessie.objects.count())
        sessie2 = KalenderWedstrijdSessie.objects.exclude(pk=sessie.pk)[0]

        # mix de twee: sessie hoort niet bij wedstrijd
        url = self.url_kalender_wijzig_sessie % (wedstrijd2.pk, sessie.pk)
        resp = self.client.get(url)
        self.assert404(resp)
        resp = self.client.post(url)
        self.assert404(resp)
예제 #18
0
    def setUp(self):
        """ eenmalige setup voor alle tests
            wordt als eerste aangeroepen
        """
        self._next_lid_nr = 100001

        self.rayon_2 = NhbRayon.objects.get(rayon_nr=2)
        self.regio_101 = NhbRegio.objects.get(regio_nr=101)

        # 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._ver = ver
        self.nhb_ver1 = ver

        # 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 = self._prep_beheerder_lid('BKO')
        self.account_rko = self._prep_beheerder_lid('RKO')
        self.account_rcl = self._prep_beheerder_lid('RCL')
        self.account_hwl = self._prep_beheerder_lid('HWL')
        self.account_schutter = self._prep_beheerder_lid('Schutter')

        # creëer een competitie met deelcompetities
        competities_aanmaken(jaar=2019)

        self.functie_bko = DeelCompetitie.objects.filter(
            laag=LAAG_BK)[0].functie
        self.functie_rko = DeelCompetitie.objects.filter(
            laag=LAAG_RK, nhb_rayon=self.rayon_2)[0].functie
        self.functie_rcl = DeelCompetitie.objects.filter(
            laag=LAAG_REGIO, nhb_regio=self.regio_101)[0].functie

        self.functie_bko.accounts.add(self.account_bko)
        self.functie_rko.accounts.add(self.account_rko)
        self.functie_rcl.accounts.add(self.account_rcl)
        self.functie_hwl.accounts.add(self.account_hwl)

        # 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()
        # stop de vereniging in clusters
        cluster = NhbCluster.objects.filter(regio=ver.regio,
                                            gebruik='18').all()[0]
        ver.clusters.add(cluster)
        cluster = NhbCluster.objects.filter(regio=ver.regio,
                                            gebruik='25').all()[2]
        ver.clusters.add(cluster)
        self.nhb_ver2 = ver
예제 #19
0
    def test_check_beheerders(self):
        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('check_beheerders', stderr=f1, stdout=f2)
        self.assertTrue(f1.getvalue() == '')  # geen foutmeldingen

        # koppel een account aan een functie, maar geen sporter
        self.functie_hwl.accounts.add(self.account_normaal)

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('check_beheerders', stderr=f1, stdout=f2)
        self.assertTrue(f1.getvalue() == '')
        self.assertTrue("LET OP: geen koppeling met NHB lid" in f2.getvalue())

        # maak account ook nhblid
        sporter = Sporter(lid_nr=100042,
                          voornaam='Kees',
                          achternaam='Pijlpunt',
                          email='*****@*****.**',
                          geboorte_datum='1900-10-20',
                          geslacht='M',
                          para_classificatie='',
                          is_actief_lid=False,
                          sinds_datum='2020-02-20',
                          bij_vereniging=None,
                          lid_tot_einde_jaar=0,
                          account=self.account_normaal)
        sporter.save()

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('check_beheerders', stderr=f1, stdout=f2)
        self.assertTrue(f1.getvalue() == '')
        self.assertTrue(
            "LET OP: geen lid meer bij een vereniging" in f2.getvalue())

        # maak lid bij een andere vereniging
        ver = NhbVereniging(ver_nr=1042,
                            naam="Andere club",
                            plaats="Overkantje",
                            regio=self.nhbver1.regio)
        ver.save()
        sporter.is_actief_lid = True
        sporter.bij_vereniging = ver
        sporter.save()

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('check_beheerders', stderr=f1, stdout=f2)
        self.assertTrue(f1.getvalue() == '')
        self.assertTrue(
            "LET OP: geen lid bij deze vereniging" in f2.getvalue())

        # nu alles goed zetten
        sporter.bij_vereniging = self.nhbver1
        sporter.save()

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('check_beheerders', stderr=f1, stdout=f2)
        # print('f1:', f1.getvalue())
        # print('f2:', f2.getvalue())
        self.assertTrue(f1.getvalue() == '')
        self.assertFalse("LET OP:" in f2.getvalue())
예제 #20
0
파일: tests.py 프로젝트: RamonvdW/nhb-apps
class TestKalender(E2EHelpers, TestCase):
    """ tests voor de Kalender applicatie """

    url_kalender = '/kalender/'
    url_kalender_manager = '/kalender/manager/'
    url_kalender_vereniging = '/kalender/vereniging/'
    url_kalender_wijzig_wedstrijd = '/kalender/%s/wijzig/'  # wedstrijd_pk

    def setUp(self):
        """ initialisatie van de test case """

        self.account_admin = self.e2e_create_account_admin()
        self.account_admin.is_BB = True
        self.account_admin.save()

        sporter = Sporter(lid_nr=100000,
                          voornaam='Ad',
                          achternaam='de Admin',
                          geboorte_datum='1966-06-06',
                          sinds_datum='2020-02-02',
                          account=self.account_admin)
        sporter.save()

        # maak een test vereniging
        self.nhbver1 = NhbVereniging(ver_nr=1000,
                                     naam="Grote Club",
                                     regio=NhbRegio.objects.get(regio_nr=112))
        self.nhbver1.save()

        self.functie_hwl = maak_functie('HWL Ver 1000', 'HWL')
        self.functie_hwl.nhb_ver = self.nhbver1
        self.functie_hwl.accounts.add(self.account_admin)
        self.functie_hwl.save()

        self.nhbver2 = NhbVereniging(ver_nr=1001,
                                     naam="Kleine Club",
                                     regio=NhbRegio.objects.get(regio_nr=112))
        self.nhbver2.save()

    @staticmethod
    def _maak_externe_locatie(ver):
        # voeg een locatie toe
        locatie = WedstrijdLocatie(
            baan_type='E',  # externe locatie
            naam='Test locatie')
        locatie.save()
        locatie.verenigingen.add(ver)

        return locatie

    def test_anon(self):
        self.client.logout()

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_kalender)
        self.assert_is_redirect_not_plein(resp)

        resp = self.client.get(self.url_kalender_manager)
        self.assert403(resp)

        resp = self.client.get(self.url_kalender_vereniging)
        self.assert403(resp)

        resp = self.client.get(self.url_kalender_wijzig_wedstrijd % 0)
        self.assert403(resp)

        self.e2e_assert_other_http_commands_not_supported(self.url_kalender)

    def test_gebruiker(self):
        self.client.logout()

        # haal de url op van de eerste pagina
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_kalender)
        url = resp.url

        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, ('kalender/overzicht-maand.dtl', 'plein/site_layout.dtl'))

        self.e2e_assert_other_http_commands_not_supported(url)

    def test_bb(self):
        self.e2e_login_and_pass_otp(self.account_admin)
        self.e2e_wisselnaarrol_bb()

        resp = self.client.get(self.url_kalender)
        self.assert_is_redirect(resp, self.url_kalender_manager)

        resp = self.client.get(self.url_kalender_vereniging)
        self.assert403(resp)

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_kalender_manager)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp, ('kalender/overzicht-manager.dtl', 'plein/site_layout.dtl'))

        # wissel naar HWL en maak een wedstrijd aan
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self._maak_externe_locatie(self.nhbver1)
        resp = self.client.post(self.url_kalender_vereniging,
                                {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        # wissel terug naar BB
        self.e2e_wisselnaarrol_bb()
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_kalender_manager)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp, ('kalender/overzicht-manager.dtl', 'plein/site_layout.dtl'))

        self.e2e_assert_other_http_commands_not_supported(
            self.url_kalender_manager, post=False)

    def test_hwl(self):
        self.e2e_login_and_pass_otp(self.account_admin)
        self.e2e_wissel_naar_functie(self.functie_hwl)

        resp = self.client.get(self.url_kalender)
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        resp = self.client.get(self.url_kalender_manager)
        self.assert403(resp)

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_kalender_vereniging)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp,
            ('kalender/overzicht-vereniging.dtl', 'plein/site_layout.dtl'))

        self.e2e_assert_other_http_commands_not_supported(
            self.url_kalender_vereniging, post=False)

        # gebruik de post interface zonder verzoek
        self.assertEqual(0, KalenderWedstrijd.objects.count())
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_kalender_vereniging)
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        self.assertEqual(0, KalenderWedstrijd.objects.count())

        # wedstrijd aanmaken zonder dat de vereniging een externe locatie heeft
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_kalender_vereniging,
                                    {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)
        self.assertEqual(0, KalenderWedstrijd.objects.count())

        # maak een wedstrijd aan
        self._maak_externe_locatie(self.nhbver1)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_kalender_vereniging,
                                    {'nieuwe_wedstrijd': 'ja'})
        self.assert_is_redirect(resp, self.url_kalender_vereniging)

        self.assertEqual(1, KalenderWedstrijd.objects.count())

        # haal de wedstrijd op
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_kalender_vereniging)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp,
            ('kalender/overzicht-vereniging.dtl', 'plein/site_layout.dtl'))
예제 #21
0
    def setUp(self):
        """ eenmalige setup voor alle tests
            wordt als eerste aangeroepen
        """

        self.regio_101 = NhbRegio.objects.get(regio_nr=101)

        # 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()

        obj = HistCompetitie()
        obj.seizoen = '2018/2019'
        obj.comp_type = '25'
        obj.klasse = 'Compound'
        obj.is_team = False
        obj.save()
        self.klasse_pk_leeg = obj.pk

        obj.pk = None
        obj.klasse = 'Recurve'
        obj.save()
        self.klasse_pk = obj.pk

        # 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=2019 - 15, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=2015, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.account = self.e2e_create_account(sporter.lid_nr,
                                                  sporter.email,
                                                  sporter.voornaam)
        sporter.save()

        rec = HistCompetitieIndividueel()
        rec.histcompetitie = obj
        rec.rank = 1
        rec.schutter_nr = sporter.lid_nr
        rec.schutter_naam = "wordt niet gebruikt"
        rec.vereniging_nr = ver.ver_nr
        rec.vereniging_naam = "wordt niet gebruikt"
        rec.score1 = 10
        rec.score2 = 20
        rec.score3 = 30
        rec.score4 = 40
        rec.score5 = 50
        rec.score6 = 60
        rec.score7 = 70
        rec.laagste_score_nr = 1
        rec.totaal = 80
        rec.gemiddelde = 5.321
        rec.save()
        self.indiv_rec_pk = rec.pk

        # maak nog een lid aan, met te weinig scores
        sporter = Sporter()
        sporter.lid_nr = 100003
        sporter.geslacht = "V"
        sporter.voornaam = "Ramona"
        sporter.achternaam = "het Tester"
        sporter.email = "*****@*****.**"
        sporter.geboorte_datum = datetime.date(year=1969, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=2010, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.account = self.e2e_create_account(sporter.lid_nr,
                                                  sporter.email,
                                                  sporter.voornaam)
        sporter.save()

        rec = HistCompetitieIndividueel()
        rec.histcompetitie = obj
        rec.rank = 1
        rec.schutter_nr = sporter.lid_nr
        rec.schutter_naam = "wordt niet gebruikt"
        rec.vereniging_nr = ver.ver_nr
        rec.vereniging_naam = "wordt niet gebruikt"
        rec.score1 = 10
        rec.score2 = 20
        rec.score3 = 30
        rec.score4 = 40
        rec.score5 = 0
        rec.score6 = 0
        rec.score7 = 0
        rec.laagste_score_nr = 1
        rec.totaal = 80
        rec.gemiddelde = 6.123
        rec.save()

        # maak nog een inactief lid aan
        sporter = Sporter()
        sporter.lid_nr = 100004
        sporter.geslacht = "V"
        sporter.voornaam = "Weg"
        sporter.achternaam = "Is Weg"
        sporter.email = "*****@*****.**"
        sporter.geboorte_datum = datetime.date(year=1969, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=2010, month=11, day=12)
        sporter.bij_vereniging = None
        sporter.account = None
        sporter.save()

        rec = HistCompetitieIndividueel()
        rec.histcompetitie = obj
        rec.rank = 1
        rec.schutter_nr = sporter.lid_nr
        rec.schutter_naam = "wordt niet gebruikt"
        rec.vereniging_nr = ver.ver_nr
        rec.vereniging_naam = "wordt niet gebruikt"
        rec.score1 = 10
        rec.score2 = 20
        rec.score3 = 30
        rec.score4 = 40
        rec.score5 = 50
        rec.score6 = 60
        rec.score7 = 0
        rec.laagste_score_nr = 1
        rec.totaal = 80
        rec.gemiddelde = 7.123
        rec.save()

        # maak nog een record aan voor een lid dat weg is
        rec = HistCompetitieIndividueel()
        rec.histcompetitie = obj
        rec.rank = 1
        rec.schutter_nr = 999999
        rec.schutter_naam = "wordt niet gebruikt"
        rec.vereniging_nr = ver.ver_nr
        rec.vereniging_naam = "wordt niet gebruikt"
        rec.score1 = 10
        rec.score2 = 20
        rec.score3 = 30
        rec.score4 = 40
        rec.score5 = 50
        rec.score6 = 60
        rec.score7 = 70
        rec.laagste_score_nr = 1
        rec.totaal = 80
        rec.gemiddelde = 6.123
        rec.save()

        # maak een aspirant aan (mag niet meedoen)
        sporter = Sporter()
        sporter.lid_nr = 100005
        sporter.geslacht = "M"
        sporter.voornaam = "Appie"
        sporter.achternaam = "Rant"
        sporter.email = "*****@*****.**"
        sporter.geboorte_datum = datetime.date(year=2019 - 12, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=2015, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.account = self.e2e_create_account(sporter.lid_nr,
                                                  sporter.email,
                                                  sporter.voornaam)
        sporter.save()

        rec = HistCompetitieIndividueel()
        rec.histcompetitie = obj
        rec.rank = 1
        rec.schutter_nr = sporter.lid_nr
        rec.schutter_naam = "wordt niet gebruikt"
        rec.vereniging_nr = ver.ver_nr
        rec.vereniging_naam = "wordt niet gebruikt"
        rec.score1 = 10
        rec.score2 = 20
        rec.score3 = 30
        rec.score4 = 40
        rec.score5 = 50
        rec.score6 = 60
        rec.score7 = 70
        rec.laagste_score_nr = 1
        rec.totaal = 80
        rec.gemiddelde = 9.998
        rec.save()
예제 #22
0
    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 HWL functie
        self.functie_hwl = maak_functie("HWL test", "HWL")
        self.functie_hwl.nhb_ver = ver
        self.functie_hwl.save()

        self.functie_wl = maak_functie("WL test", "WL")
        self.functie_wl.nhb_ver = ver
        self.functie_wl.save()

        # maak de SEC functie
        self.functie_sec = maak_functie("SEC test", "SEC")
        self.functie_sec.nhb_ver = ver
        self.functie_sec.save()

        # maak het lid aan dat HWL 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_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_100001 = sporter

        jaar = timezone.now().year

        # 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=jaar-10, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=jaar-3, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.account = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam)  # heeft last_login=None
        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=jaar-10, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=jaar-3, month=10, day=10)
        sporter.bij_vereniging = ver
        sporter.save()
        self.sporter_100012 = sporter

        # maak een jeugd lid aan
        sporter = Sporter()
        sporter.lid_nr = 100004
        sporter.geslacht = "M"
        sporter.voornaam = "Cadet"
        sporter.achternaam = "de Jeugd"
        sporter.email = ""
        sporter.geboorte_datum = datetime.date(year=jaar-13, month=3, day=4)    # 13=asp, maar 14 in 2e jaar competitie!
        sporter.sinds_datum = datetime.date(year=jaar-3, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.save()
        self.sporter_100004 = sporter

        # maak een senior lid aan, om inactief te maken
        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=jaar-4, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.save()
        self.sporter_100003 = 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

        # maak een senior lid aan, om inactief te maken
        sporter = Sporter()
        sporter.lid_nr = 102000
        sporter.geslacht = "M"
        sporter.voornaam = "Andre"
        sporter.achternaam = "Club"
        sporter.email = "*****@*****.**"
        sporter.geboorte_datum = datetime.date(year=1972, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=jaar-4, month=11, day=12)
        sporter.bij_vereniging = ver2
        sporter.save()
        self.sporter_102000 = sporter

        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)

        # maak de competitie aan die nodig is voor deze tests
        self._create_histcomp()
        self._create_competitie()

        # fake een deelnemerslijst voor de RK
        deelcomp_rk = DeelCompetitie.objects.get(competitie=self.comp_25,
                                                 laag=LAAG_RK,
                                                 nhb_rayon=self.regio_111.rayon)
        deelcomp_rk.heeft_deelnemerslijst = True
        deelcomp_rk.save()
예제 #23
0
    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)

        # 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._ver = ver

        # 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 = self._prep_beheerder_lid('BKO')
        self.account_rko = self._prep_beheerder_lid('RKO')
        self.account_rcl = self._prep_beheerder_lid('RCL')
        self.account_schutter = self._prep_beheerder_lid('Schutter')

        # creëer een competitie met deelcompetities
        competities_aanmaken(jaar=2019)
        # nu in fase A

        self.comp_18 = Competitie.objects.get(afstand='18')
        self.comp_25 = Competitie.objects.get(afstand='25')

        for deelcomp in DeelCompetitie.objects.filter(laag=LAAG_BK).all():
            deelcomp.functie.accounts.add(self.account_bko)
        # for

        for deelcomp in DeelCompetitie.objects.filter(laag=LAAG_RK, nhb_rayon=self.rayon_2).all():
            deelcomp.functie.accounts.add(self.account_rko)
        # for

        for deelcomp in DeelCompetitie.objects.filter(laag=LAAG_REGIO, nhb_regio=self.regio_101).all():
            deelcomp.functie.accounts.add(self.account_rcl)
        # for

        # 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()
        self._ver2 = ver

        # maak HWL functie aan voor deze vereniging
        hwl = maak_functie("HWL Vereniging %s" % ver.ver_nr, "HWL")
        hwl.nhb_ver = ver
        hwl.save()
예제 #24
0
    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 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

        # 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 een senior lid aan, om inactief te maken
        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
        sporter.save()
        self.sporter_100003 = 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

        # maak de competitie aan die nodig is voor deze tests
        self._create_histcomp()
        self._create_competitie()
예제 #25
0
    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()
예제 #26
0
    def setUp(self):
        """ initialisatie van de test case """

        # deze test is afhankelijk van de standaard globale functies
        # zoals opgezet door de migratie m0002_functies-2019:
        #   comp_type: 18/25
        #       rol: BKO, RKO (4x), RCL (16x)

        self.account_normaal = self.e2e_create_account('normaal',
                                                       '*****@*****.**',
                                                       'Normaal')
        self.account_beh1 = self.e2e_create_account('testbeheerder1',
                                                    '*****@*****.**',
                                                    'Beheerder1',
                                                    accepteer_vhpg=True)
        self.account_beh2 = self.e2e_create_account('testbeheerder2',
                                                    '*****@*****.**',
                                                    'Beheerder2',
                                                    accepteer_vhpg=True)
        self.account_ander = self.e2e_create_account('anderlid',
                                                     '*****@*****.**',
                                                     'Ander')

        self.functie_bko = Functie.objects.get(comp_type='18', rol='BKO')
        self.functie_rko3 = Functie.objects.get(
            comp_type='18',
            rol='RKO',
            nhb_rayon=NhbRayon.objects.get(rayon_nr=3))
        self.functie_rcl111 = Functie.objects.get(
            comp_type='18',
            rol='RCL',
            nhb_regio=NhbRegio.objects.get(regio_nr=111))
        self.functie_rcl101 = Functie.objects.get(
            comp_type='18',
            rol='RCL',
            nhb_regio=NhbRegio.objects.get(regio_nr=101))

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club"
        ver.ver_nr = "1000"
        ver.regio = NhbRegio.objects.get(regio_nr=111)
        # secretaris kan nog niet ingevuld worden
        ver.save()
        self.nhbver1 = ver

        sporter = Sporter()
        sporter.lid_nr = 100042
        sporter.geslacht = "M"
        sporter.voornaam = "Beh"
        sporter.achternaam = "eerder"
        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_beh2
        sporter.email = sporter.account.email
        sporter.save()
        self.sporter_100042 = sporter

        sporter = Sporter()
        sporter.lid_nr = 100043
        sporter.geslacht = "M"
        sporter.voornaam = "Beh"
        sporter.achternaam = "eerder"
        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_100043 = sporter

        self.functie_sec = maak_functie("SEC test", "SEC")
        self.functie_sec.nhb_ver = ver
        self.functie_sec.save()

        self.functie_hwl = maak_functie("HWL test", "HWL")
        self.functie_hwl.nhb_ver = ver
        self.functie_hwl.save()

        self.functie_wl = maak_functie("WL test", "WL")
        self.functie_wl.nhb_ver = ver
        self.functie_wl.save()

        self.regio_112 = NhbRegio.objects.get(regio_nr=112)

        # maak nog een test vereniging
        ver2 = NhbVereniging()
        ver2.naam = "Extra Club"
        ver2.ver_nr = "1900"
        ver2.regio = self.regio_112
        # secretaris kan nog niet ingevuld worden
        ver2.save()
        self.nhbver2 = ver2

        self.functie_sec2 = maak_functie("SEC test 2", "SEC")
        self.functie_sec2.nhb_ver = ver2
        self.functie_sec2.save()

        self.functie_hwl2 = maak_functie("HWL test 2", "HWL")
        self.functie_hwl2.nhb_ver = ver2
        self.functie_hwl2.save()

        sporter = Sporter()
        sporter.lid_nr = 100024
        sporter.geslacht = "V"
        sporter.voornaam = "Ander"
        sporter.achternaam = "Lid"
        sporter.geboorte_datum = datetime.date(year=1972, month=3, day=5)
        sporter.sinds_datum = datetime.date(year=2010, month=11, day=11)
        sporter.bij_vereniging = ver2
        sporter.account = self.account_ander
        sporter.email = sporter.account.email
        sporter.save()
        self.sporter_100024 = sporter
예제 #27
0
    def setUp(self):
        """ initialisatie van de test case """

        self.account_normaal = self.e2e_create_account('normaal', '*****@*****.**', 'Normaal')

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club"
        ver.ver_nr = "1000"
        ver.regio = NhbRegio.objects.get(pk=111)
        ver.save()
        self.nhbver = ver

        # 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.sporter1 = sporter

        functie_hwl = maak_functie('HWL ver 1000', 'HWL')
        functie_hwl.accounts.add(self.account_normaal)
        functie_hwl.nhb_ver = ver
        functie_hwl.bevestigde_email = '*****@*****.**'
        functie_hwl.save()
        self.functie_hwl = functie_hwl

        functie_sec = maak_functie('SEC ver 1000', 'SEC')
        functie_sec.accounts.add(self.account_normaal)
        functie_sec.bevestigde_email = '*****@*****.**'
        functie_sec.nhb_ver = ver
        functie_sec.save()
        self.functie_sec = functie_sec

        Secretaris(vereniging=ver, sporter=sporter).save()

        # geef dit account een record
        rec = IndivRecord()
        rec.discipline = '18'
        rec.volg_nr = 1
        rec.soort_record = "60p"
        rec.geslacht = sporter.geslacht
        rec.leeftijdscategorie = 'J'
        rec.materiaalklasse = "R"
        rec.sporter = sporter
        rec.naam = "Ramon de Tester"
        rec.datum = parse_date('2011-11-11')
        rec.plaats = "Top stad"
        rec.score = 293
        rec.max_score = 300
        rec.save()

        rec = IndivRecord()
        rec.discipline = '18'
        rec.volg_nr = 2
        rec.soort_record = "60p"
        rec.geslacht = sporter.geslacht
        rec.leeftijdscategorie = 'J'
        rec.materiaalklasse = "C"
        rec.sporter = sporter
        rec.naam = "Ramon de Tester"
        rec.datum = parse_date('2012-12-12')
        rec.plaats = "Top stad"
        rec.land = 'Verwegistan'
        rec.score = 290
        rec.max_score = 300
        rec.save()

        rec = IndivRecord()
        rec.discipline = '18'
        rec.volg_nr = 3
        rec.soort_record = "60p"
        rec.geslacht = sporter.geslacht
        rec.leeftijdscategorie = 'C'
        rec.materiaalklasse = "C"
        rec.sporter = sporter
        rec.naam = "Ramon de Tester"
        rec.datum = parse_date('1991-12-12')
        rec.plaats = ""     # typisch voor oudere records
        rec.score = 290
        rec.max_score = 300
        rec.save()

        # geef dit account een goede en een slechte HistComp record
        histcomp = HistCompetitie()
        histcomp.seizoen = "2009/2010"
        histcomp.comp_type = "18"
        histcomp.klasse = "don't care"
        histcomp.save()

        indiv = HistCompetitieIndividueel()
        indiv.histcompetitie = histcomp
        indiv.rank = 1
        indiv.schutter_nr = 100001
        indiv.schutter_naam = "Ramon de Tester"
        indiv.boogtype = "R"
        indiv.vereniging_nr = 1000
        indiv.vereniging_naam = "don't care"
        indiv.score1 = 123
        indiv.score2 = 234
        indiv.score3 = 345
        indiv.score4 = 456
        indiv.score5 = 0
        indiv.score6 = 666
        indiv.score7 = 7
        indiv.laagste_score_nr = 7
        indiv.totaal = 1234
        indiv.gemiddelde = 9.123
        indiv.save()

        indiv.pk = None
        indiv.boogtype = "??"   # bestaat niet, on purpose
        indiv.save()

        self.boog_R = BoogType.objects.get(afkorting='R')
    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()
예제 #29
0
    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()
예제 #30
0
    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 HWL functie
        self.functie_hwl = maak_functie("HWL test", "HWL")
        self.functie_hwl.nhb_ver = ver
        self.functie_hwl.save()

        self.functie_wl = maak_functie("WL test", "WL")
        self.functie_wl.nhb_ver = ver
        self.functie_wl.save()

        # maak het lid aan dat HWL 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_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_100001 = sporter

        jaar = timezone.now().year

        # maak een aspirant 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=jaar - 12, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=jaar - 3, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.account = self.e2e_create_account(
            sporter.lid_nr, sporter.email,
            sporter.voornaam)  # heeft last_login=None
        sporter.save()
        self.sporter_100002 = sporter

        # maak een cadet aan
        sporter = Sporter()
        sporter.lid_nr = 100012
        sporter.geslacht = "V"
        sporter.voornaam = "Andrea"
        sporter.achternaam = "de Jeugdschutter"
        sporter.email = ""
        sporter.geboorte_datum = datetime.date(year=jaar - 15, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=jaar - 3, month=10, day=10)
        sporter.bij_vereniging = ver
        sporter.save()
        self.sporter_100012 = sporter

        # maak een jeugd lid aan
        sporter = Sporter()
        sporter.lid_nr = 100004
        sporter.geslacht = "M"
        sporter.voornaam = "Cadet"
        sporter.achternaam = "de Jeugd"
        sporter.email = ""
        sporter.geboorte_datum = datetime.date(
            year=jaar - 13, month=3,
            day=4)  # 13=asp, maar 14 in 2e jaar competitie!
        sporter.sinds_datum = datetime.date(year=jaar - 3, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.save()
        self.sporter_100004 = sporter

        # maak een senior lid aan, om inactief te maken
        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=jaar - 4, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.save()
        self.sporter_100003 = sporter

        # maak een senior lid aan
        sporter = Sporter()
        sporter.lid_nr = 100013
        sporter.geslacht = "M"
        sporter.voornaam = "Instinctive"
        sporter.achternaam = "de Bower"
        sporter.email = ""
        sporter.geboorte_datum = datetime.date(year=1972, month=3, day=5)
        sporter.sinds_datum = datetime.date(year=jaar - 4, month=7, day=1)
        sporter.bij_vereniging = ver
        sporter.save()
        self.sporter_100013 = 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

        self.account_rcl = self.e2e_create_account('rcl111',
                                                   '*****@*****.**',
                                                   'Ercel',
                                                   accepteer_vhpg=True)
        self.functie_rcl = maak_functie('RCL Regio 111', 'RCL')
        self.functie_rcl.nhb_regio = self.nhbver1.regio
        self.functie_rcl.save()
        self.functie_rcl.accounts.add(self.account_rcl)

        # maak de competitie aan die nodig is voor deze tests
        self._create_histcomp()
        self._create_competitie()