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) account = self.request.user # haal de taken op (maximaal 50) # zorg dat alle open taken in beeld komen door te sorteren op is_afgerond context['taken'] = (Taak.objects.filter( toegekend_aan=account).order_by('is_afgerond', 'deadline')[:50]) count_open = count_afgerond = 0 for taak in context['taken']: if taak.is_afgerond: count_afgerond += 1 else: count_open += 1 taak.url = reverse('Taken:details', kwargs={'taak_pk': taak.pk}) # for context['heeft_open_taken'] = (count_open > 0) context['heeft_afgeronde_taken'] = (count_afgerond > 0) eval_open_taken(self.request) menu_dynamics(self.request, context, actief='taken') return context
def post(self, request, *args, **kwargs): try: taak_pk = int(kwargs['taak_pk'][:6]) # afkappen voor de veiligheid taak = Taak.objects.get(pk=taak_pk) except (ValueError, Taak.DoesNotExist): raise Http404('Geen valide taak') account = self.request.user # controleer dat deze taak bij de beheerder hoort if taak.toegekend_aan != account: raise PermissionDenied('Geen taak voor jouw account') if not taak.is_afgerond: if taak.log != "": taak.log += "\n" taak.log += "\n[%s] %s heeft deze taak gesloten" % (timezone.now(), account) taak.is_afgerond = True taak.save() eval_open_taken(request, forceer=True) return HttpResponseRedirect(reverse('Taken:overzicht'))
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(self, request, *args, **kwargs): """ called by the template system to get the context data for the template """ self.rol_nu, self.functie_nu = rol_get_huidige_functie(request) context = dict() try: comp_pk = int(kwargs['comp_pk'][:6]) # afkappen voor de veiligheid comp = (Competitie .objects .get(pk=comp_pk)) except (ValueError, Competitie.DoesNotExist): raise Http404('Competitie niet gevonden') comp.bepaal_fase() # zet comp.fase comp.bepaal_openbaar(self.rol_nu) # zet comp.is_openbaar comp.einde_fase_F = comp.laatst_mogelijke_wedstrijd + datetime.timedelta(days=7) comp.einde_fase_G = comp.einde_fase_F + datetime.timedelta(days=1) comp.einde_fase_K = comp.rk_eerste_wedstrijd - datetime.timedelta(days=14) comp.einde_fase_M = comp.rk_laatste_wedstrijd + datetime.timedelta(days=7) if 'B' <= comp.fase <= 'E': comp.url_inschrijvingen = reverse('CompInschrijven:lijst-regiocomp-alles', kwargs={'comp_pk': comp.pk}) context['comp'] = comp self._get_uitslagen(context, comp, request) # afhankelijk van de huidige functie vs de competitie leveren we 2 pagina's: # - beheerder # - bezoeker template = None if self.rol_nu in (Rollen.ROL_BKO, Rollen.ROL_RKO, Rollen.ROL_RCL): if self.functie_nu and self.functie_nu.comp_type == comp.afstand: # BKO/RKO/RCL van deze specifieke competitie template = self._get_competitie_overzicht_beheerder(request, context, comp) eval_open_taken(request) elif self.rol_nu == Rollen.ROL_BB: template = self._get_competitie_overzicht_beheerder(request, context, comp) eval_open_taken(request) elif self.rol_nu == Rollen.ROL_HWL: template = self._get_competitie_overzicht_hwl(request, context, comp) eval_open_taken(request) if not template: template = self._get_competitie_overzicht_schutter_bezoeker(context, comp) menu_dynamics_competitie(self.request, context, comp_pk=comp.pk) 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['nhb_ver'] = ver = self.functie_nu.nhb_ver context['clusters'] = ver.clusters.all() if self.functie_nu.nhb_ver.wedstrijdlocatie_set.exclude( baan_type=BAAN_TYPE_EXTERN).filter(zichtbaar=True).count() > 0: context['accommodatie_details_url'] = reverse( 'Vereniging:vereniging-accommodatie-details', kwargs={'vereniging_pk': ver.pk}) context['url_externe_locaties'] = reverse( 'Vereniging:externe-locaties', kwargs={'vereniging_pk': ver.pk}) if self.rol_nu == Rollen.ROL_SEC or ver.regio.is_administratief: # SEC comps = list() deelcomps = list() deelcomps_rk = list() else: # HWL of WL context['toon_competities'] = True # if rol_nu == Rollen.ROL_HWL: # context['toon_wedstrijdkalender'] = True comps = (Competitie.objects.filter(is_afgesloten=False).order_by( 'afstand', 'begin_jaar')) deelcomps = (DeelCompetitie.objects.filter( laag=LAAG_REGIO, competitie__is_afgesloten=False, nhb_regio=ver.regio).select_related('competitie')) deelcomps_rk = (DeelCompetitie.objects.filter( laag=LAAG_RK, competitie__is_afgesloten=False, nhb_rayon=ver.regio.rayon).select_related('competitie')) pks = (DeelcompetitieRonde.objects.filter( deelcompetitie__is_afgesloten=False, plan__wedstrijden__vereniging=ver).values_list( 'plan__wedstrijden', flat=True)) if CompetitieWedstrijd.objects.filter(pk__in=pks).count() > 0: context['heeft_wedstrijden'] = True # bepaal de volgorde waarin de kaartjes getoond worden # 1 - aanmelden # 2 - teams regio aanmelden / aanpassen # 3 - teams rk # 4 - ingeschreven # 5 - wie schiet waar (voor inschrijfmethode 1) context['kaartjes'] = kaartjes = list() prev_jaar = 0 prev_afstand = 0 for comp in comps: begin_jaar = comp.begin_jaar comp.bepaal_fase() if prev_jaar != begin_jaar or prev_afstand != comp.afstand: if len(kaartjes) and hasattr(kaartjes[-1], 'heading'): # er waren geen kaartjes voor die competitie - meld dat kaartje = SimpleNamespace() kaartje.geen_kaartjes = True kaartjes.append(kaartje) # nieuwe heading aanmaken kaartje = SimpleNamespace() kaartje.heading = comp.beschrijving kaartjes.append(kaartje) prev_jaar = begin_jaar prev_afstand = comp.afstand # 1 - leden aanmelden voor de competitie (niet voor de WL) if comp.fase < 'F' and self.rol_nu != Rollen.ROL_WL: kaartje = SimpleNamespace() kaartje.titel = "Aanmelden" kaartje.tekst = 'Leden aanmelden voor de %s.' % comp.beschrijving kaartje.url = reverse('CompInschrijven:leden-aanmelden', kwargs={'comp_pk': comp.pk}) if comp.afstand == '18': kaartje.img = static('plein/badge_nhb_indoor.png') else: kaartje.img = static('plein/badge_nhb_25m1p.png') if comp.fase < 'B': kaartje.beschikbaar_vanaf = localize( comp.begin_aanmeldingen) kaartjes.append(kaartje) for deelcomp in deelcomps: if deelcomp.competitie == comp: if deelcomp.regio_organiseert_teamcompetitie and 'E' <= comp.fase <= 'F' and 1 <= deelcomp.huidige_team_ronde <= 7: # team invallers opgeven kaartje = SimpleNamespace( titel="Team Invallers", tekst= "Invallers opgeven voor ronde %s van de regiocompetitie voor de %s." % (deelcomp.huidige_team_ronde, comp.beschrijving), url=reverse('CompRegio:teams-regio-invallers', kwargs={'deelcomp_pk': deelcomp.pk}), icon='how_to_reg') kaartjes.append(kaartje) else: # 2 - teams aanmaken if deelcomp.regio_organiseert_teamcompetitie and comp.fase <= 'E': kaartje = SimpleNamespace() kaartje.titel = "Teams Regio" kaartje.tekst = 'Verenigingsteams voor de regiocompetitie samenstellen voor de %s.' % comp.beschrijving kaartje.url = reverse( 'CompRegio:teams-regio', kwargs={'deelcomp_pk': deelcomp.pk}) kaartje.icon = 'gamepad' if comp.fase < 'B': kaartje.beschikbaar_vanaf = localize( comp.begin_aanmeldingen) kaartjes.append(kaartje) # for del deelcomp # 3 - teams RK for deelcomp_rk in deelcomps_rk: if deelcomp_rk.competitie == comp: if deelcomp_rk.heeft_deelnemerslijst: if 'J' <= comp.fase <= 'K': # RK voorbereidende fase kaartje = SimpleNamespace() kaartje.titel = "Deelnemers RK" kaartje.tekst = "Sporters van de vereniging aan-/afmelden voor het RK van de %s" % comp.beschrijving kaartje.url = reverse( 'CompRayon:lijst-rk-ver', kwargs={'rk_deelcomp_pk': deelcomp_rk.pk}) kaartje.icon = 'rule' kaartjes.append(kaartje) if 'E' <= comp.fase <= 'K' and self.rol_nu != Rollen.ROL_WL: kaartje = SimpleNamespace() kaartje.titel = "Teams RK" kaartje.tekst = "Verenigingsteams voor de rayonkampioenschappen samenstellen voor de %s." % comp.beschrijving kaartje.url = reverse( 'CompRayon:teams-rk', kwargs={'rk_deelcomp_pk': deelcomp_rk.pk}) kaartje.icon = 'api' # niet beschikbaar maken tot een paar weken na de eerste regiowedstrijd vanaf = comp.eerste_wedstrijd + datetime.timedelta( days=settings.COMPETITIES_OPEN_RK_TEAMS_DAYS_AFTER) if datetime.date.today() < vanaf: kaartje.beschikbaar_vanaf = localize(vanaf) kaartjes.append(kaartje) # for del deelcomp_rk for deelcomp in deelcomps: if deelcomp.competitie == comp: # 4 - ingeschreven if 'B' <= comp.fase <= 'F': # vanaf RK fase niet meer tonen kaartje = SimpleNamespace() kaartje.titel = "Ingeschreven" kaartje.tekst = "Overzicht ingeschreven leden voor de %s." % comp.beschrijving kaartje.url = reverse( 'CompInschrijven:leden-ingeschreven', kwargs={'deelcomp_pk': deelcomp.pk}) if comp.afstand == '18': kaartje.img = static('plein/badge_nhb_indoor.png') else: kaartje.img = static('plein/badge_nhb_25m1p.png') kaartjes.append(kaartje) # 5 - wie schiet waar if deelcomp.inschrijf_methode == INSCHRIJF_METHODE_1 and 'B' <= comp.fase <= 'F': kaartje = SimpleNamespace() kaartje.titel = "Wie schiet waar?" kaartje.tekst = 'Overzicht gekozen wedstrijden voor de %s.' % comp.beschrijving kaartje.url = reverse( 'CompRegio:wie-schiet-waar', kwargs={'deelcomp_pk': deelcomp.pk}) kaartje.icon = 'gamepad' if comp.fase < 'B': kaartje.beschikbaar_vanaf = localize( comp.begin_aanmeldingen) kaartjes.append(kaartje) # for # for eval_open_taken(self.request) menu_dynamics(self.request, context, actief='vereniging') return context