示例#1
0
    def test_gedeelde_locatie(self):
        # login als BB
        self.e2e_login_and_pass_otp(self.testdata.account_bb)
        self.e2e_wisselnaarrol_bb()
        self.e2e_check_rol('BB')

        # maak een locatie aan die door twee verenigingen gedeeld wordt
        loc = WedstrijdLocatie()
        loc.save()
        loc.verenigingen.add(self.nhbver1)
        loc.verenigingen.add(self.nhbver2)

        # haal de details op
        url = self.url_accommodatie_details % self.nhbver1.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, ('vereniging/accommodatie-details.dtl', 'plein/site_layout.dtl'))

        # haal de details op
        url = self.url_accommodatie_details % self.nhbver2.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, ('vereniging/accommodatie-details.dtl', 'plein/site_layout.dtl'))
示例#2
0
    def _maak_externe_locatie(ver):
        # voeg een locatie toe
        locatie = WedstrijdLocatie(
            baan_type='E',  # externe locatie
            naam='Test locatie')
        locatie.save()
        locatie.verenigingen.add(ver)

        return locatie
示例#3
0
 def _maak_accommodatie_binnen(ver):
     # voeg een locatie toe
     binnen_locatie = WedstrijdLocatie(
         baan_type='X',  # onbekend
         adres='Verweg 1, Om de hoek',
         adres_uit_crm=True)
     binnen_locatie.save()
     binnen_locatie.verenigingen.add(ver)
     return binnen_locatie
示例#4
0
 def _maak_accommodatie_buiten(ver):
     # voeg een locatie toe
     buiten_locatie = WedstrijdLocatie(
         baan_type='B',  # buiten
         adres_uit_crm=False,
         discipline_outdoor=True,
         buiten_banen=4)
     buiten_locatie.save()
     buiten_locatie.verenigingen.add(ver)
     return buiten_locatie
    def post(self, request, *args, **kwargs):
        """ maak een nieuwe externe locatie aan """

        ver = self.get_vereniging()

        if not self.functie_nu or self.functie_nu.rol != 'HWL' or self.functie_nu.nhb_ver != ver:
            raise PermissionDenied('Alleen HWL mag een locatie toevoegen')

        locatie = WedstrijdLocatie(baan_type='E')  # externe locatie
        locatie.save()
        locatie.verenigingen.add(ver)

        # terug naar de lijst
        url = reverse('Vereniging:externe-locaties',
                      kwargs={'vereniging_pk': ver.pk})

        return HttpResponseRedirect(url)
示例#6
0
    def test_wedstrijdlocatie(self):
        # maak een locatie en koppel aan de vereniging
        loc = WedstrijdLocatie()
        # loc.adres = "Dubbelbaan 16\n1234AB Schietbuurt"
        loc.save()
        loc.verenigingen.add(self.nhbver1)

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

        # check voor het kaartje om de doel details aan te passen
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_overzicht)
        urls = self.extract_all_urls(resp)
        urls2 = [url for url in urls if url.startswith('/vereniging/accommodatie-details/')]
        self.assertEqual(len(urls2), 1)
