def test_regio_instellingen_bad(self):
        # bad cases
        self.e2e_login_and_pass_otp(self.account_rcl112_18)
        self.e2e_wissel_naar_functie(self.functie_rcl112_18)

        url = self.url_regio_instellingen % (self.comp_18.pk, 112)

        # na fase F zijn de instellingen niet meer in te zien
        zet_competitie_fase(self.comp_18, 'K')  # fase G is niet te zetten

        resp = self.client.get(url)
        self.assert404(resp)  # 404 = Not found
        resp = self.client.post(url)
        self.assert404(resp)  # 404 = Not found

        # niet bestaande regio
        url = self.url_regio_instellingen % (self.comp_18.pk, 100)
        resp = self.client.get(url)
        self.assert404(resp)  # 404 = Not found
        resp = self.client.post(url)
        self.assert404(resp)  # 404 = Not found

        # niet de regio van de RCL
        url = self.url_regio_instellingen % (self.comp_18.pk, 110)
        resp = self.client.get(url)
        self.assert403(resp)
        resp = self.client.post(url)
        self.assert403(resp)

        # logout

        url = self.url_regio_instellingen % (self.comp_18.pk, 112)
        self.client.logout()
        resp = self.client.get(url)
        self.assert403(resp)
Exemple #2
0
    def test_afmelden(self):
        # login als HWL
        self.e2e_login_and_pass_otp(self.account_hwl)
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self.e2e_check_rol('HWL')

        # stel een paar bogen in
        self._zet_sporter_voorkeuren(100004)
        self._zet_sporter_voorkeuren(100003)

        self._zet_ag(100004, 18)
        self._zet_ag(100003, 25)

        zet_competitie_fase(self.comp_18, 'B')

        url = self.url_aanmelden % self.comp_18.pk
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_template_used(resp,
                                  ('compinschrijven/hwl-leden-aanmelden.dtl',
                                   'plein/site_layout.dtl'))

        # nu de POST om een paar leden aan te melden
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)
        with self.assert_max_queries(20):
            resp = self.client.post(
                url,
                {
                    'lid_100004_boogtype_1': 'on',  # 1=R
                    'lid_100003_boogtype_3': 'on',  # 3=BB
                    'wil_in_team': 'ja',
                    'opmerking': 'door de hwl'
                })
        self.assert_is_redirect_not_plein(resp)  # check success
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(),
                         2)  # 2 schutters, 1 competitie

        # schrijf de schutters weer uit
        pk = RegioCompetitieSchutterBoog.objects.all()[0].pk
        url = self.url_ingeschreven % 0
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'pk_%s' % pk: 'on'})
        self.assert_is_redirect(resp, self.url_overzicht)
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(),
                         1)  # 1 schutter

        # schrijf een schutter uit van een andere vereniging
        inschrijving = RegioCompetitieSchutterBoog.objects.all()[0]
        inschrijving.bij_vereniging = self.nhbver2
        inschrijving.save()
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'pk_%s' % inschrijving.pk: 'on'})
        self.assert403(resp)
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(),
                         1)  # 1 schutter
Exemple #3
0
    def test_regios_afsluiten(self):
        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('regios_afsluiten', '18', '101', '10x', stderr=f1, stdout=f2)

        self.assertTrue('[ERROR] Valide regio nummers: 101 tot 116' in f1.getvalue())

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('regios_afsluiten', '18', '116', '115', stderr=f1, stdout=f2)

        self.assertTrue('[ERROR] Valide regio nummers: 101 tot 116, oplopend' in f1.getvalue())

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('regios_afsluiten', '99', '115', '116', stderr=f1, stdout=f2)

        self.assertTrue('[ERROR] Kan competitie met afstand 99 niet vinden' in f1.getvalue())

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('regios_afsluiten', '18', '101', '102', stderr=f1, stdout=f2)

        self.assertTrue('[ERROR] Competitie in fase A is niet ondersteund' in f1.getvalue())

        zet_competitie_fase(self.comp, 'F')

        # geen aangemaakte regios
        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('regios_afsluiten', '18', '101', '102', stderr=f1, stdout=f2)

        self.assertTrue('' == f1.getvalue())
        self.assertTrue('' == f2.getvalue())

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('regios_afsluiten', '18', '111', '111', stderr=f1, stdout=f2)

        self.assertTrue('[INFO] Deelcompetitie Test - Regio 111 wordt afgesloten' in f2.getvalue())

        # nog een keer (terwijl al afgesloten)
        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('regios_afsluiten', '18', '111', '111', stderr=f1, stdout=f2)

        self.assertTrue(f1.getvalue() == '')
Exemple #4
0
    def test_inschrijven_team_udvl(self):
        url = self.url_aanmelden % self.comp_18.pk
        zet_competitie_fase(self.comp_18, 'B')

        # zet de udvl tussen de dvl van de twee schutters in
        # sporter_100003.sinds_datum = datetime.date(year=jaar-4, month=11, day=12)
        # sporter_100004.sinds_datum = datetime.date(year=jaar-3, month=11, day=12)
        self.comp_18.uiterste_datum_lid = datetime.date(
            year=self.sporter_100004.sinds_datum.year, month=1, day=1)
        self.comp_18.save()

        # login als HWL
        self.e2e_login_and_pass_otp(self.account_hwl)
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self.e2e_check_rol('HWL')

        # stel een paar bogen in
        self._zet_sporter_voorkeuren(100004)
        self._zet_sporter_voorkeuren(100003)

        self._zet_ag(100004, 18)
        self._zet_ag(100003, 25)

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_template_used(resp,
                                  ('compinschrijven/hwl-leden-aanmelden.dtl',
                                   'plein/site_layout.dtl'))

        # nu de POST om een paar leden aan te melden
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)
        with self.assert_max_queries(22):
            resp = self.client.post(
                url,
                {
                    'lid_100004_boogtype_1': 'on',  # 1=R
                    'lid_100003_boogtype_3': 'on',  # 3=BB
                    'wil_in_team': 'ja',
                    'opmerking': 'door de hwl'
                })
        self.assert_is_redirect_not_plein(resp)  # check success
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(),
                         2)  # 2 schutters, 1 competitie

        for obj in RegioCompetitieSchutterBoog.objects.all():
            self.assertEqual(obj.inschrijf_notitie, 'door de hwl')
            if obj.sporterboog.sporter.lid_nr == 100003:
                self.assertTrue(obj.inschrijf_voorkeur_team)
            else:
                # 100004 heeft dvl > udvl, dus mag niet mee doen
                self.assertFalse(obj.inschrijf_voorkeur_team)
