def get_context_data(self, **kwargs): """ called by the template system to get the context data for the template """ context = super().get_context_data(**kwargs) try: sporter_pk = kwargs['sporter_pk'] except KeyError: sporter_pk = None sporter = self._get_sporter_or_404(self.request, sporter_pk) context[ 'geen_wedstrijden'] = geen_wedstrijden = sporter.bij_vereniging and sporter.bij_vereniging.geen_wedstrijden context['bogen'] = self._get_bogen(sporter, geen_wedstrijden) context['voorkeuren'], _ = SporterVoorkeuren.objects.get_or_create( sporter=sporter) context['sporter'] = sporter if self.rol_nu == Rollen.ROL_HWL: actief = 'vereniging' context['sporter_pk'] = sporter.pk context['is_hwl'] = True else: # niet de HWL maar de sporter zelf actief = 'sporter-profiel' if rol_mag_wisselen(self.request): # sporter is beheerder, dus toon opt-out opties context['email'] = sporter.account.accountemail_set.all()[0] context['opslaan_url'] = reverse('Sporter:voorkeuren') menu_dynamics(self.request, context, actief=actief) return context
def test_geen_sessie(self): # probeer beveiliging tegen afwezigheid sessie variabelen # typisch tweedelijns, want views checken user.is_authenticated request = self.client self.assertTrue( SESSIONVAR_ROL_MAG_WISSELEN not in request.session.keys()) res = rol_mag_wisselen(request) self.assertFalse(res) self.assertTrue(SESSIONVAR_ROL_HUIDIGE not in request.session.keys()) rol_activeer_rol(request, 'schutter') self.assertTrue(SESSIONVAR_ROL_HUIDIGE not in request.session.keys()) rol_activeer_functie(request, 'geen getal') self.assertTrue( SESSIONVAR_ROL_PALLET_FUNCTIES not in request.session.keys()) rol_activeer_functie(request, 0) self.assertTrue( SESSIONVAR_ROL_PALLET_VAST not in request.session.keys()) pallet = [tup for tup in rol_enum_pallet(request)] self.assertEqual(len(pallet), 0) rol_activeer_rol(request, 'geen') self.assertTrue( SESSIONVAR_ROL_BESCHRIJVING not in request.session.keys()) self.assertEqual(rol_get_beschrijving(request), "?")
def test_func(self): """ called by the UserPassesTestMixin to verify the user has permissions to use this view """ # evalueer opnieuw welke rechten de gebruiker heeft rol_evalueer_opnieuw(self.request) self.rol_nu, self.functie_nu = rol_get_huidige_functie(self.request) return self.request.user.is_authenticated and rol_mag_wisselen( self.request)
def menu_dynamics(request, context, actief='hetplein'): """ Deze functie update the template context voor het dynamische gedrag van menu zoals de 'Andere rollen' en het menu item dat actief is. """ # welke regel van het menu op laten lichten? context['menu_actief'] = actief if not (actief in ACTIEF_OPTIES or actief.startswith('competitie-')): raise AssertionError("menu_dynamics: Onbekende 'actief' waarde: %s" % repr(actief)) # test server banner tonen? context['is_test_server'] = settings.IS_TEST_SERVER # zet context variabelen om aan te geven welke optionele delen van het menu getoond moeten worden context['toon_kalender'] = False if request.user.is_authenticated: # sidenav naam context['menu_toon_naam'] = True # wissel van rol toegestaan? if rol_mag_wisselen(request): rol = rol_get_huidige(request) context['toon_kalender'] = True # sidenav rol context['menu_rol_beschrijving'] = rol_get_beschrijving(request) # activeer menu 'wissel van rol' context['menu_show_wisselvanrol'] = True if rol in (Rollen.ROL_SEC, Rollen.ROL_HWL, Rollen.ROL_WL): context['menu_toon_vereniging'] = True if rol == Rollen.ROL_SPORTER: context['menu_toon_sporter_profiel'] = True if rol in (Rollen.ROL_BKO, Rollen.ROL_RKO, Rollen.ROL_RCL, Rollen.ROL_SEC, Rollen.ROL_HWL, Rollen.ROL_WL): context['toon_kalender'] = False # taken if rol in (Rollen.ROL_BB, Rollen.ROL_BKO, Rollen.ROL_RKO, Rollen.ROL_RCL, Rollen.ROL_HWL): context['menu_show_taken'] = True context['menu_aantal_open_taken'] = aantal_open_taken(request) else: context['menu_toon_sporter_profiel'] = True # het label met de scherm grootte boven aan het scherm context['toon_schermgrootte'] = settings.DEBUG
def test_func(self): """ called by the UserPassesTestMixin to verify the user has permissions to use this view """ return rol_mag_wisselen(self.request)
def post(self, request, *args, **kwargs): """ Deze functie wordt aangeroepen als een POST request ontvangen is.""" sporter = self._get_sporter_or_404( request, request.POST.get('sporter_pk', None)) # sla de nieuwe voorkeuren op in SporterBoog records (1 per boogtype) # werkt alleen na een GET (maakt de SporterBoog records aan) for obj in (SporterBoog.objects.filter( sporter=sporter).select_related('boogtype')): # wedstrijdboog old_voor_wedstrijd = obj.voor_wedstrijd obj.voor_wedstrijd = False if request.POST.get('schiet_' + obj.boogtype.afkorting, None): obj.voor_wedstrijd = True # informatie over de boog old_heeft_interesse = obj.heeft_interesse obj.heeft_interesse = False if request.POST.get('info_' + obj.boogtype.afkorting, None): obj.heeft_interesse = True if (old_voor_wedstrijd != obj.voor_wedstrijd or old_heeft_interesse != obj.heeft_interesse): # wijzigingen opslaan obj.save() # for voorkeuren, _ = SporterVoorkeuren.objects.get_or_create( sporter=sporter) old_eigen_blazoen = voorkeuren.voorkeur_eigen_blazoen voorkeuren.voorkeur_eigen_blazoen = False if request.POST.get('voorkeur_eigen_blazoen', None): voorkeuren.voorkeur_eigen_blazoen = True old_voorkeur_meedoen_competitie = voorkeuren.voorkeur_meedoen_competitie voorkeuren.voorkeur_meedoen_competitie = False if request.POST.get('voorkeur_meedoen_competitie', None): voorkeuren.voorkeur_meedoen_competitie = True if (old_voorkeur_meedoen_competitie != voorkeuren.voorkeur_meedoen_competitie or old_eigen_blazoen != voorkeuren.voorkeur_eigen_blazoen): # wijzigingen opslaan voorkeuren.save(update_fields=[ 'voorkeur_eigen_blazoen', 'voorkeur_meedoen_competitie' ]) if sporter.para_classificatie: para_notitie = request.POST.get('para_notitie', '') if para_notitie != voorkeuren.opmerking_para_sporter: # wijziging opslaan voorkeuren.opmerking_para_sporter = para_notitie voorkeuren.save(update_fields=['opmerking_para_sporter']) old_disc_outdoor = voorkeuren.voorkeur_discipline_outdoor voorkeuren.voorkeur_discipline_outdoor = False if request.POST.get('voorkeur_disc_outdoor', None): voorkeuren.voorkeur_discipline_outdoor = True old_disc_indoor = voorkeuren.voorkeur_discipline_indoor voorkeuren.voorkeur_discipline_indoor = False if request.POST.get('voorkeur_disc_indoor', None): voorkeuren.voorkeur_discipline_indoor = True old_disc_25m1p = voorkeuren.voorkeur_discipline_25m1pijl voorkeuren.voorkeur_discipline_25m1pijl = False if request.POST.get('voorkeur_disc_25m1p', None): voorkeuren.voorkeur_discipline_25m1pijl = True old_disc_clout = voorkeuren.voorkeur_discipline_clout voorkeuren.voorkeur_discipline_clout = False if request.POST.get('voorkeur_disc_clout', None): voorkeuren.voorkeur_discipline_clout = True old_disc_veld = voorkeuren.voorkeur_discipline_veld voorkeuren.voorkeur_discipline_veld = False if request.POST.get('voorkeur_disc_veld', None): voorkeuren.voorkeur_discipline_veld = True old_disc_run = voorkeuren.voorkeur_discipline_run voorkeuren.voorkeur_discipline_run = False if request.POST.get('voorkeur_disc_run', None): voorkeuren.voorkeur_discipline_run = True old_disc_3d = voorkeuren.voorkeur_discipline_3d voorkeuren.voorkeur_discipline_3d = False if request.POST.get('voorkeur_disc_3d', None): voorkeuren.voorkeur_discipline_3d = True if (old_disc_outdoor != voorkeuren.voorkeur_discipline_outdoor or old_disc_indoor != voorkeuren.voorkeur_discipline_indoor or old_disc_25m1p != voorkeuren.voorkeur_discipline_25m1pijl or old_disc_clout != voorkeuren.voorkeur_discipline_clout or old_disc_veld != voorkeuren.voorkeur_discipline_veld or old_disc_run != voorkeuren.voorkeur_discipline_run or old_disc_3d != voorkeuren.voorkeur_discipline_3d): # wijzigingen opslaan voorkeuren.save(update_fields=[ 'voorkeur_discipline_25m1pijl', 'voorkeur_discipline_outdoor', 'voorkeur_discipline_indoor', 'voorkeur_discipline_clout', 'voorkeur_discipline_veld', 'voorkeur_discipline_run', 'voorkeur_discipline_3d' ]) del voorkeuren if self.rol_nu != Rollen.ROL_HWL: if rol_mag_wisselen(self.request): account = request.user email = account.accountemail_set.all()[0] updated = list() optout_nieuwe_taak = False if request.POST.get('optout_nieuwe_taak'): optout_nieuwe_taak = True if email.optout_nieuwe_taak != optout_nieuwe_taak: # wijziging doorvoeren email.optout_nieuwe_taak = optout_nieuwe_taak updated.append('optout_nieuwe_taak') optout_herinnering_taken = False if request.POST.get('optout_herinnering_taken'): optout_herinnering_taken = True if email.optout_herinnering_taken != optout_herinnering_taken: # wijziging doorvoeren email.optout_herinnering_taken = optout_herinnering_taken updated.append('optout_herinnering_taken') # wijziging opslaan if len(updated): email.save(update_fields=updated) if self.rol_nu == Rollen.ROL_HWL: # stuur de HWL terug naar zijn ledenlijst return HttpResponseRedirect(reverse('Vereniging:leden-voorkeuren')) return HttpResponseRedirect(reverse('Sporter:profiel'))