示例#1
0
    def _deelnemers_aanmaken(self):
        KampioenschapSchutterBoog(
            deelcompetitie=self.deelcomp_rayon1_18,
            sporterboog=self.sporterboog,
            klasse=self.klasse_r,
            bij_vereniging=self.sporterboog.sporter.bij_vereniging).save()

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

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

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

        KampioenschapSchutterBoog(
            deelcompetitie=self.deelcomp_rayon1_18,
            sporterboog=self.sporterboog,
            klasse=self.klasse_c,
            bij_vereniging=self.sporterboog.sporter.bij_vereniging).save()
示例#2
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)
示例#3
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) != '')
示例#4
0
    def maak_rk_deelnemers(self, afstand, ver_nr, regio_nr):
        """ Maak de RK deelnemers aan, alsof ze doorgestroomd zijn vanuit de regiocompetitie
            rank en volgorde wordt ingevuld door maak_label_regiokampioenen

            afstand = 18 / 25
            ver_nr = regio_nr * 10 + volgnummer
        """

        ver = self.vereniging[ver_nr]

        if afstand == 18:
            deelcomp_rk = self.deelcomp18_rk[ver.regio.rayon.rayon_nr]
            klassen = self.comp18_klassen_indiv
        else:
            deelcomp_rk = self.deelcomp25_rk[ver.regio.rayon.rayon_nr]
            klassen = self.comp25_klassen_indiv

        ag = 7000  # 7.0
        ag += ver_nr

        max_ag = 9000
        if (regio_nr % 4) == 0:
            max_ag = 9500  # zorg dat de regiokampioenen niet allemaal bovenaan staan

        bulk = list()
        for sporterboog in (SporterBoog.objects.filter(
                sporter__bij_vereniging__ver_nr=ver_nr,
                voor_wedstrijd=True).select_related('boogtype')):

            ag = 7000 if ag > max_ag else ag + 25

            afk = sporterboog.boogtype.afkorting
            klasse = klassen[afk][0]

            deelnemer = KampioenschapSchutterBoog(
                deelcompetitie=deelcomp_rk,
                sporterboog=sporterboog,
                klasse=klasse,
                bij_vereniging=sporterboog.sporter.bij_vereniging,
                kampioen_label='',
                volgorde=0,
                rank=0,
                # bevestiging_gevraagd_op (date/time) = None
                # deelname=DEELNAME_ONBEKEND
                gemiddelde=Decimal(ag) / 1000)
            bulk.append(deelnemer)
        # for

        KampioenschapSchutterBoog.objects.bulk_create(bulk)
        del bulk
示例#5
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)
示例#6
0
    def test_wijzig_status_rko(self):
        # RKO
        self.e2e_login_and_pass_otp(self.account_rko1_18)
        self.e2e_wissel_naar_functie(self.functie_rko1_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.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(resp,
                                  ('comprayon/wijzig-status-rk-deelnemer.dtl',
                                   'plein/site_layout.dtl'))

        # geen vereniging
        deelnemer.bij_vereniging = None
        deelnemer.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.assertEqual(CompetitieMutatie.objects.count(), 0)

        with self.assert_max_queries(20):
            resp = self.client.post(url, {
                'bevestig': '0',
                'afmelden': '0',
                'snel': 1
            })
        self.assertEqual(CompetitieMutatie.objects.count(), 0)

        with self.assert_max_queries(20):
            resp = self.client.post(url, {
                'bevestig': '0',
                'afmelden': '1',
                'snel': 1
            })
        self.assertEqual(CompetitieMutatie.objects.count(), 1)

        # bevestigen mag niet, want geen lid bij vereniging
        with self.assert_max_queries(20):
            resp = self.client.post(url, {
                'bevestig': '1',
                'afmelden': '0',
                'snel': 1
            })
        self.assertEqual(CompetitieMutatie.objects.count(), 1)

        # verbouw 'time' en voer een test uit zonder 'snel'
        time.sleep = self._dummy_sleep
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'bevestig': '0', 'afmelden': '1'})
        time.sleep = sleep_oud
        self.assertEqual(CompetitieMutatie.objects.count(), 2)