Exemple #5
0
    def test_doorzetten_bk(self):
        self.e2e_login_and_pass_otp(self.testdata.account_bb)
        self.e2e_wissel_naar_functie(self.functie_bko_18)

        url = self.url_doorzetten_bk % self.comp_18.pk

        # fase M: pagina zonder knop 'doorzetten'
        zet_competitie_fase(self.comp_18, 'M')
        self.comp_18.bepaal_fase()
        self.assertEqual(self.comp_18.fase, 'M')
        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, ('competitie/bko-doorzetten-naar-bk.dtl', 'plein/site_layout.dtl'))

        # alle rayonkampioenschappen afsluiten
        for obj in DeelCompetitie.objects.filter(competitie=self.comp_18,
                                                 is_afgesloten=False,
                                                 laag=LAAG_RK):
            obj.is_afgesloten = True
            obj.save()
        # for

        # fase N: pagina met knop 'doorzetten'
        zet_competitie_fase(self.comp_18, 'N')
        self.comp_18.bepaal_fase()
        self.assertEqual(self.comp_18.fase, 'N')
        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, ('competitie/bko-doorzetten-naar-bk.dtl', 'plein/site_layout.dtl'))

        # nu echt doorzetten
        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert_is_redirect(resp, '/bondscompetities/')       # redirect = Success

        self.assertTrue(str(self.deelcomp_bond_18) != '')

        deelcomp_bk_18 = DeelCompetitie.objects.get(competitie=self.comp_18,
                                                    laag=LAAG_BK)
        objs = KampioenschapSchutterBoog.objects.filter(deelcompetitie=deelcomp_bk_18)
        self.assertEqual(objs.count(), 0)       # worden nog niet gemaakt, dus 0

        team_klasse = CompetitieKlasse.objects.filter(indiv=None)[0]
        deeln_bk = KampioenschapSchutterBoog(deelcompetitie=deelcomp_bk_18,
                                             sporterboog=self.sporterboog,
                                             klasse=team_klasse)
        self.assertTrue(str(deeln_bk) != '')
Exemple #6
0
    def test_fix_bad_ag(self):
        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('fix_bad_ag', '18', stderr=f1, stdout=f2)

        self.assertTrue('[ERROR] Competitie is in de verkeerde fase' in f1.getvalue())

        zet_competitie_fase(self.comp, 'B')

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('fix_bad_ag', '18', stderr=f1, stdout=f2)

        Score(
            sporterboog=self.sporterboog_r,
            type=SCORE_TYPE_INDIV_AG,
            afstand_meter=18,
            waarde=8000).save()

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('fix_bad_ag', '18', stderr=f1, stdout=f2)

        self.assertTrue(f1.getvalue() == '')
        self.assertTrue('Gebruik --commit om wijzigingen door te voeren' in f2.getvalue())

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('fix_bad_ag', '18', '--commit', stderr=f1, stdout=f2)

        # print("f1: %s" % f1.getvalue())
        # print("f2: %s" % f2.getvalue())

        self.assertTrue(f1.getvalue() == '')

        for comp in Competitie.objects.all():
            comp.is_afgesloten = True
            comp.save(update_fields=['is_afgesloten'])

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('fix_bad_ag', '18', stderr=f1, stdout=f2)

        self.assertTrue('[ERROR] Geen actieve competitie gevonden' in f1.getvalue())
Exemple #7
0
    def test_doorzetten_bad(self):
        # moet BKO zijn
        self.e2e_login_and_pass_otp(self.testdata.account_bb)
        self.e2e_wisselnaarrol_bb()

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_doorzetten_rk % 999999)
        self.assert403(resp)

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_doorzetten_bk % 999999)
        self.assert403(resp)

        # niet bestaande comp_pk
        self.e2e_wissel_naar_functie(self.functie_bko_18)

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_doorzetten_rk % 999999)
        self.assert404(resp)     # 404 = Not found/allowed

        with self.assert_max_queries(20):
            resp = self.client.post(self.url_doorzetten_rk % 999999)
        self.assert404(resp)     # 404 = Not found/allowed

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_doorzetten_bk % 999999)
        self.assert404(resp)     # 404 = Not found/allowed

        with self.assert_max_queries(20):
            resp = self.client.post(self.url_doorzetten_bk % 999999)
        self.assert404(resp)     # 404 = Not found/allowed

        # juiste comp_pk maar verkeerde fase
        zet_competitie_fase(self.comp_18, 'C')
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_doorzetten_rk % self.comp_18.pk)
        self.assert404(resp)     # 404 = Not found/allowed

        with self.assert_max_queries(20):
            resp = self.client.post(self.url_doorzetten_rk % self.comp_18.pk)
        self.assert404(resp)     # 404 = Not found/allowed

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_doorzetten_bk % self.comp_18.pk)
        self.assert404(resp)     # 404 = Not found/allowed

        with self.assert_max_queries(20):
            resp = self.client.post(self.url_doorzetten_bk % self.comp_18.pk)
        self.assert404(resp)     # 404 = Not found/allowed
Exemple #8
0
    def test_doorzetten_rk(self):
        self.e2e_login_and_pass_otp(self.testdata.account_bb)
        self.e2e_wissel_naar_functie(self.functie_bko_18)

        url = self.url_doorzetten_rk % self.comp_18.pk

        # fase F: pagina zonder knop 'doorzetten'
        zet_competitie_fase(self.comp_18, 'F')
        self.comp_18.bepaal_fase()
        self.assertEqual(self.comp_18.fase, 'F')
        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, ('competitie/bko-doorzetten-naar-rk.dtl', 'plein/site_layout.dtl'))

        # sluit alle deelcompetitie regio
        for obj in DeelCompetitie.objects.filter(competitie=self.comp_18,
                                                 is_afgesloten=False,
                                                 laag=LAAG_REGIO):
            obj.is_afgesloten = True
            obj.save()
        # for

        # fase G: pagina met knop 'doorzetten'
        zet_competitie_fase(self.comp_18, 'G')
        self.comp_18.bepaal_fase()
        self.assertEqual(self.comp_18.fase, 'G')
        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, ('competitie/bko-doorzetten-naar-rk.dtl', 'plein/site_layout.dtl'))

        # nu echt doorzetten
        self._regioschutters_inschrijven()

        self.assertEqual(3, RegioCompetitieSchutterBoog.objects.count())
        self.assertEqual(0, KampioenschapSchutterBoog.objects.count())

        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert_is_redirect(resp, '/bondscompetities/')       # redirect = Success

        # laat de mutatie verwerken
        management.call_command('regiocomp_mutaties', '1', '--quick', stderr=io.StringIO(), stdout=io.StringIO())

        self.assertEqual(3, KampioenschapSchutterBoog.objects.count())
Exemple #9
0
    def test_aanmelden_team(self):
        url = self.url_aanmelden % self.comp_18.pk
        zet_competitie_fase(self.comp_18, 'B')

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

        # login als HWL
        self.e2e_login_and_pass_otp(self.account_hwl)
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self.e2e_check_rol('HWL')

        # stel een paar bogen in
        self._zet_sporter_voorkeuren(100004)
        self._zet_sporter_voorkeuren(100003)

        self._zet_ag(100004, 18)
        self._zet_ag(100003, 25)

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_template_used(resp,
                                  ('compinschrijven/hwl-leden-aanmelden.dtl',
                                   'plein/site_layout.dtl'))

        # nu de POST om een paar leden aan te melden
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)
        with self.assert_max_queries(20):
            resp = self.client.post(
                url,
                {
                    'lid_100004_boogtype_1': 'on',  # 1=R
                    'lid_100003_boogtype_3': 'on',  # 3=BB
                    'wil_in_team': 'ja',
                    'opmerking': 'door de hwl'
                })
        self.assert_is_redirect_not_plein(resp)  # check success
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(),
                         2)  # 2 schutters, 1 competitie

        for obj in RegioCompetitieSchutterBoog.objects.all():
            self.assertEqual(obj.inschrijf_notitie, 'door de hwl')
            self.assertTrue(obj.inschrijf_voorkeur_team)
