Exemplo n.º 1
0
    def test_verwijder_score_fail(self):
        # maak 100024 aan
        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(61):
            management.call_command('import_nhb_crm', './NhbStructuur/management/testfiles/testfile_14.json',
                                    '--sim_now=2020-07-01', stderr=f1, stdout=f2)

        # maak een schutterboog aan
        boog_r = BoogType.objects.get(afkorting='R')
        sporter = Sporter.objects.get(lid_nr="100024")
        sporterboog = SporterBoog(sporter=sporter,
                                  boogtype=boog_r)
        sporterboog.save()
        score_indiv_ag_opslaan(sporterboog, 18, 5.678, None, "")

        # probeer 100024 te verwijderen
        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(40):
            management.call_command('import_nhb_crm', './NhbStructuur/management/testfiles/testfile_16.json',
                                    '--sim_now=2020-07-01', stderr=f1, stdout=f2)
        # print("f1: %s" % f1.getvalue())
        # print("f2: %s" % f2.getvalue())
        self.assertTrue("[INFO] Lid 100024 Voornaam van der Achternaam [V, 2000] wordt nu verwijderd" in f2.getvalue())
        self.assertTrue('[ERROR] Onverwachte fout bij het verwijderen van een lid' in f1.getvalue())
Exemplo n.º 2
0
    def _maak_competitie_aan(self):
        # maak de competitie aan
        competities_aanmaken()

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

        score_indiv_ag_opslaan(self.sporterboog_100005, 18, 9.500, None,
                               "Test")

        # klassengrenzen vaststellen
        competitie_klassengrenzen_vaststellen(comp_18)
        competitie_klassengrenzen_vaststellen(comp_25)

        self.deelcomp_r101 = DeelCompetitie.objects.filter(
            laag=LAAG_REGIO, competitie=self.comp, nhb_regio=self.regio_101)[0]

        # login als BB
        self.e2e_login_and_pass_otp(self.account_bb)
        # wissel naar RCL functie
        self.e2e_wissel_naar_functie(self.deelcomp_r101.functie)

        # maak een regioplanning aan met 2 wedstrijden
        self.client.post(self.url_planning_regio % self.deelcomp_r101.pk)
        ronde = DeelcompetitieRonde.objects.all()[0]

        # maak 7 wedstrijden aan
        self.client.post(self.url_planning_regio_ronde % ronde.pk, {})
        self.client.post(self.url_planning_regio_ronde % ronde.pk, {})
        self.client.post(self.url_planning_regio_ronde % ronde.pk, {})
        self.client.post(self.url_planning_regio_ronde % ronde.pk, {})
        self.client.post(self.url_planning_regio_ronde % ronde.pk, {})
        self.client.post(self.url_planning_regio_ronde % ronde.pk, {})
        self.client.post(self.url_planning_regio_ronde % ronde.pk, {})

        self.assertEqual(7, CompetitieWedstrijd.objects.count())
        wedstrijd_pks = CompetitieWedstrijd.objects.all().values_list(
            'pk', flat=True)

        # laat de wedstrijd.uitslag aanmaken en pas de wedstrijd nog wat aan
        self.uitslagen = list()
        uur = 1
        for pk in wedstrijd_pks[:]:  # copy to ensure stable
            with self.assert_max_queries(20):
                resp = self.client.get(self.url_uitslag_invoeren % pk)
            wedstrijd = CompetitieWedstrijd.objects.get(pk=pk)
            self.assertIsNotNone(wedstrijd.uitslag)
            wedstrijd.vereniging = self.ver
            wedstrijd.tijd_begin_wedstrijd = "%02d:00" % uur
            uur = (uur + 1) % 24
            wedstrijd.save()
            self.uitslagen.append(wedstrijd.uitslag)
        # for

        # maak nog een wedstrijd aan - die blijft zonder uitslag
        self.client.post(self.url_planning_regio_ronde % ronde.pk, {})
