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'))
def _maak_externe_locatie(ver): # voeg een locatie toe locatie = WedstrijdLocatie( baan_type='E', # externe locatie naam='Test locatie') locatie.save() locatie.verenigingen.add(ver) return locatie
def _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
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)
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)
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)
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()
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()