Exemple #10
0
    def setUpTestData(cls):
        cls.testdata = testdata.TestData()
        cls.testdata.maak_accounts()
        cls.testdata.maak_clubs_en_sporters()
        cls.testdata.maak_bondscompetities()

        for regio_nr in range(cls.regio_nr_begin, cls.regio_nr_einde + 1):
            ver_nr = cls.testdata.regio_ver_nrs[regio_nr]
            cls.testdata.maak_rk_deelnemers(18, ver_nr, regio_nr)
            cls.ver_nrs.append(ver_nr)
        # for

        cls.testdata.maak_label_regiokampioenen(18, cls.regio_nr_begin,
                                                cls.regio_nr_einde)

        # zet de competitie in fase J
        zet_competitie_fase(cls.testdata.comp18, 'J')
Exemple #11
0
    def test_wijzig_status_hwl(self):
        # HWL
        self.e2e_login_and_pass_otp(self.account_bko_18)
        self.e2e_wissel_naar_functie(self.functie_hwl)

        zet_competitie_fase(self.comp_18, 'J')

        deelnemer = KampioenschapSchutterBoog(
            deelcompetitie=self.deelcomp_rayon1_18,
            sporterboog=self.sporterboog,
            bij_vereniging=self.sporterboog.sporter.bij_vereniging,
            klasse=self.klasse_r)
        deelnemer.save()

        # probeer als HWL van een andere vereniging de status van deze sporter aan te passen
        url = self.url_wijzig_status % deelnemer.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)

        with self.assert_max_queries(20):
            resp = self.client.post(url, {})
        self.assertEqual(resp.status_code, 302)  # 302 = redirect

        sporter = self.sporterboog.sporter
        sporter.bij_vereniging = self.ver_1100
        sporter.save()

        deelnemer = KampioenschapSchutterBoog(
            deelcompetitie=self.deelcomp_rayon1_18,
            sporterboog=self.sporterboog,
            bij_vereniging=self.ver_1100,
            klasse=self.klasse_r)
        deelnemer.save()

        # probeer als HWL van een andere vereniging de status van deze sporter aan te passen
        url = self.url_wijzig_status % deelnemer.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)
Exemple #12
0
    def test_ag_controle(self):
        self.e2e_login_and_pass_otp(self.account_rcl112_18)
        self.e2e_wissel_naar_functie(self.functie_rcl112_18)

        url = self.url_ag_controle % (self.comp_18.pk, 112)

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp, ('compregio/rcl-ag-controle.dtl', 'plein/site_layout.dtl'))

        # maak een inschrijving met handmatig AG
        RegioCompetitieSchutterBoog(
            sporterboog=self.sporterboog,
            bij_vereniging=self.sporterboog.sporter.bij_vereniging,
            deelcompetitie=self.deelcomp_regio112_18,
            klasse=self.klasse_recurve_onbekend,
            inschrijf_voorkeur_team=True,
            ag_voor_team_mag_aangepast_worden=True,
            ag_voor_team=5.0).save()

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)

        # verkeerde fase
        zet_competitie_fase(self.comp_18, 'K')
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert404(resp)

        # bad pk
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_ag_controle % (999999, 999999))
        self.assert404(resp)

        # verkeerde regio
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_ag_controle %
                                   (self.comp_18.pk, 110))
        self.assert403(resp)
Exemple #13
0
    def _create_competitie(self):
        # BB worden
        self.e2e_login_and_pass_otp(self.testdata.account_bb)
        self.e2e_wisselnaarrol_bb()
        self.e2e_check_rol('BB')

        self.assertEqual(CompetitieKlasse.objects.count(), 0)
        competities_aanmaken()
        self.comp_18 = Competitie.objects.get(afstand='18')
        self.comp_25 = Competitie.objects.get(afstand='25')

        self.deelcomp_regio = DeelCompetitie.objects.get(laag=LAAG_REGIO,
                                                         nhb_regio=self.regio_111,
                                                         competitie__afstand=18)

        self.deelcomp_regio.inschrijf_methode = INSCHRIJF_METHODE_1
        self.deelcomp_regio.save()

        zet_competitie_fase(self.comp_18, 'B')
Exemple #14
0
    def test_bad_hwl(self):
        comp = Competitie.objects.get(afstand=18)       # let op: 25 werkt niet

        self.e2e_login_and_pass_otp(self.testdata.account_bb)        # geen account_hwl
        self.e2e_wisselnaarrol_bb()
        self._doe_inschrijven(comp)     # wisselt naar HWL functie

        self.e2e_wissel_naar_functie(self.functie_hwl)

        # landelijk
        zet_competitie_fase(comp, 'C')
        comp.bepaal_fase()
        self.assertEqual(comp.fase, 'C')

        # als HWL is deze pagina niet beschikbaar
        url = self.url_behoefte1 % (999999, 101)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert403(resp)
Exemple #15
0
    def test_administratieve_regio(self):
        # corner case: SEC van vereniging in administratieve regio

        # regio 100 is administratief
        regio100 = NhbRegio.objects.get(regio_nr=100)
        self.assertTrue(regio100.is_administratief)

        # account_sec is SEC bij self.nhbver1
        self.nhbver1.regio = regio100
        self.nhbver1.save()

        # login als SEC
        self.e2e_login_and_pass_otp(self.account_sec)
        self.e2e_wissel_naar_functie(self.functie_sec)
        self.e2e_check_rol('SEC')

        url = self.url_inschrijven % self.comp_18.pk
        zet_competitie_fase(self.comp_18, 'B')

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert403(resp)  # SEC mag dit niet

        # wissel door naar HWL
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self.e2e_check_rol('HWL')

        # pagina is wel op te halen, maar bevat geen leden die zich in kunnen schrijven
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK

        # probeer iemand in te schrijven
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)
        with self.assert_max_queries(20):
            resp = self.client.post(
                url,
                {
                    'lid_100002_boogtype_1': 'on',  # 1=R
                    'lid_100003_boogtype_3': 'on'
                })  # 3=BB
        self.assert404(resp)  # 404 = Not found