Exemplo n.º 3
0
 def _zet_ag(self, lid_nr, afstand):
     if lid_nr == 100003:
         afkorting = 'BB'
     elif lid_nr == 100013:
         afkorting = 'IB'
     else:
         afkorting = 'R'
     sporterboog = SporterBoog.objects.get(sporter__lid_nr=lid_nr,
                                           boogtype__afkorting=afkorting)
     score_indiv_ag_opslaan(sporterboog, afstand, 7.42, self.account_hwl,
                            'Test AG %s' % afstand)
Exemplo n.º 4
0
    def _zet_ag(self, lid_nr, afstand, waarde=7.42):
        if lid_nr == 100003:
            sporterboog = SporterBoog.objects.get(sporter__lid_nr=lid_nr,
                                                  boogtype__afkorting='BB')
            score_indiv_ag_opslaan(sporterboog, afstand, waarde,
                                   self.account_hwl, 'Test AG %s' % afstand)

        sporterboog = SporterBoog.objects.get(sporter__lid_nr=lid_nr,
                                              boogtype__afkorting='R')
        score_indiv_ag_opslaan(sporterboog, afstand, waarde, self.account_hwl,
                               'Test AG %s' % afstand)
Exemplo n.º 5
0
    def test_inschrijfmethode1(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()

        # zet de deelcompetitie op inschrijfmethode 1
        deelcomp = DeelCompetitie.objects.get(competitie__afstand='18', nhb_regio=self.nhbver.regio)
        deelcomp.inschrijf_methode = INSCHRIJF_METHODE_1
        deelcomp.save()

        # log in as schutter en prep voor inschrijving
        self.e2e_login(self.account_normaal)
        self._prep_voorkeuren()
        sporterboog = SporterBoog.objects.get(boogtype__afkorting='R')
        res = score_indiv_ag_opslaan(sporterboog, 18, 8.18, None, 'Test')
        self.assertTrue(res)

        # schrijf de schutter in voor de 18m Recurve
        url = self.url_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert_is_redirect(resp, self.url_profiel)

        with self.assert_max_queries(20):
            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'))
Exemplo n.º 6
0
    def test_afmelden_geen_voorkeur_meer(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)

        # aanmelden voor de 18m Recurve, met AG
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)
        sporterboog_18 = 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, 18, 8.18, None, 'Test')
        self.assertTrue(res)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_aanmelden % (deelcomp.pk, sporterboog_18.pk))
        self.assert_is_redirect(resp, self.url_profiel)
        inschrijving_18 = RegioCompetitieSchutterBoog.objects.all()[0]

        # voorkeur boogtype uitzetten
        sporterboog_18.voor_wedstrijd = False
        sporterboog_18.save()

        # afmelden van de 18m
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 1)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_afmelden % inschrijving_18.pk)
        self.assert_is_redirect(resp, self.url_profiel)
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)
Exemplo n.º 7
0
    def test_inschrijven_methode3_alle_dagdelen(self):
        regio_105 = NhbRegio.objects.get(pk=105)
        self.nhbver.regio = regio_105
        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_105)
        deelcomp.inschrijf_methode = INSCHRIJF_METHODE_3
        deelcomp.toegestane_dagdelen = ''   # alles toegestaan
        deelcomp.save()

        # 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')
        deelcomp = DeelCompetitie.objects.get(competitie__afstand='18', 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.assertContains(resp, 'eigen blazoen')
        self.assertContains(resp, 'Zaterdag')
        self.assertContains(resp, 'Zondag')
        self.assertContains(resp, 's Avonds')
        self.assertContains(resp, 'Weekend')

        # geef dagdeel door
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)
        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, {'dagdeel': 'AV'})
        self.assert_is_redirect(resp, self.url_profiel)
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 1)

        inschrijving = RegioCompetitieSchutterBoog.objects.all()[0]
        self.assertFalse(inschrijving.inschrijf_voorkeur_team)
        self.assertEqual(inschrijving.inschrijf_notitie, '')
        self.assertEqual(inschrijving.inschrijf_voorkeur_dagdeel, 'AV')

        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)