示例#7
0
    def test_lijst_rk(self):
        # RKO
        self.e2e_login_and_pass_otp(self.account_rko1_18)
        self.e2e_wissel_naar_functie(self.functie_rko1_18)

        url = self.url_lijst_rk % self.deelcomp_rayon1_18.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, ('comprayon/rko-rk-selectie.dtl', 'plein/site_layout.dtl'))

        # nu doorzetten naar RK fase
        self.competitie_sluit_alle_regiocompetities(self.comp_18)
        self.e2e_login_and_pass_otp(self.account_bko_18)
        self.e2e_wissel_naar_functie(self.functie_bko_18)
        resp = self.client.post(self.url_doorzetten_rk % self.comp_18.pk)
        self.assert_is_redirect_not_plein(resp)  # check for success
        # laat de mutaties verwerken
        management.call_command('regiocomp_mutaties',
                                '1',
                                '--quick',
                                stderr=io.StringIO(),
                                stdout=io.StringIO())

        # zet een limiet
        limiet = DeelcompetitieKlasseLimiet(
            deelcompetitie=self.deelcomp_rayon1_18,
            klasse=self.klasse_r,
            limiet=20)
        limiet.save()
        self.assertTrue(str(limiet) != "")  # coverage only

        # nu nog een keer, met een RK deelnemerslijst
        self.e2e_login_and_pass_otp(self.account_rko1_18)
        self.e2e_wissel_naar_functie(self.functie_rko1_18)

        deelnemer = KampioenschapSchutterBoog(
            deelcompetitie=self.deelcomp_rayon1_18,
            sporterboog=self.sporterboog,
            bij_vereniging=self.sporterboog.sporter.bij_vereniging,
            klasse=self.klasse_r)
        deelnemer.save()
        self.assertTrue(str(deelnemer) != "")  # coverage only

        deelnemer = KampioenschapSchutterBoog(
            deelcompetitie=self.deelcomp_rayon1_18,
            sporterboog=self.sporterboog,
            bij_vereniging=self.sporterboog.sporter.bij_vereniging,
            klasse=self.klasse_c)
        deelnemer.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, ('comprayon/rko-rk-selectie.dtl', 'plein/site_layout.dtl'))

        deelnemer.deelname = DEELNAME_JA
        deelnemer.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, ('comprayon/rko-rk-selectie.dtl', 'plein/site_layout.dtl'))

        deelnemer.rank = 100
        deelnemer.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, ('comprayon/rko-rk-selectie.dtl', 'plein/site_layout.dtl'))

        deelnemer.bij_vereniging = None
        deelnemer.rank = 1
        deelnemer.deelname = DEELNAME_NEE
        deelnemer.save()

        # twee deelnemers in dezelfde klasse
        deelnemer.pk = None
        deelnemer.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, ('comprayon/rko-rk-selectie.dtl', 'plein/site_layout.dtl'))

        url = self.url_lijst_bestand % self.deelcomp_rayon1_18.pk
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assertContains(resp, "100007")
        self.assertContains(resp, "Schutter Test")
        self.assertContains(resp, "[1000] Grote Club")
        self.assertContains(resp, "(deelname onzeker)")
        self.assertContains(resp, "Recurve klasse 1")
示例#8
0
    def test_wijzig_limiet(self):
        # RKO
        self.e2e_login_and_pass_otp(self.account_rko1_18)
        self.e2e_wissel_naar_functie(self.functie_rko1_18)

        # zonder limiet aanwezig
        url = self.url_wijzig_limiet % self.deelcomp_rayon1_18.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,
            ('comprayon/wijzig-limieten-rk.dtl', 'plein/site_layout.dtl'))

        sel = 'sel_%s' % self.klasse_r.pk

        # limiet op default zetten
        self.assertEqual(DeelcompetitieKlasseLimiet.objects.count(), 0)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {sel: 24, 'snel': 1})
        self.assert_is_redirect_not_plein(resp)  # check for success
        self.assertEqual(DeelcompetitieKlasseLimiet.objects.count(), 0)

        # limiet zetten
        self.assertEqual(DeelcompetitieKlasseLimiet.objects.count(), 0)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {sel: 20, 'snel': 1})
        self.assert_is_redirect_not_plein(resp)  # check for success
        self._verwerk_mutaties()
        self.assertEqual(DeelcompetitieKlasseLimiet.objects.count(), 1)

        # limiet opnieuw zetten, geen wijziging
        with self.assert_max_queries(20):
            resp = self.client.post(url, {sel: 20, 'snel': 1})
        self.assert_is_redirect_not_plein(resp)  # check for success
        self._verwerk_mutaties()
        self.assertEqual(DeelcompetitieKlasseLimiet.objects.count(), 1)

        # limiet aanpassen
        with self.assert_max_queries(20):
            resp = self.client.post(url, {sel: 16, 'snel': 1})
        self.assert_is_redirect_not_plein(resp)  # check for success
        self._verwerk_mutaties()
        self.assertEqual(DeelcompetitieKlasseLimiet.objects.count(), 1)

        # met limiet aanwezig
        url = self.url_wijzig_limiet % self.deelcomp_rayon1_18.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)

        # limiet verwijderen, zonder 'snel'
        time.sleep = self._dummy_sleep
        with self.assert_max_queries(20):
            resp = self.client.post(url, {sel: 24})
        self.assert_is_redirect_not_plein(resp)  # check for success
        self._verwerk_mutaties()
        self.assertEqual(DeelcompetitieKlasseLimiet.objects.count(), 0)
        time.sleep = sleep_oud

        # nu met een deelnemer, zodat de mutatie opgestart wordt
        deelnemer = KampioenschapSchutterBoog(
            deelcompetitie=self.deelcomp_rayon1_18,
            sporterboog=self.sporterboog,
            bij_vereniging=self.sporterboog.sporter.bij_vereniging,
            klasse=self.klasse_r)
        deelnemer.save()

        aantal = CompetitieMutatie.objects.count()
        with self.assert_max_queries(20):
            resp = self.client.post(url, {sel: 4, 'snel': 1})
        self.assert_is_redirect_not_plein(resp)  # check for success
        self._verwerk_mutaties()
        self.assertEqual(CompetitieMutatie.objects.count(), aantal + 1)