Exemple #16
0
    def test_inschrijven(self):
        # login als SEC
        self.e2e_login_and_pass_otp(self.account_sec)
        self.e2e_wissel_naar_functie(self.functie_sec)
        self.e2e_check_rol('SEC')

        url = self.url_inschrijven % self.comp_18.pk
        zet_competitie_fase(self.comp_18, 'B')

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert403(resp)  # SEC mag dit niet

        # wissel door naar HWL
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self.e2e_check_rol('HWL')

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
Exemple #17
0
    def test_wl(self):
        self.e2e_login_and_pass_otp(self.account_hwl)
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self.e2e_check_rol('HWL')

        zet_competitie_fase(self.comp_18, 'B')
        self.deelcomp18_regio111.einde_teams_aanmaken = self.deelcomp18_regio111.competitie.einde_aanmeldingen
        self.deelcomp18_regio111.save()

        self._create_deelnemers()

        self.e2e_wissel_naar_functie(self.functie_wl)
        self.e2e_check_rol('WL')

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_regio_teams %
                                   self.deelcomp18_regio111.pk)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp, ('compregio/hwl-teams.dtl', 'plein/site_layout.dtl'))
Exemple #18
0
    def _competitie_instellingen(self):
        self.e2e_login_and_pass_otp(self.testdata.account_bb)        # geen account_hwl
        self.e2e_wisselnaarrol_bb()

        # klassengrenzen vaststellen
        url_klassengrenzen = '/bondscompetities/%s/klassengrenzen/vaststellen/'
        with self.assert_max_queries(86):
            resp = self.client.post(url_klassengrenzen % self.comp_18.pk)
        self.assert_is_redirect_not_plein(resp)  # check for success
        with self.assert_max_queries(86):
            resp = self.client.post(url_klassengrenzen % self.comp_25.pk)
        self.assert_is_redirect_not_plein(resp)  # check for success
        # nu in fase A2

        # zet de inschrijfmethode van regio 101 op 'methode 1', oftewel met keuze wedstrijden
        self.deelcomp.inschrijf_methode = INSCHRIJF_METHODE_1
        self.deelcomp.save(update_fields=['inschrijf_methode'])

        # zet de datum voor inschrijven op vandaag
        for comp in Competitie.objects.filter(is_afgesloten=False):
            zet_competitie_fase(comp, 'B')
Exemple #19
0
    def test_bad_wijzig_status(self):
        self.client.logout()
        url = self.url_wijzig_status % 999999
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert403(resp)

        # RKO
        self.e2e_login_and_pass_otp(self.account_rko1_18)
        self.e2e_wissel_naar_functie(self.functie_rko1_18)

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert404(resp)  # 404 = Not allowed

        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert404(resp)  # 404 = Not allowed

        # verkeerde RKO
        self.e2e_login_and_pass_otp(self.account_rko2_18)
        self.e2e_wissel_naar_functie(self.functie_rko2_18)

        zet_competitie_fase(self.comp_18, 'J')

        deelnemer = KampioenschapSchutterBoog(
            deelcompetitie=self.deelcomp_rayon1_18,
            sporterboog=self.sporterboog,
            bij_vereniging=self.sporterboog.sporter.bij_vereniging,
            klasse=self.klasse_r)
        deelnemer.save()

        url = self.url_wijzig_status % deelnemer.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)
Exemple #20
0
    def test_inschrijven_methode1(self):
        self.deelcomp_regio.inschrijf_methode = INSCHRIJF_METHODE_1
        self.deelcomp_regio.toegestane_dagdelen = ''  # alles toegestaan
        self.deelcomp_regio.save()

        wedstrijd_pks = self._maak_wedstrijden()

        # login als HWL
        self.e2e_login_and_pass_otp(self.account_hwl)
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self.e2e_check_rol('HWL')

        # stel een paar bogen in
        self._zet_sporter_voorkeuren(100002)
        self._zet_sporter_voorkeuren(100003)

        url = self.url_aanmelden % self.comp_18.pk
        zet_competitie_fase(self.comp_18, 'B')

        with self.assert_max_queries(21):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_template_used(resp,
                                  ('compinschrijven/hwl-leden-aanmelden.dtl',
                                   'plein/site_layout.dtl'))

        with self.assert_max_queries(20):
            resp = self.client.post(
                url, {
                    'wedstrijd_%s' % wedstrijd_pks[0]: 'on',
                    'lid_100003_boogtype_3': 'on'
                })
        self.assert_is_redirect_not_plein(resp)  # check success
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(),
                         1)  # 1 schutter, 1 competitie

        deelnemer = RegioCompetitieSchutterBoog.objects.get(
            sporterboog__sporter__lid_nr=100003)
        self.assertEqual(deelnemer.inschrijf_gekozen_wedstrijden.count(), 1)
Exemple #21
0
    def test_administratief(self):
        # log in als HWL
        self.e2e_login_and_pass_otp(self.account_hwl)
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self.e2e_check_rol('HWL')

        # maak dit een administratieve regio waarvan de leden geen wedstrijden mogen schieten
        regio = self.nhbver1.regio
        regio.is_administratief = True
        regio.save()

        url = self.url_aanmelden % self.comp_18.pk
        zet_competitie_fase(self.comp_18, 'B')

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)

        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert404(resp, 'Geen wedstrijden in deze regio')
Exemple #22
0
    def test_doorzetten_rk_geen_lid(self):
        # variant van doorzetten_rk met een lid dat niet meer bij een vereniging aangesloten is
        self.e2e_login_and_pass_otp(self.testdata.account_bb)
        self.e2e_wissel_naar_functie(self.functie_bko_18)

        # fase F: pagina zonder knop 'doorzetten'
        zet_competitie_fase(self.comp_18, 'F')

        # sluit alle deelcompetitie regio
        for obj in DeelCompetitie.objects.filter(competitie=self.comp_18,
                                                 is_afgesloten=False,
                                                 laag=LAAG_REGIO):
            obj.is_afgesloten = True
            obj.save()
        # for

        # fase G: pagina met knop 'doorzetten'
        zet_competitie_fase(self.comp_18, 'G')

        # nu echt doorzetten
        self._regioschutters_inschrijven()

        self.assertEqual(3, RegioCompetitieSchutterBoog.objects.count())
        self.assertEqual(0, KampioenschapSchutterBoog.objects.count())

        self.lid_sporter_2.bij_vereniging = None
        self.lid_sporter_2.save()

        url = self.url_doorzetten_rk % self.comp_18.pk
        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert_is_redirect(resp, '/bondscompetities/')       # redirect = Success

        # laat de mutatie verwerken
        management.call_command('regiocomp_mutaties', '1', '--quick', stderr=io.StringIO(), stdout=io.StringIO())

        # het lid zonder vereniging komt NIET in de RK selectie
        self.assertEqual(2, KampioenschapSchutterBoog.objects.count())
Exemple #23
0
def maak_competities_en_zet_fase_b(startjaar=None):
    """ Competities 18m en 25m aanmaken, AG vaststellen, klassengrenzen vaststelen, instellen op fase B """

    # dit voorkomt kennis en afhandelen van achtergrondtaken in alle applicatie test suites

    # competitie aanmaken
    competities_aanmaken(startjaar)

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

    # aanvangsgemiddelden vaststellen
    aanvangsgemiddelden_vaststellen_voor_afstand(18)
    aanvangsgemiddelden_vaststellen_voor_afstand(25)

    # klassengrenzen vaststellen
    competitie_klassengrenzen_vaststellen(comp_18)
    competitie_klassengrenzen_vaststellen(comp_25)

    zet_competitie_fase(comp_18, 'B')
    zet_competitie_fase(comp_25, 'B')

    return comp_18, comp_25