示例#7
0
    def post(self, request, *args, **kwargs):
        """ Deze functie wordt aangeroepen als de gebruik op de 'opslaan' knop drukt
            op het accommodatie-details formulier.
        """
        binnen_locatie, buiten_locatie, _, nhbver = self._get_locaties_nhbver_or_404(**kwargs)

        rol_nu, functie_nu = rol_get_huidige_functie(self.request)

        if not self._mag_wijzigen(nhbver, rol_nu, functie_nu):
            raise PermissionDenied('Wijzigen niet toegestaan')

        if request.POST.get('verwijder_buitenbaan', None):
            if buiten_locatie:
                buiten_locatie.zichtbaar = False
                buiten_locatie.save()
            if 'is_ver' in kwargs:  # wordt gezet door VerenigingAccommodatieDetailsView
                urlconf = 'Vereniging:vereniging-accommodatie-details'
            else:
                urlconf = 'Vereniging:accommodatie-details'
            url = reverse(urlconf, kwargs={'vereniging_pk': nhbver.pk})
            return HttpResponseRedirect(url)

        if request.POST.get('maak_buiten_locatie', None):
            if buiten_locatie:
                if not buiten_locatie.zichtbaar:
                    buiten_locatie.zichtbaar = True
                    buiten_locatie.save()
            elif binnen_locatie:
                buiten = WedstrijdLocatie(
                                baan_type='B',
                                adres_uit_crm=False,
                                adres=binnen_locatie.adres,
                                plaats=binnen_locatie.plaats,
                                notities='')
                buiten.save()
                buiten.verenigingen.add(nhbver)

            if 'is_ver' in kwargs:  # wordt gezet door VerenigingAccommodatieDetailsView
                urlconf = 'Vereniging:vereniging-accommodatie-details'
            else:
                urlconf = 'Vereniging:accommodatie-details'
            url = reverse(urlconf, kwargs={'vereniging_pk': nhbver.pk})
            return HttpResponseRedirect(url)

        form = AccommodatieDetailsForm(request.POST)
        if not form.is_valid():
            raise Http404('Geen valide invoer')

        if binnen_locatie:
            msgs = list()
            data = form.cleaned_data.get('baan_type')
            if binnen_locatie.baan_type != data:
                old_str = BAANTYPE2STR[binnen_locatie.baan_type]
                new_str = BAANTYPE2STR[data]
                msgs.append("baan type aangepast van '%s' naar '%s'" % (old_str, new_str))
                binnen_locatie.baan_type = data

            data = form.cleaned_data.get('banen_18m')
            if binnen_locatie.banen_18m != data:
                msgs.append("Aantal 18m banen aangepast van %s naar %s" % (binnen_locatie.banen_18m, data))
                binnen_locatie.banen_18m = data

            data = form.cleaned_data.get('banen_25m')
            if binnen_locatie.banen_25m != data:
                msgs.append("Aantal 25m banen aangepast van %s naar %s" % (binnen_locatie.banen_25m, data))
                binnen_locatie.banen_25m = data

            # data = form.cleaned_data.get('max_dt')
            # if binnen_locatie.max_dt_per_baan != data:
            #     msgs.append("Max DT per baan aangepast van %s naar %s" % (binnen_locatie.max_dt_per_baan, data))
            #     binnen_locatie.max_dt_per_baan = data

            data_18 = form.cleaned_data.get('max_sporters_18m')
            data_25 = form.cleaned_data.get('max_sporters_25m')
            if data_18 is not None and data_25 is not None:
                if binnen_locatie.max_sporters_18m != data_18 or binnen_locatie.max_sporters_25m != data_25:
                    msgs.append("Max sporters 18m/25m aangepast van %s/%s naar %s/%s" % (binnen_locatie.max_sporters_18m, binnen_locatie.max_sporters_25m, data_18, data_25))
                    binnen_locatie.max_sporters_18m = data_18
                    binnen_locatie.max_sporters_25m = data_25

            if len(msgs) > 0:
                activiteit = "Aanpassingen aan binnen locatie van vereniging %s: %s" % (nhbver, "; ".join(msgs))
                schrijf_in_logboek(request.user, 'Accommodaties', activiteit)
                binnen_locatie.save()

            disc_old = binnen_locatie.disciplines_str()
            binnen_locatie.discipline_indoor = (str(binnen_locatie.banen_18m) != "0" or
                                                str(binnen_locatie.banen_25m) != "0")
            binnen_locatie.discipline_25m1pijl = False
            binnen_locatie.discipline_outdoor = False
            binnen_locatie.discipline_clout = False
            binnen_locatie.discipline_veld = False
            binnen_locatie.discipline_run = False
            binnen_locatie.discipline_3d = False
            disc_new = binnen_locatie.disciplines_str()
            if disc_old != disc_new:
                activiteit = "Aanpassing disciplines van binnen locatie van vereniging %s: [%s] (was [%s])" % (
                                nhbver, disc_new, disc_old)
                schrijf_in_logboek(request.user, 'Accommodaties', activiteit)
                binnen_locatie.save()

            data = form.cleaned_data.get('notities')
            data = data.replace('\r\n', '\n')
            if binnen_locatie.notities != data:
                activiteit = "Aanpassing bijzonderheden van binnen locatie van vereniging %s: %s (was %s)" % (
                                nhbver,
                                repr(data.replace('\n', ' / ')),
                                repr(binnen_locatie.notities.replace('\n', ' / ')))
                schrijf_in_logboek(request.user, 'Accommodaties', activiteit)
                binnen_locatie.notities = data
                binnen_locatie.save()

        if buiten_locatie:
            msgs = list()
            updated = list()

            data = form.cleaned_data.get('buiten_banen')
            if buiten_locatie.buiten_banen != data:
                msgs.append("Aantal buiten banen aangepast van %s naar %s" % (buiten_locatie.buiten_banen, data))
                buiten_locatie.buiten_banen = data
                updated.append('buiten_banen')

            data = form.cleaned_data.get('buiten_max_afstand')
            if buiten_locatie.buiten_max_afstand != data:
                msgs.append("Maximale afstand aangepast van %s naar %s" % (buiten_locatie.buiten_max_afstand, data))
                buiten_locatie.buiten_max_afstand = data
                updated.append('buiten_max_afstand')

            if len(msgs) > 0:
                activiteit = "Aanpassingen aan buiten locatie van vereniging %s: %s" % (nhbver, "; ".join(msgs))
                schrijf_in_logboek(request.user, 'Accommodaties', activiteit)

            buiten_locatie.save(update_fields=updated)

            data = form.cleaned_data.get('buiten_notities')
            data = data.replace('\r\n', '\n')
            if buiten_locatie.notities != data:
                activiteit = "Aanpassing notitie van buiten locatie van vereniging %s: %s (was %s)" % (
                                    nhbver,
                                    repr(data.replace('\n', ' / ')),
                                    repr(buiten_locatie.notities.replace('\n', ' / ')))
                schrijf_in_logboek(request.user, 'Accommodaties', activiteit)
                buiten_locatie.notities = data
                buiten_locatie.save(update_fields=['notities'])

            disc_old = buiten_locatie.disciplines_str()
            buiten_locatie.discipline_25m1pijl = form.cleaned_data.get('disc_25m1p')
            buiten_locatie.discipline_outdoor = form.cleaned_data.get('disc_outdoor')
            buiten_locatie.discipline_indoor = False
            buiten_locatie.discipline_clout = form.cleaned_data.get('disc_clout')
            buiten_locatie.discipline_veld = form.cleaned_data.get('disc_veld')
            buiten_locatie.discipline_run = form.cleaned_data.get('disc_run')
            buiten_locatie.discipline_3d = form.cleaned_data.get('disc_3d')
            disc_new = buiten_locatie.disciplines_str()
            if disc_old != disc_new:
                activiteit = "Aanpassing disciplines van buiten locatie van vereniging %s: [%s] (was [%s])" % (
                                nhbver, disc_new, disc_old)
                schrijf_in_logboek(request.user, 'Accommodaties', activiteit)
                buiten_locatie.save()

        if 'is_ver' in kwargs:
            url = reverse('Vereniging:overzicht')
        else:
            url = reverse('Vereniging:lijst-verenigingen')

        return HttpResponseRedirect(url)
