def test_all(self): # anon self.client.logout() with self.assert_max_queries(20): resp = self.client.get(self.url_top) self.assert403(resp) # gebruiker self.e2e_login(self.account) with self.assert_max_queries(20): resp = self.client.get(self.url_top) self.assert403(resp) # beheerder self.account.is_BB = True self.account.save() self.e2e_login(self.account) with self.assert_max_queries(20): resp = self.client.get(self.url_top) self.assertEqual(resp.status_code, 200) # 200 = OK self.assert_html_ok(resp) self.assert_template_used( resp, ('handleiding/Hoofdpagina.dtl', 'plein/site_layout.dtl')) url = reverse_handleiding(None, settings.HANDLEIDING_TOP) self.assertEqual(url, self.url_page % settings.HANDLEIDING_TOP) # doorloop alle handleiding pagina for page in settings.HANDLEIDING_PAGINAS: url = self.url_page % page with self.assert_max_queries(20): resp = self.client.get(url) self.assertEqual(resp.status_code, 200) # 200 = OK self.assert_html_ok(resp)
def get(self, request, *args, **kwargs): """ called by the template system to get the context data for the template """ if not is_browser_supported(request): return redirect('Plein:niet-ondersteund') # zet alles goed voor bezoekers / geen rol template = TEMPLATE_PLEIN_BEZOEKER context = dict() # ga naar live server banner tonen? context['ga_naar_live_server'] = settings.IS_TEST_SERVER if request.user.is_authenticated: rol_nu = rol_get_huidige(request) if rol_nu == Rollen.ROL_SPORTER: template = TEMPLATE_PLEIN_SPORTER elif rol_nu == Rollen.ROL_NONE or rol_nu is None: # gebruik de bezoeker pagina pass else: # beheerder template = TEMPLATE_PLEIN_BEHEERDER handleiding_pagina = ROL2HANDLEIDING_PAGINA[rol_nu] context['handleiding_url'] = reverse_handleiding( request, handleiding_pagina) if rol_nu == Rollen.ROL_BB: context['rol_is_bb'] = True elif rol_nu == Rollen.ROL_BKO: context['rol_is_bko'] = True elif rol_nu == Rollen.ROL_RKO: context['rol_is_rko'] = True elif rol_nu == Rollen.ROL_RCL: context['rol_is_rcl'] = True elif rol_nu == Rollen.ROL_HWL: context['rol_is_hwl'] = True elif rol_nu == Rollen.ROL_WL: context['rol_is_wl'] = True elif rol_nu == Rollen.ROL_SEC: context['rol_is_sec'] = True else: # pragma: no cover # vangnet voor nieuwe rollen raise ValueError("PleinView: onbekende rol %s" % rol_nu) context['huidige_rol'] = rol_get_beschrijving(request) # kijk hoeveel taken er open staan eval_open_taken(request) context['naam_site'] = settings.NAAM_SITE context['email_support'] = settings.EMAIL_SUPPORT menu_dynamics(self.request, context) return render(request, template, context)
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) context['show_vhpg'], context['vhpg'] = account_needs_vhpg( self.request.user) context['huidige_rol'] = rol_get_beschrijving(self.request) if self.account.is_staff: context['url_admin_site'] = reverse('admin:index') context['url_login_as'] = reverse('Account:account-wissel') # als we hier komen weten is de tweede factor gekoppeld is # de controle van de tweede factor moet misschien nog uitgevoerd worden context['show_otp_controle'] = not account_rechten_is_otp_verified( self.request) if context['show_vhpg']: context['show_beheerder_intro'] = True context['wiki_2fa_url'] = reverse_handleiding(self.request, settings.HANDLEIDING_2FA) context['wiki_rollen'] = reverse_handleiding( self.request, settings.HANDLEIDING_ROLLEN) context['wiki_intro_nieuwe_beheerders'] = reverse_handleiding( self.request, settings.HANDLEIDING_INTRO_NIEUWE_BEHEERDERS) # snel wissel kaartje voor BB if self.rol_nu == Rollen.ROL_BB: context['heeft_alle_rollen'] = self._maak_alle_rollen() context['url_wissel_naar_sec'] = reverse('Functie:wissel-naar-sec') # bedoeld voor de testsuite, maar kan geen kwaad context['insert_meta'] = True context['meta_rol'] = rol2url[self.rol_nu] if self.functie_nu: context[ 'meta_functie'] = self.functie_nu.beschrijving # template doet html escaping else: context['meta_functie'] = "" eval_open_taken(self.request, forceer=True) menu_dynamics(self.request, context, actief='wissel-van-rol') return context
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: regio_nr = int( kwargs['regio_nr'][:6]) # afkappen voor de veiligheid comp_pk = int(kwargs['comp_pk'][:6]) # afkappen voor de veiligheid deelcomp = (DeelCompetitie.objects.select_related( 'competitie', 'nhb_regio').get(competitie=comp_pk, laag=LAAG_REGIO, nhb_regio__regio_nr=regio_nr)) except (ValueError, DeelCompetitie.DoesNotExist): raise Http404() if deelcomp.functie != self.functie_nu: # niet de beheerder raise PermissionDenied() deelcomp.competitie.bepaal_fase() if deelcomp.competitie.fase > 'F': raise Http404('Verkeerde competitie fase') if deelcomp.competitie.fase > 'A': context['readonly_na_fase_A'] = True if deelcomp.competitie.fase > 'D': context['readonly_na_fase_D'] = True context['deelcomp'] = deelcomp context['opt_team_alloc'] = opts = list() obj = SimpleNamespace() obj.choice_name = 'vast' obj.beschrijving = 'Statisch (vaste teams)' obj.actief = deelcomp.regio_heeft_vaste_teams opts.append(obj) obj = SimpleNamespace() obj.choice_name = 'vsg' obj.beschrijving = 'Dynamisch (voortschrijdend gemiddelde)' obj.actief = not deelcomp.regio_heeft_vaste_teams opts.append(obj) context['opt_team_punten'] = opts = list() obj = SimpleNamespace() obj.choice_name = 'F1' obj.beschrijving = 'Formule 1 systeem (10/8/6/5/4/3/2/1)' obj.actief = deelcomp.regio_team_punten_model == TEAM_PUNTEN_MODEL_FORMULE1 opts.append(obj) obj = SimpleNamespace() obj.choice_name = '2P' obj.beschrijving = 'Twee punten systeem (2/1/0)' obj.actief = deelcomp.regio_team_punten_model == TEAM_PUNTEN_MODEL_TWEE opts.append(obj) obj = SimpleNamespace() obj.choice_name = 'SS' obj.beschrijving = 'Cumulatief: som van team totaal' obj.actief = deelcomp.regio_team_punten_model == TEAM_PUNTEN_MODEL_SOM_SCORES opts.append(obj) context['url_opslaan'] = reverse('CompRegio:regio-instellingen', kwargs={ 'comp_pk': deelcomp.competitie.pk, 'regio_nr': deelcomp.nhb_regio.regio_nr }) context['wiki_rcl_regio_instellingen_url'] = reverse_handleiding( self.request, settings.HANDLEIDING_RCL_INSTELLINGEN_REGIO) menu_dynamics_competitie(self.request, context, comp_pk=deelcomp.competitie.pk) return context
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: deelcomp_pk = int( kwargs['deelcomp_pk'][:6]) # afkappen voor de veiligheid deelcomp = (DeelCompetitie.objects.select_related( 'competitie', 'nhb_regio', 'nhb_regio__rayon').get(pk=deelcomp_pk, laag=LAAG_REGIO)) except (ValueError, DeelCompetitie.DoesNotExist): raise Http404('Competitie niet gevonden') if deelcomp.nhb_regio != self.functie_nu.nhb_regio: raise PermissionDenied('Niet de beheerder van deze regio') context['deelcomp'] = deelcomp comp = deelcomp.competitie comp.bepaal_fase() context['readonly'] = readonly = (comp.fase > 'D') context['regio'] = deelcomp.nhb_regio poules = ( RegiocompetitieTeamPoule.objects.prefetch_related('teams').filter( deelcompetitie=deelcomp).annotate( team_count=Count('teams')).order_by('beschrijving', 'pk')) team_pk2poule = dict() for poule in poules: poule.url_wijzig = reverse('CompRegio:wijzig-poule', kwargs={'poule_pk': poule.pk}) for team in poule.teams.all(): team_pk2poule[team.pk] = poule # for context['poules'] = poules teams = (RegiocompetitieTeam.objects.filter( deelcompetitie=deelcomp).select_related( 'klasse', 'klasse__team').order_by('klasse__team__volgorde')) for team in teams: try: poule = team_pk2poule[team.pk] except KeyError: pass else: team.poule = poule # for context['teams'] = teams if not readonly: context['url_nieuwe_poule'] = reverse( 'CompRegio:regio-poules', kwargs={'deelcomp_pk': deelcomp.pk}) context['wiki_rcl_poules_url'] = reverse_handleiding( self.request, settings.HANDLEIDING_POULES) menu_dynamics_competitie(self.request, context, comp_pk=deelcomp.competitie.pk) return context
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: rk_deelcomp_pk = int( kwargs['rk_deelcomp_pk'][:6]) # afkappen voor de veiligheid deelcomp_rk = ( DeelCompetitie.objects.select_related('competitie').get( pk=rk_deelcomp_pk, laag=LAAG_RK)) except (ValueError, DeelCompetitie.DoesNotExist): raise Http404('Competitie niet gevonden') # controleer dat de juiste RKO aan de knoppen zit if self.functie_nu != deelcomp_rk.functie: raise PermissionDenied() # niet de juiste RKO context['wkl_indiv'] = wkl_indiv = (CompetitieKlasse.objects.exclude( indiv__niet_voor_rk_bk=True).filter( competitie=deelcomp_rk.competitie, team=None).select_related( 'indiv__boogtype').order_by('indiv__volgorde')) context['wkl_teams'] = wkl_teams = (CompetitieKlasse.objects.filter( competitie=deelcomp_rk.competitie, is_voor_teams_rk_bk=True, indiv=None).order_by('team__volgorde')) # zet de default limieten pk2wkl = dict() for wkl in wkl_indiv: wkl.limiet = 24 # default limiet wkl.sel = 'sel_%s' % wkl.pk pk2wkl[wkl.pk] = wkl # for for wkl in wkl_teams: # ERE klasse: 12 teams # overige: 8 teams wkl.limiet = 12 if "ERE" in wkl.team.beschrijving else 8 wkl.sel = 'sel_%s' % wkl.pk pk2wkl[wkl.pk] = wkl # for # aanvullen met de opgeslagen limieten for limiet in (DeelcompetitieKlasseLimiet.objects.select_related( 'klasse').filter(deelcompetitie=deelcomp_rk, klasse__in=pk2wkl.keys())): wkl = pk2wkl[limiet.klasse.pk] wkl.limiet = limiet.limiet # for context['url_opslaan'] = reverse( 'CompRayon:rayon-limieten', kwargs={'rk_deelcomp_pk': deelcomp_rk.pk}) context['url_terug'] = reverse('Competitie:kies') context['wiki_rk_schutters'] = reverse_handleiding( self.request, settings.HANDLEIDING_RK_SELECTIE) menu_dynamics_competitie(self.request, context, comp_pk=deelcomp_rk.competitie.pk) return context
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) # er zijn 2 situaties: # 1) regiocompetities zijn nog niet afgesloten --> verwijst naar pagina tussenstand rayon # 2) deelnemers voor RK zijn vastgesteld --> toon lijst try: rk_deelcomp_pk = int( kwargs['rk_deelcomp_pk'][:6]) # afkappen voor de veiligheid deelcomp_rk = (DeelCompetitie.objects.select_related( 'competitie', 'nhb_rayon').get(pk=rk_deelcomp_pk, laag=LAAG_RK)) except (ValueError, DeelCompetitie.DoesNotExist): raise Http404('Competitie niet gevonden') # controleer dat de juiste RKO aan de knoppen zit if self.rol_nu == Rollen.ROL_RKO and self.functie_nu != deelcomp_rk.functie: raise PermissionDenied() # niet de juiste RKO alles_afgesloten, regio_status = self._get_regio_status( deelcomp_rk.competitie) context['regio_status'] = regio_status context['deelcomp_rk'] = deelcomp_rk if not deelcomp_rk.heeft_deelnemerslijst: # situatie 1) context['url_uitslagen'] = reverse( 'CompUitslagen:uitslagen-rayon-indiv-n', kwargs={ 'comp_pk': deelcomp_rk.competitie.pk, 'comp_boog': 'r', 'rayon_nr': deelcomp_rk.nhb_rayon.rayon_nr }) deelnemers = list() else: # situatie 2) deelnemers = ( KampioenschapSchutterBoog.objects.select_related( 'deelcompetitie', 'klasse__indiv', 'sporterboog__sporter', 'bij_vereniging').filter( deelcompetitie=deelcomp_rk, volgorde__lte=48) # max 48 schutters per klasse tonen .order_by( 'klasse__indiv__volgorde', # groepeer per klasse 'volgorde', # oplopend op volgorde (dubbelen mogelijk) '-gemiddelde')) # aflopend op gemiddelde context['url_download'] = reverse( 'CompRayon:lijst-rk-als-bestand', kwargs={'rk_deelcomp_pk': deelcomp_rk.pk}) wkl2limiet = dict() # [pk] = aantal for limiet in (DeelcompetitieKlasseLimiet.objects.select_related( 'klasse').filter(deelcompetitie=deelcomp_rk)): wkl2limiet[limiet.klasse.pk] = limiet.limiet # for aantal_afgemeld = 0 aantal_bevestigd = 0 aantal_onbekend = 0 aantal_klassen = 0 aantal_attentie = 0 klasse = -1 limiet = 24 for deelnemer in deelnemers: deelnemer.break_klasse = (klasse != deelnemer.klasse.indiv.volgorde) if deelnemer.break_klasse: aantal_klassen += 1 deelnemer.klasse_str = deelnemer.klasse.indiv.beschrijving klasse = deelnemer.klasse.indiv.volgorde try: limiet = wkl2limiet[deelnemer.klasse.pk] except KeyError: limiet = 24 sporter = deelnemer.sporterboog.sporter deelnemer.naam_str = "[%s] %s" % (sporter.lid_nr, sporter.volledige_naam()) if not deelnemer.bij_vereniging: aantal_attentie += 1 deelnemer.url_wijzig = reverse( 'CompRayon:wijzig-status-rk-deelnemer', kwargs={'deelnemer_pk': deelnemer.pk}) if deelnemer.rank > limiet: deelnemer.is_reserve = True # tel de status van de deelnemers en eerste 8 reserveschutters if deelnemer.rank <= limiet + 8: if deelnemer.deelname == DEELNAME_NEE: aantal_afgemeld += 1 elif deelnemer.deelname == DEELNAME_JA: aantal_bevestigd += 1 else: aantal_onbekend += 1 # for context['deelnemers'] = deelnemers context['aantal_klassen'] = aantal_klassen if deelcomp_rk.heeft_deelnemerslijst: context['aantal_afgemeld'] = aantal_afgemeld context['aantal_onbekend'] = aantal_onbekend context['aantal_bevestigd'] = aantal_bevestigd context['aantal_attentie'] = aantal_attentie context['wiki_rk_schutters'] = reverse_handleiding( self.request, settings.HANDLEIDING_RK_SELECTIE) menu_dynamics_competitie(self.request, context, comp_pk=deelcomp_rk.competitie.pk) return context