Exemple #24
0
    def test_geen_voorkeur_competities(self):
        # toon geen regiocompetities als de schutter geen interesse heeft

        # log in as BB en maak de competitie aan
        self.e2e_login_and_pass_otp(self.testdata.account_admin)
        self.e2e_wisselnaarrol_bb()
        self._competitie_aanmaken()
        self.client.logout()

        # zonder login --> terug naar het plein
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_profiel)
        self.assert403(resp)

        # log in as schutter
        self.e2e_login(self.account_normaal)
        self._prep_voorkeuren()

        # competitie wordt niet getoond in vroege fases
        zet_competitie_fase(self.comp_18, 'A2')
        with self.assert_max_queries(21):
            resp = self.client.get(self.url_profiel)
        self.assertEqual(resp.status_code, 200)     # 200 = OK
        self.assert_html_ok(resp)
        zet_competitie_fase(self.comp_18, 'B')

        # met standaard voorkeuren worden de regiocompetities getoond
        voorkeuren, _ = SporterVoorkeuren.objects.get_or_create(sporter=self.sporter1)
        self.assertTrue(voorkeuren.voorkeur_meedoen_competitie)
        with self.assert_max_queries(21):
            resp = self.client.get(self.url_profiel)
        self.assertEqual(resp.status_code, 200)     # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('sporter/profiel.dtl', 'plein/site_layout.dtl'))
        self.assertContains(resp, 'De volgende competities worden georganiseerd')

        # uitgezet worden de regiocompetities niet getoond
        voorkeuren.voorkeur_meedoen_competitie = False
        voorkeuren.save()
        with self.assert_max_queries(21):
            resp = self.client.get(self.url_profiel)
        self.assertEqual(resp.status_code, 200)     # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('sporter/profiel.dtl', 'plein/site_layout.dtl'))
        self.assertNotContains(resp, 'De volgende competities worden georganiseerd')

        # schrijf de schutter in voor de 18m Recurve
        sporterboog = SporterBoog.objects.get(boogtype__afkorting='R')
        deelcomp = DeelCompetitie.objects.get(competitie__afstand='18', nhb_regio=self.nhbver.regio)
        res = score_indiv_ag_opslaan(sporterboog, 18, 8.18, None, 'Test')
        self.assertTrue(res)
        url = self.url_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'opmerking': 'test van de 18m'})
        self.assert_is_redirect(resp, self.url_profiel)

        # voorkeur net uitgezet, maar nog wel ingeschreven
        with self.assert_max_queries(21):
            resp = self.client.get(self.url_profiel)
        self.assertEqual(resp.status_code, 200)     # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('sporter/profiel.dtl', 'plein/site_layout.dtl'))
Exemple #25
0
    def test_compleet(self):
        url_kies = '/bondscompetities/'

        # log in as schutter
        self.e2e_login(self.account_normaal)
        self._prep_voorkeuren()

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_profiel)
        self.assertNotContains(resp, 'De volgende competities worden georganiseerd')

        # competitie aanmaken
        comp_18, comp_25 = maak_competities_en_zet_fase_b()

        # log in as schutter
        self.e2e_login(self.account_normaal)
        self._prep_voorkeuren()

        # controleer dat inschrijven mogelijk is
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_profiel)
        self.assertContains(resp, 'De volgende competities worden georganiseerd')
        self.assertContains(resp, 'De inschrijving is open tot ')
        self.assertContains(resp, 'De volgende competities passen bij de bogen waar jij mee schiet:')
        urls = self.extract_all_urls(resp, skip_menu=True)
        # print('urls:', urls)
        urls = [url for url in urls if '/bondscompetities/deelnemen/aanmelden/' in url]
        self.assertEqual(len(urls), 2)

        # schrijf de schutter in voor de 18m Recurve
        sporterboog = SporterBoog.objects.get(boogtype__afkorting='R')
        deelcomp = DeelCompetitie.objects.get(competitie__afstand='18', nhb_regio=self.nhbver.regio)
        res = score_indiv_ag_opslaan(sporterboog, 18, 8.18, None, 'Test')
        self.assertTrue(res)
        url = self.url_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'opmerking': 'test van de 18m'})
        self.assert_is_redirect(resp, self.url_profiel)

        deelcomp = DeelCompetitie.objects.get(competitie__afstand='25', nhb_regio=self.nhbver.regio)

        # zet de 25m door naar fase C
        zet_competitie_fase(comp_25, 'C')

        # controleer dat inschrijven nog mogelijk is voor 25m en uitschrijven voor 18m
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_profiel)
        self.assertContains(resp, 'De volgende competities worden georganiseerd')
        self.assertContains(resp, 'De inschrijving is open tot ')     # 18m
        self.assertContains(resp, 'Aanmelden kan nog tot 1 februari 20')      # 25m
        urls = self.extract_all_urls(resp, skip_menu=True)
        urls2 = [url for url in urls if '/bondscompetities/deelnemen/aanmelden/' in url]
        self.assertEqual(len(urls2), 1)
        urls2 = [url for url in urls if '/bondscompetities/deelnemen/afmelden/' in url]
        self.assertEqual(len(urls2), 1)

        # afmelden moet nog kunnen als de wedstrijdboog weer uitgezet is
        sporterboog_bb = SporterBoog.objects.get(boogtype__afkorting='R')
        sporterboog_bb.voor_wedstrijd = False
        sporterboog_bb.save()
        with self.assert_max_queries(23):
            resp = self.client.get(self.url_profiel)
        urls = self.extract_all_urls(resp, skip_menu=True)
        # print('urls:', urls)
        urls2 = [url for url in urls if '/bondscompetities/deelnemen/aanmelden/' in url]
        self.assertEqual(len(urls2), 0)
        urls2 = [url for url in urls if '/bondscompetities/deelnemen/afmelden/' in url]
        self.assertEqual(len(urls2), 1)
        sporterboog_bb.voor_wedstrijd = True
        sporterboog_bb.save()

        # zet de barebow boog 'aan' en schrijf in voor 25m BB
        sporterboog_bb = SporterBoog.objects.get(boogtype__afkorting='BB')
        sporterboog_bb.voor_wedstrijd = True
        sporterboog_bb.save()
        url = self.url_aanmelden % (deelcomp.pk, sporterboog_bb.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'wil_in_team': 'on'})
        self.assert_is_redirect(resp, self.url_profiel)
        sporterboog_bb.voor_wedstrijd = False
        sporterboog_bb.save()

        # zet de 18m ook door naar fase F
        zet_competitie_fase(comp_18, 'F')

        # haal de profiel pagina op
        with self.assert_max_queries(25):
            resp = self.client.get(self.url_profiel)
        self.assertEqual(resp.status_code, 200)     # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('sporter/profiel.dtl', 'plein/site_layout.dtl'))
        self.assertContains(resp, 'De inschrijving is gesloten')        # 18m
        self.assertContains(resp, 'Aanmelden kan nog tot 1 februari 20')      # 25m

        # zet aanvangsgemiddelden voor 18m en 25m
        Score.objects.all().delete()        # nieuw vastgestelde AG is van vandaag
        obj = SporterBoog.objects.get(boogtype__afkorting='R')
        score_indiv_ag_opslaan(obj, 18, 9.018, None, 'Test opmerking A')
        score_indiv_ag_opslaan(obj, 25, 2.5, None, 'Test opmerking B')

        with self.assert_max_queries(25):
            resp = self.client.get(self.url_profiel)
        self.assertEqual(resp.status_code, 200)     # 200 = OK
        self.assert_html_ok(resp)
        self.assertContains(resp, "2,500")
        self.assertContains(resp, "9,018")
        self.assertContains(resp, "Test opmerking A")
        self.assertContains(resp, "Test opmerking B")

        # variant met Score zonder ScoreHist
        ScoreHist.objects.all().delete()
        with self.assert_max_queries(25):
            resp = self.client.get(self.url_profiel)
        self.assertEqual(resp.status_code, 200)     # 200 = OK
        self.assert_html_ok(resp)

        self.e2e_assert_other_http_commands_not_supported(self.url_profiel)

        # zet de 18m door naar RK fase
        # zet de 25m door naar BK fase
        zet_competitie_fase(comp_18, 'K')
        zet_competitie_fase(comp_25, 'P')
        with self.assert_max_queries(23):
            resp = self.client.get(self.url_profiel)
        self.assertContains(resp, 'Rayonkampioenschappen')      # 18m
        self.assertContains(resp, 'Bondskampioenschappen')      # 25m