Exemplo n.º 8
0
    def test_inschrijven_team(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
        # geef ook team schieten en opmerking door
        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)

        url = self.url_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'wil_in_team': 'yes', 'opmerking': 'Hallo daar!'})
        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.assertTrue(inschrijving.inschrijf_voorkeur_team)
        self.assertEqual(inschrijving.inschrijf_notitie, 'Hallo daar!')
        self.assertEqual(inschrijving.inschrijf_voorkeur_dagdeel, 'GN')

        # schrijf in voor de 25m BB, zonder AG, als aspirant
        self.sporter1.geboorte_datum = datetime.date(year=timezone.now().year - 12, month=1, day=1)
        self.sporter1.save()
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 1)
        sporterboog = SporterBoog.objects.get(boogtype__afkorting='BB')
        deelcomp = DeelCompetitie.objects.get(competitie__afstand='25', nhb_regio=self.nhbver.regio)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_aanmelden % (deelcomp.pk, sporterboog.pk),
                                    {'wil_in_team': 'ja', 'opmerking': 'ben ik oud genoeg?'})
        self.assert_is_redirect(resp, self.url_profiel)
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 2)

        inschrijving = RegioCompetitieSchutterBoog.objects.filter(sporterboog=sporterboog).all()[0]
        self.assertEqual(inschrijving.inschrijf_notitie, 'ben ik oud genoeg?')
        self.assertFalse(inschrijving.inschrijf_voorkeur_team)
Exemplo n.º 9
0
    def test_geen_klasse(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)

        # voorkeuren en AG zetten
        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)

        # extreem: aanmelden zonder passende klasse
        # zet het min_ag te hoog
        for klasse in CompetitieKlasse.objects.filter(competitie=deelcomp.competitie,
                                                      indiv__boogtype__afkorting='R',
                                                      min_ag__lt=8.0):
            klasse.min_ag = 8.2     # > 8.18 van zet_ag
            klasse.save(update_fields=['min_ag'])
        # for
        # verwijder alle klassen 'onbekend'
        for klasse in CompetitieKlasse.objects.filter(indiv__is_onbekend=True):
            indiv = klasse.indiv
            indiv.is_onbekend = False
            indiv.save(update_fields=['is_onbekend'])
        # for

        # 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.assert404(resp, 'Geen passende wedstrijdklasse')

        # probeer de post
        url = self.url_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url)
        self.assert404(resp, 'Geen passende wedstrijdklasse')
Exemplo n.º 10
0
    def test_team_udvl(self):
        # controleer dat het filter voor uiterste datum van lidmaatschap werkt

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

        comp = Competitie.objects.get(afstand='18')
        #   sporter1.sinds_datum = datetime.date(year=2010, month=11, day=12)
        comp.uiterste_datum_lid = datetime.date(year=2010, month=11, day=11)
        comp.save()

        # 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
        # geef ook team schieten en opmerking door
        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)

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

        inschrijving = RegioCompetitieSchutterBoog.objects.all()[0]
        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)      # belangrijkste testresultaat