示例#8
0
    def setUp(self):
        """ eenmalige setup voor alle tests
            wordt als eerste aangeroepen
        """
        self._next_lid_nr = 100001

        self.rayon_1 = NhbRayon.objects.get(rayon_nr=1)
        self.rayon_2 = NhbRayon.objects.get(rayon_nr=2)
        self.regio_101 = NhbRegio.objects.get(regio_nr=101)
        self.regio_105 = NhbRegio.objects.get(regio_nr=105)
        self.regio_112 = NhbRegio.objects.get(regio_nr=112)

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Zuidelijke Club"
        ver.ver_nr = "1111"
        ver.regio = self.regio_112
        # secretaris kan nog niet ingevuld worden
        ver.save()
        self.nhbver_112 = ver

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

        loc = WedstrijdLocatie(banen_18m=1,
                               banen_25m=1,
                               adres='De Spanning 1, Houtdorp')
        loc.save()
        loc.verenigingen.add(ver)
        self.loc = loc

        # maak HWL functie aan voor deze vereniging
        self.functie_hwl = maak_functie("HWL Vereniging %s" % ver.ver_nr, "HWL")
        self.functie_hwl.nhb_ver = ver
        self.functie_hwl.save()

        # maak test leden aan die we kunnen koppelen aan beheerders functies
        self.account_bko_18 = self._prep_beheerder_lid('BKO')
        self.account_rko1_18 = self._prep_beheerder_lid('RKO1')
        self.account_rko2_18 = self._prep_beheerder_lid('RKO2')
        self.account_rcl101_18 = self._prep_beheerder_lid('RCL101')
        self.account_rcl101_25 = self._prep_beheerder_lid('RCL101-25')
        self.account_rcl112_18 = self._prep_beheerder_lid('RCL112')
        self.account_schutter = self._prep_beheerder_lid('Schutter')
        self.lid_sporter_1 = Sporter.objects.get(lid_nr=self.account_schutter.username)

        self.account_schutter2 = self._prep_beheerder_lid('Schutter2')
        self.lid_sporter_2 = Sporter.objects.get(lid_nr=self.account_schutter2.username)

        self.boog_r = BoogType.objects.get(afkorting='R')

        self.sporterboog = SporterBoog(sporter=self.lid_sporter_1,
                                       boogtype=self.boog_r,
                                       voor_wedstrijd=True)
        self.sporterboog.save()

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

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

        # klassengrenzen vaststellen om de competitie voorbij fase A te krijgen
        self.e2e_login_and_pass_otp(self.testdata.account_bb)
        self.e2e_wisselnaarrol_bb()
        self.url_klassengrenzen_vaststellen_18 = '/bondscompetities/%s/klassengrenzen/vaststellen/' % self.comp_18.pk
        resp = self.client.post(self.url_klassengrenzen_vaststellen_18)
        self.assert_is_redirect_not_plein(resp)  # check for success

        self.deelcomp_bond_18 = DeelCompetitie.objects.filter(competitie=self.comp_18,
                                                              laag=LAAG_BK)[0]
        self.deelcomp_rayon1_18 = DeelCompetitie.objects.filter(competitie=self.comp_18,
                                                                laag=LAAG_RK,
                                                                nhb_rayon=self.rayon_1)[0]
        self.deelcomp_regio_101 = DeelCompetitie.objects.filter(competitie=self.comp_18,
                                                                laag=LAAG_REGIO,
                                                                nhb_regio=self.regio_101)[0]

        self.functie_bko_18 = self.deelcomp_bond_18.functie
        self.functie_bko_18.accounts.add(self.account_bko_18)

        self.functie_rko1_18 = self.deelcomp_rayon1_18.functie
        self.functie_rko1_18.accounts.add(self.account_rko1_18)

        # maak nog een test vereniging, zonder HWL functie
        ver = NhbVereniging()
        ver.naam = "Kleine Club"
        ver.ver_nr = "1100"
        ver.regio = self.regio_101
        # secretaris kan nog niet ingevuld worden
        ver.save()