Exemple #26
0
    def test_rayon_teams(self):
        url = self.url_uitslagen_rayon_teams % (self.testdata.comp18.pk, 'R')
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('compuitslagen/uitslagen-rayon-teams.dtl', 'plein/site_layout.dtl'))

        url = self.url_uitslagen_rayon_teams % (999999, 'R')
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert404(resp, 'Competitie niet gevonden')

        url = self.url_uitslagen_rayon_teams % (self.testdata.comp18.pk, 'X')
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert404(resp, 'Team type niet bekend')

        url = self.url_uitslagen_rayon_teams_n % (self.testdata.comp18.pk, 'R', 1)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('compuitslagen/uitslagen-rayon-teams.dtl', 'plein/site_layout.dtl'))

        url = self.url_uitslagen_rayon_teams_n % (self.testdata.comp18.pk, 'R', 'X')
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert404(resp, 'Verkeerd rayonnummer')

        url = self.url_uitslagen_rayon_teams_n % (self.testdata.comp18.pk, 'R', 999999)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert404(resp, 'Competitie niet gevonden')

        # maak een paar teams aan
        self.testdata.maak_inschrijvingen_rk_teamcompetitie(25, self.ver_nr, ook_incomplete_teams=False)
        self.testdata.geef_rk_team_tijdelijke_sporters_genoeg_scores(25, self.ver_nr)

        url = self.url_uitslagen_rayon_teams_n % (self.testdata.comp25.pk, 'R', 1)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('compuitslagen/uitslagen-rayon-teams.dtl', 'plein/site_layout.dtl'))

        # als BKO doorzetten naar RK fase (G --> J) en bepaal de klassengrenzen (fase J --> K)
        self.e2e_login_and_pass_otp(self.testdata.account_bb)
        self.e2e_wissel_naar_functie(self.testdata.comp25_functie_bko)
        zet_competitie_fase(self.testdata.comp25, 'G')

        url = self.url_doorzetten_rk % self.testdata.comp25.pk
        resp = self.client.post(url)
        self.assert_is_redirect_not_plein(resp)
        self._verwerk_mutaties()

        comp = Competitie.objects.get(pk=self.testdata.comp25.pk)
        comp.bepaal_fase()
        self.assertEqual(comp.fase, 'J')

        url = self.url_teams_klassengrenzen_vaststellen % self.testdata.comp25.pk
        resp = self.client.post(url)
        self.assert_is_redirect_not_plein(resp)

        url = self.url_uitslagen_rayon_teams_n % (self.testdata.comp25.pk, 'R', 1)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('compuitslagen/uitslagen-rayon-teams.dtl', 'plein/site_layout.dtl'))