Exemplo n.º 11
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'))
Exemplo n.º 12
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
Exemplo n.º 13
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)
Exemplo n.º 14
0
    def test_inschrijven_methode3_twee_dagdelen(self):
        regio_105 = NhbRegio.objects.get(pk=105)
        self.nhbver.regio = regio_105
        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_105)
        deelcomp.inschrijf_methode = INSCHRIJF_METHODE_3
        deelcomp.toegestane_dagdelen = 'ZAT,ZOm'
        deelcomp.save()

        # log in as sporter
        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')
        deelcomp = DeelCompetitie.objects.get(competitie__afstand='18', 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.assertContains(resp, 'eigen blazoen')
        self.assertContains(resp, 'Zaterdag')
        self.assertContains(resp, 'Zondagmiddag')
        self.assertNotContains(resp, 's Avonds')
        self.assertNotContains(resp, 'Weekend')

        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)
        res = score_indiv_ag_opslaan(sporterboog, 18, 8.18, None, 'Test')
        self.assertTrue(res)

        # schrijf in met een niet toegestaan dagdeel
        url = self.url_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'dagdeel': 'AV'})
        self.assert404(resp)     # 404 = Not allowed
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)

        # schrijf in met dagdeel, team schieten en opmerking door
        url = self.url_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'wil_in_team': 'on',
                                          'dagdeel': 'ZAT',
                                          'opmerking': 'Hallo nogmaals!\n' * 50})
        self.assert_is_redirect(resp, self.url_profiel)
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 1)

        inschrijving = RegioCompetitieSchutterBoog.objects.all()[0]
        self.assertTrue(inschrijving.inschrijf_voorkeur_team)
        self.assertTrue(len(inschrijving.inschrijf_notitie) > 480)
        self.assertEqual(inschrijving.inschrijf_voorkeur_dagdeel, 'ZAT')

        # bad dagdeel
        sporterboog = SporterBoog.objects.get(boogtype__afkorting='BB')
        deelcomp = DeelCompetitie.objects.get(competitie__afstand='18', nhb_regio=self.nhbver.regio)
        url = self.url_aanmelden % (deelcomp.pk, sporterboog.pk)
        with self.assert_max_queries(20):
            resp = self.client.post(url, {'dagdeel': 'XX'})
        self.assert404(resp)     # 404 = Not allowed
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 1)
Exemplo n.º 15
0
    def test_afmelden(self):
        # afmelden als anon
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_afmelden % 0)
        self.assert404(resp)     # 404 = Not found

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

        # afmelden als BB (niet NHB lid)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_afmelden % 0)
        self.assert404(resp)     # 404 = Not found

        # afmelden als inactief lid
        self.client.logout()
        self.e2e_login(self.account_geenlid)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_afmelden % 0)
        self.assert404(resp)     # 404 = Not found

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

        # aanmelden voor de 18m Recurve, met AG
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 0)
        sporterboog_18 = 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, 18, 8.18, None, 'Test')
        self.assertTrue(res)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_aanmelden % (deelcomp.pk, sporterboog_18.pk))
        self.assert_is_redirect(resp, self.url_profiel)
        inschrijving_18 = RegioCompetitieSchutterBoog.objects.all()[0]

        # aanmelden voor de 25m BB, zonder AG
        sporterboog_25 = SporterBoog.objects.get(boogtype__afkorting='BB')
        deelcomp = DeelCompetitie.objects.get(competitie__afstand='25', nhb_regio=self.nhbver.regio)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_aanmelden % (deelcomp.pk, sporterboog_25.pk))
        self.assert_is_redirect(resp, self.url_profiel)

        # afmelden van de 18m
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 2)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_afmelden % inschrijving_18.pk)
        self.assert_is_redirect(resp, self.url_profiel)
        self.assertEqual(RegioCompetitieSchutterBoog.objects.count(), 1)

        # illegaal inschrijving nummer
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_afmelden % 999999)
        self.assert404(resp)     # 404 = Not found

        # niet bestaand inschrijving nummer
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_afmelden % 'hoi')
        self.assert404(resp)     # 404 = Not found

        # sporterboog hoort niet bij gebruiker
        inschrijving_25 = RegioCompetitieSchutterBoog.objects.all()[0]
        self.client.logout()
        self.e2e_login(self.account_twee)
        with self.assert_max_queries(20):
            resp = self.client.post(self.url_afmelden % inschrijving_25.pk)
        self.assert403(resp)
Exemplo n.º 16
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