示例#9
0
    def setUp(self):
        """ eenmalige setup voor alle tests
            wordt als eerste aangeroepen
        """
        rayon_3 = NhbRayon.objects.get(rayon_nr=3)
        regio_111 = NhbRegio.objects.get(regio_nr=111)
        regio_101 = NhbRegio.objects.get(regio_nr=101)

        # RKO rol
        self.account_rko = self.e2e_create_account('rko', '*****@*****.**', 'RKO', accepteer_vhpg=True)
        self.functie_rko3 = Functie.objects.filter(rol="RKO", nhb_rayon=rayon_3)[0]
        self.functie_rko3.accounts.add(self.account_rko)

        # RCL rol
        self.account_rcl = self.e2e_create_account('rcl', '*****@*****.**', 'RCL', accepteer_vhpg=True)
        self.functie_rcl111 = Functie.objects.filter(rol="RCL", nhb_regio=regio_111)[0]
        self.functie_rcl111.accounts.add(self.account_rcl)

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

        # maak een locatie aan
        loc = WedstrijdLocatie()
        loc.adres = 'Grote baan'
        loc.save()
        loc.verenigingen.add(ver)
        self.loc1 = loc

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

        # maak de HWL functie
        self.functie_hwl1 = maak_functie("HWL test 1", "HWL")
        self.functie_hwl1.nhb_ver = self.nhbver1
        self.functie_hwl1.save()

        self.account_hwl1 = self.e2e_create_account('hwl1', '*****@*****.**', 'HWL', accepteer_vhpg=True)
        self.functie_hwl1.accounts.add(self.account_hwl1)

        # maak de WL functie
        self.functie_wl1 = maak_functie("WL test 1", "WL")
        self.functie_wl1.nhb_ver = self.nhbver1
        self.functie_wl1.save()

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club"
        ver.ver_nr = 1001
        ver.regio = regio_111
        ver.save()
        self.nhbver2 = ver

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

        # maak de HWL functie
        self.functie_hwl = maak_functie("HWL test", "HWL")
        self.functie_hwl.nhb_ver = self.nhbver2
        self.functie_hwl.save()

        # maak de WL functie
        self.functie_wl = maak_functie("WL test", "WL")
        self.functie_wl.nhb_ver = self.nhbver2
        self.functie_wl.save()

        # maak een locatie aan
        loc = WedstrijdLocatie()
        loc.adres = 'Kleine baan'
        loc.save()
        loc.verenigingen.add(ver)
        self.loc2 = loc

        # maak het lid aan dat HWL wordt
        sporter = Sporter()
        sporter.lid_nr = 100001
        sporter.geslacht = "M"
        sporter.voornaam = "Ramon"
        sporter.achternaam = "de Tester"
        sporter.email = "*****@*****.**"
        sporter.geboorte_datum = datetime.date(year=1972, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=2010, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.save()

        self.account_hwl = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam, accepteer_vhpg=True)
        self.functie_hwl.accounts.add(self.account_hwl)

        sporter.account = self.account_hwl
        sporter.save()
        self.sporter_100001 = sporter

        # maak het lid aan dat SEC wordt
        sporter = Sporter()
        sporter.lid_nr = 100002
        sporter.geslacht = "M"
        sporter.voornaam = "Ramon"
        sporter.achternaam = "de Secretaris"
        sporter.email = "*****@*****.**"
        sporter.geboorte_datum = datetime.date(year=1972, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=2010, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.save()

        self.account_sec = self.e2e_create_account(sporter.lid_nr, sporter.email, sporter.voornaam, accepteer_vhpg=True)
        self.functie_sec.accounts.add(self.account_sec)

        sporter.account = self.account_sec
        sporter.save()
        self.sporter_100002 = sporter

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