Exemple #27
0
    def test_inschrijven_methode1(self):
        regio_101 = NhbRegio.objects.get(pk=101)
        self.nhbver.regio = regio_101
        self.nhbver.save()

        # log in as BB en maak de competitie aan
        self.e2e_login_and_pass_otp(self.testdata.account_admin)
        self.e2e_wisselnaarrol_bb()
        self._competitie_aanmaken()

        deelcomp = DeelCompetitie.objects.get(competitie__afstand='18', nhb_regio=regio_101)
        deelcomp.inschrijf_methode = INSCHRIJF_METHODE_1
        deelcomp.save()

        # maak een aantal wedstrijden aan, als RCL van Regio 101
        functie_rcl101 = Functie.objects.get(rol='RCL', comp_type='18', nhb_regio=regio_101)
        self.e2e_wissel_naar_functie(functie_rcl101)

        url = self.url_planning_regio % deelcomp.pk

        # TODO: commentaar hieronder zegt GET doet iets aanmaken. Moet niet!

        # haal de (lege) planning op. Dit maakt ook meteen de enige ronde aan
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK

        # haal de planning op (maakt opnieuw een ronde aan)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK

        ronde_pk = DeelcompetitieRonde.objects.filter(deelcompetitie=deelcomp)[0].pk

        # haal de ronde planning op
        url_ronde = self.url_planning_regio_ronde_methode1 % ronde_pk
        with self.assert_max_queries(20):
            resp = self.client.get(url_ronde)
        self.assertEqual(resp.status_code, 200)     # 200 = OK

        # maak een wedstrijd aan
        self.assertEqual(CompetitieWedstrijd.objects.count(), 0)
        with self.assert_max_queries(20):
            resp = self.client.post(url_ronde)
        self.assert_is_redirect_not_plein(resp)

        wedstrijd_pk = CompetitieWedstrijd.objects.all()[0].pk

        # wijzig de instellingen van deze wedstrijd
        url_wed = self.url_wijzig_wedstrijd % wedstrijd_pk
        with self.assert_max_queries(20):
            resp = self.client.post(url_wed, {'nhbver_pk': self.nhbver.pk,
                                              'wanneer': '2020-12-11', 'aanvang': '12:34'})
        self.assert_is_redirect(resp, url_ronde)

        # maak nog een paar wedstrijden aan (voor later gebruik)
        for lp in range(7):
            with self.assert_max_queries(20):
                resp = self.client.post(url_ronde)
            self.assert_is_redirect_not_plein(resp)
        # for

        # log in as schutter
        self.client.logout()
        self.e2e_login(self.account_normaal)
        self._prep_voorkeuren(100001)

        # schrijf in voor de 18m Recurve, met AG
        sporterboog = SporterBoog.objects.get(boogtype__afkorting='R')

        # haal de bevestig pagina op met het formulier
        url = self.url_bevestig_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('compinschrijven/sporter-bevestig-aanmelden.dtl', 'plein/site_layout.dtl'))
        self.assertContains(resp, 'eigen blazoen')
        self.assertContains(resp, 'Kies wanneer je wilt schieten')
        self.assertContains(resp, '11 december 2020 om 12:34')

        # special: zet het vastgestelde AG op 0.000
        score_indiv_ag_opslaan(sporterboog, 18, 0.0, None, 'Test')

        # doe de inschrijving
        url = self.url_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'wedstrijd_%s' % wedstrijd_pk: 'on',
                                          'wedstrijd_99999': 'on'})     # is ignored
        self.assert_is_redirect(resp, self.url_profiel)

        aanmelding = RegioCompetitieSchutterBoog.objects.get(sporterboog=sporterboog)
        self.assertEqual(aanmelding.ag_voor_indiv, 0.0)
        self.assertEqual(aanmelding.ag_voor_team, 0.0)
        self.assertTrue(aanmelding.ag_voor_team_mag_aangepast_worden)

        # doe nog een inschrijving
        self.e2e_login(self.account_twee)
        self._prep_voorkeuren(100002)

        sporterboog2 = SporterBoog.objects.get(sporter__lid_nr=100002, boogtype__afkorting='R')

        # doe de inschrijving
        url = self.url_aanmelden % (deelcomp.pk, sporterboog2.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'wedstrijd_%s' % wedstrijd_pk: 'on'})
        self.assert_is_redirect(resp, self.url_profiel)

        aanmelding2 = RegioCompetitieSchutterBoog.objects.get(sporterboog=sporterboog2)

        # terug naar de eerste sporter
        self.e2e_login(self.account_normaal)

        # probeer de schietmomenten van een andere schutter aan te passen
        url = self.url_zeven_wedstrijden % aanmelding2.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)

        # pas de schietmomenten aan
        url = self.url_zeven_wedstrijden % aanmelding.pk
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('compregio/keuze-zeven-wedstrijden-methode1.dtl', 'plein/site_layout.dtl'))

        # wedstrijd behouden
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'wedstrijd_%s' % wedstrijd_pk: 'on'})
        self.assert_is_redirect(resp, self.url_profiel)

        # wedstrijd verwijderen
        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert_is_redirect(resp, self.url_profiel)

        # wedstrijd toevoegen
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'wedstrijd_%s' % wedstrijd_pk: 'on'})
        self.assert_is_redirect(resp, self.url_profiel)

        # te veel wedstrijden toevoegen
        args = dict()
        for obj in CompetitieWedstrijd.objects.all():
            args['wedstrijd_%s' % obj.pk] = 'on'
        # for
        with self.assert_max_queries(20):
            resp = self.client.post(url, args)
        self.assert_is_redirect(resp, self.url_profiel)

        # bad deelnemer_pk
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_zeven_wedstrijden % 999999)
        self.assert404(resp)

        # special: probeer inschrijving met competitie in verkeerde fase
        zet_competitie_fase(deelcomp.competitie, 'K')
        url = self.url_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'wedstrijd_%s' % wedstrijd_pk: 'on'})
        self.assert404(resp)
Exemple #28
0
    def test_inschrijven(self):
        # log in as BB en maak de competitie aan
        self.e2e_login_and_pass_otp(self.testdata.account_admin)
        self.e2e_wisselnaarrol_bb()
        self._competitie_aanmaken()

        # log in as schutter
        self.client.logout()
        self.e2e_login(self.account_normaal)
        self._prep_voorkeuren(100001)

        # schrijf in voor de 18m Recurve, met AG
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)
        sporterboog = SporterBoog.objects.get(boogtype__afkorting='R')
        deelcomp = DeelCompetitie.objects.get(competitie__afstand='18', nhb_regio=self.nhbver.regio)
        res = score_indiv_ag_opslaan(sporterboog, 18, 8.18, None, 'Test')
        self.assertTrue(res)

        # haal de bevestig pagina op met het formulier
        url = self.url_bevestig_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('compinschrijven/sporter-bevestig-aanmelden.dtl', 'plein/site_layout.dtl'))
        self.assertContains(resp, 'eigen blazoen')

        with self.assert_max_queries(20):
            resp = self.client.post(self.url_aanmelden % (deelcomp.pk, sporterboog.pk))
        self.assert_is_redirect(resp, self.url_profiel)
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 1)

        inschrijving = RegioCompetitieSchutterBoog.objects.all()[0]
        self.assertEqual(str(inschrijving.ag_voor_indiv), "8.180")
        self.assertEqual(str(inschrijving.ag_voor_team), "8.180")
        self.assertFalse(inschrijving.ag_voor_team_mag_aangepast_worden)
        self.assertEqual(inschrijving.deelcompetitie, deelcomp)
        self.assertEqual(inschrijving.sporterboog, sporterboog)
        self.assertEqual(inschrijving.bij_vereniging, sporterboog.sporter.bij_vereniging)
        self.assertFalse(inschrijving.inschrijf_voorkeur_team)
        self.assertEqual(inschrijving.inschrijf_notitie, '')
        self.assertEqual(inschrijving.inschrijf_voorkeur_dagdeel, 'GN')
        self.assertTrue(str(RegioCompetitieSchutterBoog) != '')     # coverage only
        self.assertEqual(inschrijving.klasse.competitie.afstand, '18')           # juiste competitie?
        self.assertEqual(inschrijving.klasse.indiv.boogtype.afkorting, 'R')      # klasse compatibel met boogtype?

        # geen bevestig formulier indien al ingeschreven
        url = self.url_bevestig_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert404(resp)     # 404 = Not found
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 1)

        # 18m IB voor extra coverage
        sporterboog = SporterBoog.objects.get(boogtype__afkorting='IB')
        url = self.url_bevestig_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('compinschrijven/sporter-bevestig-aanmelden.dtl', 'plein/site_layout.dtl'))
        self.assertNotContains(resp, 'eigen blazoen')

        # uitzondering: AG score zonder hist
        res = score_indiv_ag_opslaan(sporterboog, 18, 7.18, None, 'Test 2')
        self.assertTrue(res)
        scores = Score.objects.filter(sporterboog=sporterboog,
                                      type=SCORE_TYPE_INDIV_AG,
                                      afstand_meter=deelcomp.competitie.afstand)
        ScoreHist.objects.filter(score=scores[0]).delete()
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('compinschrijven/sporter-bevestig-aanmelden.dtl', 'plein/site_layout.dtl'))

        # schakel over naar de 25m1pijl, barebow
        sporterboog = SporterBoog.objects.get(boogtype__afkorting='BB')
        deelcomp = DeelCompetitie.objects.get(competitie__afstand='25', nhb_regio=self.nhbver.regio)

        # haal de bevestig pagina op met het formulier
        url = self.url_bevestig_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(resp, ('compinschrijven/sporter-bevestig-aanmelden.dtl', 'plein/site_layout.dtl'))
        self.assertNotContains(resp, 'eigen blazoen')

        # schrijf in voor de 25m BB, zonder AG
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 1)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_aanmelden % (deelcomp.pk, sporterboog.pk))
        self.assert_is_redirect(resp, self.url_profiel)
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 2)

        inschrijving_25 = RegioCompetitieSchutterBoog.objects.exclude(pk=inschrijving.pk)[0]
        self.assertEqual(inschrijving_25.klasse.competitie.afstand, '25')           # juiste competitie?
        self.assertEqual(inschrijving_25.klasse.indiv.boogtype.afkorting, 'BB')     # klasse compatibel met boogtype?

        # probeer dubbel in te schrijven
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_aanmelden % (deelcomp.pk, sporterboog.pk))
        self.assert404(resp)     # 404 = Not found
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 2)

        # competitie in verkeerde fase
        comp = deelcomp.competitie    # Competitie.objects.get(pk=deelcomp.competitie.pk)
        zet_competitie_fase(comp, 'K')
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_bevestig_aanmelden % (deelcomp.pk, sporterboog.pk))
        self.assert404(resp)     # 404 = Not found
Exemple #29
0
    def test_klassengrenzen_tonen(self):
        # competitie opstarten
        self.e2e_login_and_pass_otp(self.testdata.account_bb)
        self.e2e_wisselnaarrol_bb()
        self.e2e_check_rol('BB')

        # maak de competities aan
        competities_aanmaken()
        comp_18 = Competitie.objects.filter(afstand=18).all()[0]
        comp_25 = Competitie.objects.filter(afstand=25).all()[0]

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_klassengrenzen_tonen % comp_18.pk)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp,
            ('competitie/klassengrenzen-tonen.dtl', 'plein/site_layout.dtl'))
        self.assertContains(resp, ' zijn nog niet vastgesteld')
        self.assertContains(resp, 'De klassengrenzen voor de ')

        # klassengrenzen vaststellen (18m en 25m)
        # s1 = timezone.now()
        with self.assert_max_queries(86):
            resp = self.client.post(self.url_klassengrenzen_vaststellen %
                                    comp_18.pk)
        # s2 = timezone.now()
        # print('duration:', s2-s1)
        self.assert_is_redirect_not_plein(resp)  # redirect = success
        with self.assert_max_queries(86):
            resp = self.client.post(self.url_klassengrenzen_vaststellen %
                                    comp_25.pk)
        self.assert_is_redirect_not_plein(resp)  # redirect = success

        # kies pagina ophalen als BB, dan worden alle competities getoond
        zet_competitie_fase(comp_18, 'B')
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_kies)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp, ('competitie/kies.dtl', 'plein/site_layout.dtl'))

        self.e2e_logout()

        # kies pagina ophalen als bezoeker
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_kies)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp, ('competitie/kies.dtl', 'plein/site_layout.dtl'))

        # nog een keer
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_klassengrenzen_tonen % comp_25.pk)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp,
            ('competitie/klassengrenzen-tonen.dtl', 'plein/site_layout.dtl'))
        self.assertNotContains(resp, ' zijn nog niet vastgesteld')
        self.assertNotContains(resp, 'De klassengrenzen voor de ')

        with self.assert_max_queries(20):
            resp = self.client.get(self.url_klassengrenzen_tonen % comp_18.pk)
        self.assertEqual(resp.status_code, 200)
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp,
            ('competitie/klassengrenzen-tonen.dtl', 'plein/site_layout.dtl'))
        self.assertNotContains(resp, ' zijn nog niet vastgesteld')
        self.assertNotContains(resp, 'De klassengrenzen voor de ')
Exemple #30
0
    def test_rk_teams_koppelen(self):

        # login als HWL van vereniging 1000 in regio 111
        self.e2e_login_and_pass_otp(self.account_hwl)
        self.e2e_wissel_naar_functie(self.functie_hwl)
        self.e2e_check_rol('HWL')

        self._create_deelnemers()

        deelcomp_rk3 = (DeelCompetitie.objects.get(competitie=self.comp_18,
                                                   laag=LAAG_RK,
                                                   nhb_rayon__rayon_nr=3)
                        )  # regio 111 is in rayon 3

        # zet competitie in fase E (nodig om een team aan te maken)
        zet_competitie_fase(self.comp_18, 'E')

        with self.settings(COMPETITIES_OPEN_RK_TEAMS_DAYS_AFTER=0):
            # maak een team aan
            self.assertEqual(KampioenschapTeam.objects.count(), 0)
            with self.assert_max_queries(20):
                url = self.url_rk_teams_wijzig % (deelcomp_rk3.pk, 0
                                                  )  # 0 = nieuw team
                resp = self.client.post(url, {'team_type': 'R'})
                self.assert_is_redirect_not_plein(
                    resp)  # is redirect naar 'koppelen'
            self.assertEqual(KampioenschapTeam.objects.count(), 1)

            team = KampioenschapTeam.objects.all()[0]
            url = self.url_rk_teams_koppelen % team.pk

            with self.assert_max_queries(20):
                resp = self.client.get(url)
            self.assertEqual(resp.status_code, 200)
            self.assert_html_ok(resp)
            self.assert_template_used(
                resp,
                ('comprayon/hwl-teams-koppelen.dtl', 'plein/site_layout.dtl'))

            with self.assert_max_queries(20):
                resp = self.client.post(url, {
                    'deelnemer_999999': 1,
                    'deelnemer_xyz': 1
                })
            self.assert_is_redirect_not_plein(resp)

            # bad team pk
            resp = self.client.get(self.url_rk_teams_koppelen % 999999)
            self.assert404(resp, 'Team niet gevonden')

            resp = self.client.post(self.url_rk_teams_koppelen % 999999)
            self.assert404(resp, 'Team niet gevonden')

            # herhaal voor 25m1p
            deelcomp_rk3 = (DeelCompetitie.objects.get(competitie=self.comp_25,
                                                       laag=LAAG_RK,
                                                       nhb_rayon__rayon_nr=3)
                            )  # regio 111 is in rayon 3

            # zet competitie in fase E (nodig om een team aan te maken)
            zet_competitie_fase(self.comp_25, 'E')

            # maak een team aan
            team.delete()
            self.assertEqual(KampioenschapTeam.objects.count(), 0)
            with self.assert_max_queries(20):
                url = self.url_rk_teams_wijzig % (deelcomp_rk3.pk, 0
                                                  )  # 0 = nieuw team
                resp = self.client.post(url, {'team_type': 'R'})
                self.assert_is_redirect_not_plein(
                    resp)  # is redirect naar 'koppelen'
            self.assertEqual(KampioenschapTeam.objects.count(), 1)

            team = KampioenschapTeam.objects.all()[0]
            url = self.url_rk_teams_koppelen % team.pk

            with self.assert_max_queries(20):
                resp = self.client.get(url)
            self.assertEqual(resp.status_code, 200)
            self.assert_html_ok(resp)
            self.assert_template_used(
                resp,
                ('comprayon/hwl-teams-koppelen.dtl', 'plein/site_layout.dtl'))