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) wedstrijd_pk = kwargs['wedstrijd_pk'][: 6] # afkappen voor de veiligheid wedstrijd, deelcomp, ronde = bepaal_wedstrijd_en_deelcomp_of_404( wedstrijd_pk) context['wedstrijd'] = wedstrijd context['deelcomp'] = deelcomp if not mag_deelcomp_wedstrijd_wijzigen(wedstrijd, self.functie_nu, deelcomp): raise PermissionDenied() context['is_controle'] = self.is_controle context['is_akkoord'] = wedstrijd.uitslag.is_bevroren if self.is_controle: context['url_geef_akkoord'] = reverse( 'CompScores:uitslag-accorderen', kwargs={'wedstrijd_pk': wedstrijd.pk}) scores = ( wedstrijd.uitslag.scores.filter(type=SCORE_TYPE_SCORE).exclude( waarde=SCORE_WAARDE_VERWIJDERD).select_related( 'sporterboog', 'sporterboog__boogtype', 'sporterboog__sporter', 'sporterboog__sporter__bij_vereniging').order_by( 'sporterboog__sporter__lid_nr', 'sporterboog__pk') ) # belangrijk ivm zelfde volgorde by dynamisch toevoegen context['scores'] = scores self._team_naam_toevoegen(scores, deelcomp) context['url_check_nhbnr'] = reverse('CompScores:dynamic-check-nhbnr') context['url_opslaan'] = reverse('CompScores:dynamic-scores-opslaan') context['url_deelnemers_ophalen'] = reverse( 'CompScores:dynamic-deelnemers-ophalen') teams = (RegiocompetitieTeam.objects.filter( deelcompetitie=deelcomp).select_related('vereniging')) for team in teams: team.naam_str = team.maak_team_naam_kort() context['teams'] = teams # plan = wedstrijd.competitiewedstrijdenplan_set.all()[0] # ronde = DeelcompetitieRonde.objects.get(plan=plan) if self.rol_nu == Rollen.ROL_RCL: context['url_terug'] = reverse('CompScores:scores-rcl', kwargs={'deelcomp_pk': deelcomp.pk}) else: context['url_terug'] = reverse('CompScores:wedstrijden-scores') 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: comp_pk = int(kwargs['comp_pk'][:6]) # afkappen voor de veiligheid comp = Competitie.objects.get(pk=comp_pk) except (ValueError, Competitie.DoesNotExist): raise Http404() deelcomps = (DeelCompetitie.objects.select_related( 'competitie', 'nhb_regio', 'nhb_regio__rayon').filter( competitie=comp_pk, laag=LAAG_REGIO).order_by('nhb_regio__regio_nr')) context['comp'] = comp context['deelcomps'] = deelcomps punten2str = dict() for punten, beschrijving in TEAM_PUNTEN: punten2str[punten] = beschrijving # for for deelcomp in deelcomps: deelcomp.regio_str = str(deelcomp.nhb_regio.regio_nr) deelcomp.rayon_str = str(deelcomp.nhb_regio.rayon.rayon_nr) if deelcomp.inschrijf_methode == INSCHRIJF_METHODE_1: deelcomp.inschrijfmethode_str = '1: kies wedstrijden' elif deelcomp.inschrijf_methode == INSCHRIJF_METHODE_2: deelcomp.inschrijfmethode_str = '2: klasse naar locatie' else: deelcomp.inschrijfmethode_str = '3: voorkeur dagdelen' if deelcomp.regio_organiseert_teamcompetitie: deelcomp.teamcomp_str = 'Ja' deelcomp.einde_teams_aanmaken_str = localize( deelcomp.einde_teams_aanmaken) if deelcomp.regio_heeft_vaste_teams: deelcomp.team_type_str = 'Statisch' else: deelcomp.team_type_str = 'Dynamisch' deelcomp.puntenmodel_str = punten2str[ deelcomp.regio_team_punten_model] else: deelcomp.teamcomp_str = 'Nee' deelcomp.einde_teams_aanmaken_str = '-' deelcomp.team_type_str = '-' deelcomp.puntenmodel_str = '-' if self.rol_nu == Rollen.ROL_RKO and deelcomp.nhb_regio.rayon == self.functie_nu.nhb_rayon: deelcomp.highlight = True # for menu_dynamics_competitie(self.request, context, comp_pk=comp_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: 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') context['comp'] = comp comp.bepaal_fase() if comp.fase != 'J': raise Http404('Competitie niet in de juist fase') if comp.klassengrenzen_vastgesteld_rk_bk: raise Http404('De klassengrenzen zijn al vastgesteld') context['grenzen'], context['niet_compleet_team'] = self._bepaal_klassengrenzen(comp) if context['niet_compleet_team']: context['url_terug'] = reverse('Competitie:overzicht', kwargs={'comp_pk': comp.pk}) context['url_vaststellen'] = reverse('CompRayon:klassengrenzen-vaststellen-rk-bk-teams', kwargs={'comp_pk': comp.pk}) menu_dynamics_competitie(self.request, context, comp_pk=comp.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) self.histcomp.comp_type_str = HistCompetitie.comptype2str[self.histcomp.comp_type] context['histcomp'] = self.histcomp context['form'] = self.form context['filter_url'] = self.base_url context['zoekterm'] = self.get_filter if context['is_paginated']: context['page_links'] = self._make_link_urls(context) context['active'] = str(context['page_obj'].number) if self.get_filter: # als een filter actief is, toon de 'clear' knop context['unfiltered_url'] = self.base_url elif self.paginate_by > 0: # geen filter, wel paginering # toon de "laad alle ## records" knop context['all_url'] = self.base_url + '?all=1' context['all_count'] = self.all_count # else: we laten de 'all' lijst zien dus laat de 'all' knop weg if not self.is_team: for obj in context['object_list']: obj.schutter_nr_str = str(obj.schutter_nr) # for menu_dynamics_competitie(self.request, context, actief='histcomp') 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: 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() context['comp'] = comp comp_boog = kwargs['comp_boog'][:2] # afkappen voor de veiligheid try: deelcomp = ( DeelCompetitie.objects.select_related('competitie').get( laag=LAAG_BK, competitie__is_afgesloten=False, competitie__pk=comp_pk)) except DeelCompetitie.DoesNotExist: raise Http404('Competitie niet gevonden') menu_dynamics_competitie(self.request, context, comp_pk=comp.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.get(pk=deelcomp_pk, laag=LAAG_REGIO) except (ValueError, DeelCompetitie.DoesNotExist): raise Http404('Competitie niet gevonden') rol_nu, functie_nu = rol_get_huidige_functie(self.request) if deelcomp.functie != functie_nu: # niet de beheerder raise PermissionDenied() if not deelcomp.regio_organiseert_teamcompetitie: raise Http404('Geen teamcompetitie in deze regio') context['deelcomp'] = deelcomp if 1 <= deelcomp.huidige_team_ronde <= 7: context['alle_regels'], context['aantal_keuzes_nodig'], context[ 'anchor'] = self._bepaal_teams_en_scores(deelcomp) context['url_opslaan'] = reverse( 'CompScores:selecteer-team-scores', kwargs={'deelcomp_pk': deelcomp.pk}) 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) self.maak_data(context) menu_dynamics_competitie(self.request, context, actief='histcomp') 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: poule_pk = int( kwargs['poule_pk'][:6]) # afkappen voor de veiligheid poule = (RegiocompetitieTeamPoule.objects.select_related( 'deelcompetitie', 'deelcompetitie__nhb_regio', 'deelcompetitie__competitie').prefetch_related('teams').get( pk=poule_pk)) except (ValueError, RegiocompetitieTeamPoule.DoesNotExist): raise Http404('Poule bestaat niet') deelcomp = poule.deelcompetitie if deelcomp.nhb_regio != self.functie_nu.nhb_regio: raise PermissionDenied('Niet de beheerder van deze regio') comp = deelcomp.competitie comp.bepaal_fase() if comp.fase > 'E': raise Http404('Poules kunnen niet meer aangepast worden') context['mag_koppelen'] = (comp.fase <= 'D') team_pks = list(poule.teams.values_list('pk', flat=True)) teams = (RegiocompetitieTeam.objects.select_related( 'klasse__team', 'team_type' ).prefetch_related('regiocompetitieteampoule_set').filter( deelcompetitie=deelcomp).order_by('klasse__team__volgorde')) for team in teams: team.sel_str = 'team_%s' % team.pk if team.pk in team_pks: team.geselecteerd = True else: if team.regiocompetitieteampoule_set.count(): team.in_andere_poule = True if team.klasse: team.klasse_str = team.klasse.team.beschrijving else: team.klasse_str = '' # blokkeert selectie voor poule # for context['teams'] = teams context['poule'] = poule context['url_opslaan'] = reverse('CompRegio:wijzig-poule', kwargs={'poule_pk': poule.pk}) context['url_terug'] = reverse('CompRegio:regio-poules', kwargs={'deelcomp_pk': deelcomp.pk}) 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: deelnemer_pk = int( kwargs['deelnemer_pk'][:6]) # afkappen voor de veiligheid deelnemer = (KampioenschapSchutterBoog.objects.select_related( 'deelcompetitie__competitie', 'deelcompetitie__nhb_rayon', 'sporterboog__sporter', 'bij_vereniging').get(pk=deelnemer_pk)) except (ValueError, KampioenschapSchutterBoog.DoesNotExist): raise Http404('Deelnemer niet gevonden') if self.rol_nu == Rollen.ROL_HWL and deelnemer.bij_vereniging != self.functie_nu.nhb_ver: raise PermissionDenied('Geen sporter van jouw vereniging') if self.rol_nu == Rollen.ROL_RKO and self.functie_nu != deelnemer.deelcompetitie.functie: raise PermissionDenied('Geen toegang tot deze competitie') comp = deelnemer.deelcompetitie.competitie comp.bepaal_fase() if comp.fase < 'J': raise Http404('Mag nog niet wijzigen') if comp.fase > 'K': raise Http404('Mag niet meer wijzigen') sporter = deelnemer.sporterboog.sporter deelnemer.naam_str = "[%s] %s" % (sporter.lid_nr, sporter.volledige_naam()) if deelnemer.bij_vereniging: deelnemer.ver_str = str(deelnemer.bij_vereniging) else: deelnemer.ver_str = "?" context['deelnemer'] = deelnemer context['url_wijzig'] = reverse('CompRayon:wijzig-status-rk-deelnemer', kwargs={'deelnemer_pk': deelnemer.pk}) if self.rol_nu == Rollen.ROL_RKO: context['url_terug'] = reverse( 'CompRayon:lijst-rk', kwargs={'rk_deelcomp_pk': deelnemer.deelcompetitie.pk}) else: # HWL context['url_terug'] = reverse( 'CompRayon:lijst-rk-ver', kwargs={'rk_deelcomp_pk': deelnemer.deelcompetitie.pk}) menu_dynamics_competitie( self.request, context, comp_pk=deelnemer.deelcompetitie.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: 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() context['comp'] = comp comp_boog = kwargs['comp_boog'][:2] # afkappen voor de veiligheid # ver_nr is optioneel en resulteert in het nummer van de schutter try: ver_nr = kwargs['ver_nr'][:4] # afkappen voor de veiligheid ver_nr = int(ver_nr) except KeyError: # zoek de vereniging die bij de huidige gebruiker past ver_nr = get_sporter_ver_nr(self.request) except ValueError: raise Http404('Verkeerd verenigingsnummer') try: ver = NhbVereniging.objects.select_related('regio').get( ver_nr=ver_nr) except NhbVereniging.DoesNotExist: raise Http404('Vereniging niet gevonden') context['ver'] = ver self._maak_filter_knoppen(context, comp, ver_nr, comp_boog) boogtype = context['comp_boog'] if not boogtype: raise Http404('Boogtype niet bekend') regio_nr = ver.regio.regio_nr context['url_terug'] = reverse('CompUitslagen:uitslagen-regio-indiv-n', kwargs={ 'comp_pk': comp.pk, 'zes_scores': 'alle', 'comp_boog': comp_boog, 'regio_nr': regio_nr }) context['deelcomp'] = deelcomp = self._get_deelcomp(comp, regio_nr) context['deelnemers'] = deelnemers = self._get_deelnemers( deelcomp, boogtype, ver_nr) context['aantal_deelnemers'] = len(deelnemers) menu_dynamics_competitie(self.request, context, comp_pk=comp.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) wedstrijd_pk = kwargs['wedstrijd_pk'][: 6] # afkappen voor de veiligheid wedstrijd, deelcomp, ronde = bepaal_wedstrijd_en_deelcomp_of_404( wedstrijd_pk) scores = (wedstrijd.uitslag.scores.filter( type=SCORE_TYPE_SCORE).exclude( waarde=SCORE_WAARDE_VERWIJDERD).select_related( 'sporterboog', 'sporterboog__boogtype', 'sporterboog__sporter')) # maak een opzoek tabel voor de huidige vereniging van elke sporterboog sporterboog_pks = [score.sporterboog.pk for score in scores] regioschutters = (RegioCompetitieSchutterBoog.objects.select_related( 'sporterboog', 'bij_vereniging').filter(sporterboog__pk__in=sporterboog_pks)) sporterboog2vereniging = dict() for regioschutter in regioschutters: sporterboog2vereniging[ regioschutter.sporterboog.pk] = regioschutter.bij_vereniging # for for score in scores: score.schutter_str = score.sporterboog.sporter.volledige_naam() score.lid_nr = score.sporterboog.sporter.lid_nr score.boog_str = score.sporterboog.boogtype.beschrijving try: score.vereniging_str = str( sporterboog2vereniging[score.sporterboog.pk]) except KeyError: # unlikely inconsistency score.vereniging_str = "?" # for # vereniging kan 2 leden met dezelfde naam en boog hebben, daarom lid_nr te_sorteren = [(score.vereniging_str, score.schutter_str, score.boog_str, score.lid_nr, score) for score in scores] te_sorteren.sort() scores = [score for _, _, _, _, score in te_sorteren] context['scores'] = scores context['wedstrijd'] = wedstrijd context['deelcomp'] = deelcomp context['ronde'] = ronde 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: 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() if comp.fase < 'B' or comp.fase > 'E': raise Http404('Verkeerde competitie fase') context['competitie'] = comp objs = (RegioCompetitieSchutterBoog .objects .select_related('klasse', 'klasse__indiv', 'deelcompetitie', 'deelcompetitie__nhb_regio', 'sporterboog', 'sporterboog__sporter', 'bij_vereniging') .filter(deelcompetitie__competitie=comp, deelcompetitie__laag=LAAG_REGIO) .order_by('klasse__indiv__volgorde', '-ag_voor_indiv')) obj_aantal = None aantal = 0 volgorde = -1 for obj in objs: if volgorde != obj.klasse.indiv.volgorde: obj.nieuwe_klasse = True if obj_aantal: obj_aantal.aantal_in_klasse = aantal aantal = 0 obj_aantal = obj volgorde = obj.klasse.indiv.volgorde aantal += 1 # for if obj_aantal: obj_aantal.aantal_in_klasse = aantal context['object_list'] = objs context['inhoud'] = 'landelijk' maak_regiocomp_zoom_knoppen(context, comp_pk) menu_dynamics_competitie(self.request, context, comp_pk=comp.pk, actief='competitie') 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) context['seizoen'] = self.seizoen if HistCompetitie.objects.filter(seizoen=self.seizoen, is_team=True).count() > 0: context['show_team'] = True menu_dynamics_competitie(self.request, context, actief='histcomp') 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) # haal de deelnemer op try: deelnemer_pk = int( kwargs['deelnemer_pk'][:6]) # afkappen voor de veiligheid deelnemer = (RegioCompetitieSchutterBoog.objects.select_related( 'sporterboog', 'sporterboog__sporter', 'sporterboog__boogtype', 'bij_vereniging', 'deelcompetitie__competitie').get(pk=deelnemer_pk)) except (ValueError, RegioCompetitieSchutterBoog.DoesNotExist): raise Http404('Sporter niet gevonden') context['deelnemer'] = deelnemer # controleer dat deze deelnemer bekeken en gewijzigd mag worden self._mag_wijzigen_of_404(deelnemer) deelnemer.naam_str = deelnemer.sporterboog.sporter.volledige_naam() deelnemer.boog_str = deelnemer.sporterboog.boogtype.beschrijving ag_str = '%.3f' % deelnemer.ag_voor_team deelnemer.ag_str = ag_str.replace('.', ',') ag_hist = (ScoreHist.objects.filter( score__sporterboog=deelnemer.sporterboog, score__afstand_meter=deelnemer.deelcompetitie.competitie.afstand, score__type=SCORE_TYPE_TEAM_AG).order_by('-when')) for obj in ag_hist: obj.oude_waarde /= 1000 obj.nieuwe_waarde /= 1000 obj.oude_waarde_str = "%.3f" % obj.oude_waarde obj.nieuwe_waarde_str = "%.3f" % obj.nieuwe_waarde # for context['ag_hist'] = ag_hist comp = deelnemer.deelcompetitie.competitie comp.bepaal_fase() if comp.fase < 'E': context['url_opslaan'] = reverse( 'CompRegio:wijzig-ag', kwargs={'deelnemer_pk': deelnemer.pk}) if self.rol_nu == Rollen.ROL_HWL: menu_dynamics(self.request, context, actief='vereniging') else: menu_dynamics_competitie(self.request, context, comp_pk=comp.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.get(pk=deelcomp_pk, laag=LAAG_REGIO) except (ValueError, DeelCompetitie.DoesNotExist): raise Http404('Competitie niet gevonden') rol_nu, functie_nu = rol_get_huidige_functie(self.request) if deelcomp.functie != functie_nu: # niet de beheerder raise PermissionDenied() context['deelcomp'] = deelcomp # TODO: check competitie fase if deelcomp.regio_organiseert_teamcompetitie: context['url_team_scores'] = reverse( 'CompScores:selecteer-team-scores', kwargs={'deelcomp_pk': deelcomp.pk}) # deelcompetitie bestaat uit rondes # elke ronde heeft een plan met wedstrijden wedstrijd_pks = list() wedstrijd2beschrijving = dict() comp_str = deelcomp.competitie.beschrijving for ronde in (DeelcompetitieRonde.objects.select_related( 'plan').prefetch_related('plan__wedstrijden').filter( deelcompetitie=deelcomp)): for wedstrijd in ronde.plan.wedstrijden.all(): wedstrijd_pks.append(wedstrijd.pk) beschrijving = ronde.beschrijving if not beschrijving and ronde.cluster: beschrijving = ronde.cluster.naam if not beschrijving: beschrijving = "?? (ronde)" wedstrijd2beschrijving[ wedstrijd.pk] = "%s - %s" % (comp_str, beschrijving) # for # for wedstrijden = (CompetitieWedstrijd.objects.select_related( 'uitslag', 'vereniging').filter(pk__in=wedstrijd_pks).annotate( scores_count=Count('uitslag__scores')).order_by( 'datum_wanneer', 'tijd_begin_wedstrijd', 'pk')) # vaste sortering bij gelijke datum/tijd for wedstrijd in wedstrijden: heeft_uitslag = (wedstrijd.uitslag and wedstrijd.scores_count > 0) beschrijving = wedstrijd2beschrijving[wedstrijd.pk] if wedstrijd.beschrijving != beschrijving: wedstrijd.beschrijving = beschrijving wedstrijd.save() # geef RCL de mogelijkheid om te scores aan te passen # de HWL/WL krijgen deze link vanuit Vereniging::Wedstrijden if heeft_uitslag: wedstrijd.url_uitslag_controleren = reverse( 'CompScores:uitslag-controleren', kwargs={'wedstrijd_pk': wedstrijd.pk}) else: # TODO: knop pas beschikbaar maken op wedstrijddatum tot datum+N wedstrijd.url_uitslag_invoeren = reverse( 'CompScores:uitslag-invoeren', kwargs={'wedstrijd_pk': wedstrijd.pk}) # for context['wedstrijden'] = wedstrijden 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') .get(pk=deelcomp_pk, nhb_regio=self.functie_nu.nhb_regio)) except (ValueError, DeelCompetitie.DoesNotExist): raise Http404('Competitie bestaat niet') context['deelcomp'] = deelcomp context['regio'] = self.functie_nu.nhb_regio # TODO: check competitie fase probleem_met_teams = False if deelcomp.huidige_team_ronde == 0: # check dat alle teams geplaatst in een wedstrijdklasse (dus genoeg sporters gekoppeld hebben) # en dat alle teams in een poule zitten team_pk2poule = dict() poules = RegiocompetitieTeamPoule.objects.filter(deelcompetitie=deelcomp).prefetch_related('teams') for poule in poules: for team in poule.teams.all(): team_pk2poule[team.pk] = poule # for # for regioteams = (RegiocompetitieTeam .objects .select_related('vereniging', 'vereniging__regio', 'team_type') .filter(deelcompetitie=deelcomp) .prefetch_related('gekoppelde_schutters') .order_by('team_type__volgorde', '-aanvangsgemiddelde', 'vereniging__ver_nr')) for team in regioteams: team.aantal_sporters = team.gekoppelde_schutters.count() if not team.klasse: probleem_met_teams = True team.is_niet_af = True try: team.poule = team_pk2poule[team.pk] except KeyError: team.poule = None team.is_niet_af = True # for if probleem_met_teams: context['teams_niet_af'] = regioteams if not probleem_met_teams: if 1 <= deelcomp.huidige_team_ronde <= 7: context['alle_regels'], context['is_redelijk'] = self._bepaal_wedstrijdpunten(deelcomp) if deelcomp.regio_team_punten_model == TEAM_PUNTEN_MODEL_FORMULE1: context['toon_f1'] = True context['wp_model_str'] = 'Formule 1' elif deelcomp.regio_team_punten_model == TEAM_PUNTEN_MODEL_TWEE: context['toon_h2h'] = True context['wp_model_str'] = '2 punten, directe tegenstanders' else: context['toon_som'] = True context['wp_model_str'] = 'Som van de scores' if deelcomp.huidige_team_ronde <= 7: context['url_team_scores'] = reverse('CompScores:selecteer-team-scores', kwargs={'deelcomp_pk': deelcomp.pk}) context['url_volgende_ronde'] = reverse('CompRegio:start-volgende-team-ronde', kwargs={'deelcomp_pk': deelcomp.pk}) 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: wedstrijd_pk = int( kwargs['wedstrijd_pk'][:6]) # afkappen voor de veiligheid wedstrijd = ( CompetitieWedstrijd.objects.select_related('vereniging').get( pk=wedstrijd_pk)) except (ValueError, CompetitieWedstrijd.DoesNotExist): raise Http404('Wedstrijd niet gevonden') msg = wedstrijd.beschrijving pos = msg.find(' - ') if pos > 0: wedstrijd.beschrijving1 = msg[:pos].strip() wedstrijd.beschrijving2 = msg[pos + 3:].strip() else: wedstrijd.beschrijving1 = msg wedstrijd.beschrijving2 = '' plan = wedstrijd.competitiewedstrijdenplan_set.all()[0] ronde = plan.deelcompetitieronde_set.select_related( 'deelcompetitie', 'deelcompetitie__competitie').all()[0] deelcomp = ronde.deelcompetitie comp = deelcomp.competitie afstand = comp.afstand context['deelcomp'] = deelcomp context['wedstrijd'] = wedstrijd context['vastgesteld'] = timezone.now() context['is_25m1p'] = (afstand == '25') team_pk2naam = dict() team_pk2naam[0] = '-' for team in RegiocompetitieTeam.objects.filter( deelcompetitie=deelcomp): team_pk2naam[team.pk] = team.maak_team_naam_kort() # for sporters, teams = bepaal_waarschijnlijke_deelnemers( afstand, deelcomp, wedstrijd) context['sporters'] = sporters for sporter in sporters: sporter.in_team_naam = team_pk2naam[sporter.team_pk] # for context['blazoenen'] = bepaal_blazoen_behoefte(afstand, sporters, teams) context['url_download'] = reverse( 'CompRegio:waarschijnlijke-deelnemers-als-bestand', kwargs={'wedstrijd_pk': wedstrijd.pk}) # prep de view nr = 1 for sporter in sporters: sporter.volg_nr = nr nr += 1 # for menu_dynamics_competitie(self.request, context, comp_pk=comp.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: 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('Competitie niet gevonden') 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') context['deelcomp'] = deelcomp context['handmatige_ag'] = ag_lijst = list() # zoek de schuttersboog met handmatig_ag voor de teamcompetitie for obj in (RegioCompetitieSchutterBoog .objects .filter(deelcompetitie=deelcomp, inschrijf_voorkeur_team=True, ag_voor_team_mag_aangepast_worden=True, ag_voor_team__gt=0.0) .select_related('sporterboog', 'sporterboog__sporter', 'sporterboog__boogtype', 'bij_vereniging') .order_by('bij_vereniging__ver_nr', 'sporterboog__sporter__lid_nr', 'sporterboog__boogtype__volgorde')): ver = obj.bij_vereniging obj.ver_str = "[%s] %s" % (ver.ver_nr, ver.naam) sporter = obj.sporterboog.sporter obj.naam_str = "[%s] %s" % (sporter.lid_nr, sporter.volledige_naam()) obj.boog_str = obj.sporterboog.boogtype.beschrijving obj.ag_str = "%.3f" % obj.ag_voor_team obj.url_details = reverse('CompRegio:wijzig-ag', kwargs={'deelnemer_pk': obj.pk}) ag_lijst.append(obj) # for 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) if self.subset_filter: context['subset_filter'] = True # BB/BKO/RKO mode try: comp_pk = int(str(kwargs['comp_pk'][:6])) # afkappen voor de veiligheid comp = Competitie.objects.get(pk=comp_pk) except (ValueError, Competitie.DoesNotExist): raise Http404('Competitie niet gevonden') context['comp'] = comp comp.bepaal_fase() subset = kwargs['subset'][:10] # afkappen voor de veiligheid if subset == 'auto': if self.rol_nu in (Rollen.ROL_BB, Rollen.ROL_BKO): subset = 'alle' elif self.rol_nu == Rollen.ROL_RKO: subset = str(self.functie_nu.nhb_rayon.rayon_nr) else: raise Http404('Selectie wordt niet ondersteund') if subset == 'alle': # alle regios context['rayon'] = 'Alle' deelcomp_pks = (DeelCompetitie .objects .filter(competitie=comp) .values_list('pk', flat=True)) else: # alleen de regio's van het rayon try: context['rayon'] = NhbRayon.objects.get(rayon_nr=subset) except NhbRayon.DoesNotExist: raise Http404('Selectie wordt niet ondersteund') deelcomp_pks = (DeelCompetitie .objects .filter(competitie=comp, nhb_regio__rayon__rayon_nr=subset) .values_list('pk', flat=True)) context['filters'] = filters = list() alle_filter = {'label': 'Alles'} if subset != 'alle': alle_filter['url'] = reverse('CompRegio:regio-teams-alle', kwargs={'comp_pk': comp.pk, 'subset': 'alle'}) filters.append(alle_filter) for rayon in NhbRayon.objects.all(): rayon.label = 'Rayon %s' % rayon.rayon_nr if str(rayon.rayon_nr) != subset: rayon.url = reverse('CompRegio:regio-teams-alle', kwargs={'comp_pk': comp.pk, 'subset': rayon.rayon_nr}) filters.append(rayon) # for else: # RCL mode try: deelcomp_pk = int(kwargs['deelcomp_pk'][:6]) # afkappen voor de veiligheid deelcomp = (DeelCompetitie .objects .select_related('competitie') .get(pk=deelcomp_pk, laag=LAAG_REGIO)) except (ValueError, DeelCompetitie.DoesNotExist): raise Http404('Competitie niet gevonden') if deelcomp.functie != self.functie_nu: # niet de beheerder raise PermissionDenied() deelcomp_pks = [deelcomp.pk] context['comp'] = comp = deelcomp.competitie comp.bepaal_fase() context['deelcomp'] = deelcomp context['rayon'] = self.functie_nu.nhb_regio.rayon context['regio'] = self.functie_nu.nhb_regio if comp.afstand == '18': aantal_pijlen = 30 else: aantal_pijlen = 25 totaal_teams = 0 klassen = (CompetitieKlasse .objects .filter(competitie=comp, indiv=None, is_voor_teams_rk_bk=False) .select_related('team', 'team__team_type') .order_by('team__volgorde')) klasse2teams = dict() # [klasse] = list(teams) prev_sterkte = '' prev_team = None for klasse in klassen: klasse2teams[klasse] = list() if klasse.team.team_type != prev_team: prev_sterkte = '' prev_team = klasse.team.team_type min_ag_str = "%05.1f" % (klasse.min_ag * aantal_pijlen) min_ag_str = min_ag_str.replace('.', ',') if prev_sterkte: if klasse.min_ag > AG_NUL: klasse.sterkte_str = "sterkte " + min_ag_str + " tot " + prev_sterkte else: klasse.sterkte_str = "sterkte tot " + prev_sterkte else: klasse.sterkte_str = "sterkte " + min_ag_str + " en hoger" prev_sterkte = min_ag_str # for regioteams = (RegiocompetitieTeam .objects .select_related('vereniging', 'vereniging__regio', 'team_type', 'klasse', 'klasse__team') .exclude(klasse=None) .filter(deelcompetitie__in=deelcomp_pks) .order_by('klasse__team__volgorde', '-aanvangsgemiddelde', 'vereniging__ver_nr')) prev_klasse = None for team in regioteams: if team.klasse != prev_klasse: team.break_before = True prev_klasse = team.klasse # team AG is 0.0 - 30.0 --> toon als score: 000.0 .. 900.0 ag_str = "%05.1f" % (team.aanvangsgemiddelde * aantal_pijlen) team.ag_str = ag_str.replace('.', ',') if comp.fase <= 'D' and self.rol_nu == Rollen.ROL_RCL: team.url_aanpassen = reverse('Vereniging:teams-regio-koppelen', kwargs={'team_pk': team.pk}) totaal_teams += 1 klasse2teams[team.klasse].append(team) # for context['regioteams'] = klasse2teams # zoek de teams die niet 'af' zijn regioteams = (RegiocompetitieTeam .objects .select_related('vereniging', 'vereniging__regio', 'team_type', 'deelcompetitie') .filter(deelcompetitie__in=deelcomp_pks, klasse=None) .order_by('team_type__volgorde', '-aanvangsgemiddelde', 'vereniging__ver_nr')) is_eerste = True for team in regioteams: # team AG is 0.0 - 30.0 --> toon als score: 000.0 .. 900.0 ag_str = "%05.1f" % (team.aanvangsgemiddelde * aantal_pijlen) team.ag_str = ag_str.replace('.', ',') if comp.fase <= 'D' and self.rol_nu == Rollen.ROL_RCL: team.url_aanpassen = reverse('Vereniging:teams-regio-koppelen', kwargs={'team_pk': team.pk}) team.url_verwijder = reverse('Vereniging:teams-regio-wijzig', kwargs={'deelcomp_pk': team.deelcompetitie.pk, 'team_pk': team.pk}) totaal_teams += 1 team.break_before = is_eerste is_eerste = False # for context['regioteams_niet_af'] = regioteams context['totaal_teams'] = totaal_teams menu_dynamics_competitie(self.request, context, comp_pk=comp.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: 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() if comp.fase < 'B' or comp.fase > 'E': raise Http404('Verkeerde competitie fase') context['competitie'] = comp try: regio_pk = int(kwargs['regio_pk'][:6]) # afkappen voor de veiligheid regio = (NhbRegio .objects .select_related('rayon') .get(pk=regio_pk)) except (ValueError, NhbRegio.DoesNotExist): raise Http404('Regio niet gevonden') context['regio'] = regio context['inhoud'] = 'in ' + str(regio) try: deelcomp = DeelCompetitie.objects.get(laag=LAAG_REGIO, competitie=comp, nhb_regio=regio) except DeelCompetitie.DoesNotExist: raise Http404('Competitie niet gevonden') objs = (RegioCompetitieSchutterBoog .objects .select_related('klasse', 'klasse__indiv', 'deelcompetitie', 'sporterboog', 'sporterboog__sporter', 'sporterboog__boogtype', 'bij_vereniging') .filter(deelcompetitie=deelcomp) .order_by('klasse__indiv__volgorde', '-ag_voor_indiv')) obj_aantal = None aantal = 0 volgorde = -1 for obj in objs: obj.team_ja_nee = JA_NEE[obj.inschrijf_voorkeur_team] if volgorde != obj.klasse.indiv.volgorde: obj.nieuwe_klasse = True if obj_aantal: obj_aantal.aantal_in_klasse = aantal aantal = 0 obj_aantal = obj volgorde = obj.klasse.indiv.volgorde aantal += 1 # for if obj_aantal: obj_aantal.aantal_in_klasse = aantal context['object_list'] = objs if deelcomp.inschrijf_methode == INSCHRIJF_METHODE_1: context['show_gekozen_wedstrijden'] = True context['url_behoefte'] = reverse('CompInschrijven:inschrijfmethode1-behoefte', kwargs={'comp_pk': comp.pk, 'regio_pk': regio.pk}) elif deelcomp.inschrijf_methode == INSCHRIJF_METHODE_3: context['show_dagdeel_telling'] = True context['url_behoefte'] = reverse('CompInschrijven:inschrijfmethode3-behoefte', kwargs={'comp_pk': comp.pk, 'regio_pk': regio.pk}) else: # inschrijfmethode 2 context['url_download'] = reverse('CompInschrijven:lijst-regiocomp-regio-als-bestand', kwargs={'comp_pk': comp.pk, 'regio_pk': regio.pk}) maak_regiocomp_zoom_knoppen(context, comp.pk, regio=regio) menu_dynamics_competitie(self.request, context, comp_pk=comp.pk, actief='competitie') 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: wedstrijd_pk = int(kwargs['wedstrijd_pk'][:6]) # afkappen voor de veiligheid wedstrijd = (CompetitieWedstrijd .objects .select_related('vereniging') .prefetch_related('indiv_klassen', 'team_klassen') .get(pk=wedstrijd_pk, vereniging=self.functie_nu.nhb_ver)) except (ValueError, CompetitieWedstrijd.DoesNotExist): raise Http404('Wedstrijd niet gevonden') plannen = wedstrijd.competitiewedstrijdenplan_set.all() if len(plannen) == 0: raise Http404('Geen wedstrijden plan') plan = plannen[0] del plannen deelcomp = plan.deelcompetitie_set.select_related('competitie', 'nhb_rayon').all()[0] if deelcomp.laag != LAAG_RK: raise Http404('Verkeerde competitie') context['deelcomp'] = deelcomp context['wedstrijd'] = wedstrijd context['vereniging'] = wedstrijd.vereniging # als we hier komen is dit altijd bekend context['locatie'] = wedstrijd.locatie context['aantal_banen'] = '?' comp = deelcomp.competitie # TODO: check fase if comp.afstand == '18': aantal_pijlen = 30 if wedstrijd.locatie: context['aantal_banen'] = wedstrijd.locatie.banen_18m else: aantal_pijlen = 25 if wedstrijd.locatie: context['aantal_banen'] = wedstrijd.locatie.banen_25m if deelcomp.laag == LAAG_RK: wedstrijd.is_rk = True wedstrijd.beschrijving = "Rayonkampioenschap" # else: # wedstrijd.is_bk = True # wedstrijd.beschrijving = "Bondskampioenschap" heeft_indiv = heeft_teams = False beschr = list() klasse_indiv_pks = list() klasse_team_pks = list() wedstrijd.klassen_lijst = klassen_lijst = list() for klasse in wedstrijd.indiv_klassen.all(): klassen_lijst.append(str(klasse)) klasse_indiv_pks.append(klasse.pk) if not heeft_indiv: heeft_indiv = True beschr.append('Individueel') # for for klasse in wedstrijd.team_klassen.all(): klassen_lijst.append(str(klasse)) klasse_team_pks.append(klasse.pk) if not heeft_teams: heeft_teams = True beschr.append('Teams') # for vastgesteld = timezone.localtime(timezone.now()) context['vastgesteld'] = vastgesteld context['heeft_indiv'] = heeft_indiv context['heeft_teams'] = heeft_teams context['beschrijving'] = "%s %s" % (wedstrijd.beschrijving, " en ".join(beschr)) # zoek de deelnemers erbij if heeft_indiv: deelnemers = (KampioenschapSchutterBoog .objects .filter(deelcompetitie=deelcomp, klasse__indiv__pk__in=klasse_indiv_pks) .select_related('sporterboog', 'sporterboog__sporter', 'bij_vereniging', 'klasse') .order_by('klasse', 'rank')) context['deelnemers_indiv'] = deelnemers prev_klasse = None for deelnemer in deelnemers: if deelnemer.klasse != prev_klasse: deelnemer.break_before = True deelnemer.url_download_indiv = reverse('CompRayon:formulier-indiv-als-bestand', kwargs={'wedstrijd_pk': wedstrijd.pk, 'klasse_pk': deelnemer.klasse.pk}) prev_klasse = deelnemer.klasse deelnemer.ver_nr = deelnemer.bij_vereniging.ver_nr deelnemer.ver_naam = deelnemer.bij_vereniging.naam deelnemer.lid_nr = deelnemer.sporterboog.sporter.lid_nr deelnemer.volledige_naam = deelnemer.sporterboog.sporter.volledige_naam() deelnemer.gemiddelde_str = "%.3f" % deelnemer.gemiddelde deelnemer.gemiddelde_str = deelnemer.gemiddelde_str.replace('.', ',') # for if heeft_teams: teams = (KampioenschapTeam .objects .filter(deelcompetitie=deelcomp, klasse__team__pk__in=klasse_team_pks) .select_related('vereniging', 'klasse') .prefetch_related('gekoppelde_schutters') .order_by('klasse', '-aanvangsgemiddelde')) # sterkste team bovenaan context['deelnemers_teams'] = teams if not comp.klassengrenzen_vastgesteld_rk_bk: context['geen_klassengrenzen'] = True volg_nr = 0 prev_klasse = None for team in teams: if team.klasse != prev_klasse: team.break_before = True team.url_download_teams = reverse('CompRayon:formulier-teams-als-bestand', kwargs={'wedstrijd_pk': wedstrijd.pk, 'klasse_pk': team.klasse.pk}) prev_klasse = team.klasse volg_nr = 0 volg_nr += 1 team.volg_nr = volg_nr team.ver_nr = team.vereniging.ver_nr team.ver_naam = team.vereniging.naam team.sterkte_str = "%.1f" % (team.aanvangsgemiddelde * aantal_pijlen) team.sterkte_str = team.sterkte_str.replace('.', ',') for lid in team.gekoppelde_schutters.all(): sporter = lid.sporterboog.sporter lid.naam_str = "[%s] %s" % (sporter.lid_nr, sporter.volledige_naam()) lid.gem_str = lid.gemiddelde # for # for menu_dynamics_competitie(self.request, context, comp_pk=comp.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: 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() if comp.fase < 'B' or comp.fase > 'E': raise Http404('Verkeerde competitie fase') context['competitie'] = comp try: regio_pk = int(kwargs['regio_pk'][:6]) # afkappen voor de veiligheid regio = (NhbRegio .objects .select_related('rayon') .get(pk=regio_pk)) except (ValueError, NhbRegio.DoesNotExist): raise Http404('Regio niet gevonden') context['regio'] = regio try: deelcomp = (DeelCompetitie .objects .select_related('competitie') .get(is_afgesloten=False, laag=LAAG_REGIO, competitie=comp, nhb_regio=regio)) except DeelCompetitie.DoesNotExist: raise Http404('Competitie niet gevonden') if deelcomp.inschrijf_methode != INSCHRIJF_METHODE_3: raise Http404('Verkeerde inschrijfmethode') deelnemers = (RegioCompetitieSchutterBoog .objects .select_related('klasse', 'klasse__indiv', 'deelcompetitie', 'bij_vereniging', 'sporterboog', 'sporterboog__boogtype', 'sporterboog__sporter', 'sporterboog__sporter__bij_vereniging') .filter(deelcompetitie=deelcomp) .order_by('klasse__indiv__volgorde', 'ag_voor_indiv')) # voeg de tabel met dagdeel-behoefte toe self._maak_data_dagdeel_behoefte(context, deelcomp, deelnemers, regio) self._maak_data_blazoen_behoefte(context) context['url_download'] = reverse('CompInschrijven:inschrijfmethode3-behoefte-als-bestand', kwargs={'comp_pk': comp.pk, 'regio_pk': regio.pk}) menu_dynamics_competitie(self.request, context, comp_pk=comp.pk, actief='competitie') 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: 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() if comp.fase < 'B' or comp.fase > 'E': raise Http404('Verkeerde competitie fase') context['competitie'] = comp try: regio_pk = int(kwargs['regio_pk'][:6]) # afkappen voor de veiligheid regio = (NhbRegio .objects .select_related('rayon') .get(pk=regio_pk)) except (ValueError, NhbRegio.DoesNotExist): raise Http404('Regio niet gevonden') context['regio'] = regio try: deelcomp = (DeelCompetitie .objects .select_related('competitie') .get(is_afgesloten=False, laag=LAAG_REGIO, competitie=comp, nhb_regio=regio)) except DeelCompetitie.DoesNotExist: raise Http404('Competitie niet gevonden') if deelcomp.inschrijf_methode != INSCHRIJF_METHODE_1: raise Http404('Verkeerde inschrijfmethode') afstand = deelcomp.competitie.afstand context['blazoenen'] = [BLAZOEN2STR_COMPACT[blazoen] for blazoen in COMPETITIE_BLAZOENEN[afstand]] # sporters met recurve boog willen mogelijk DT voorkeur_eigen_blazoen = (SporterVoorkeuren .objects .select_related('sporter') .filter(voorkeur_eigen_blazoen=True) .values_list('sporter__lid_nr', flat=True)) # zoek alle wedstrijdplannen in deze deelcompetitie (1 per cluster + 1 voor de regio) plan_pks = list(DeelcompetitieRonde .objects .filter(deelcompetitie=deelcomp) .values_list('plan__pk', flat=True)) wedstrijden = (CompetitieWedstrijd .objects .select_related('vereniging') .prefetch_related('regiocompetitieschutterboog_set') .filter(competitiewedstrijdenplan__pk__in=plan_pks) .order_by('datum_wanneer', 'tijd_begin_wedstrijd', 'vereniging__ver_nr')) context['wedstrijden'] = wedstrijden for wedstrijd in wedstrijden: wedstrijd.beschrijving_str = "%s om %s" % (date_format(wedstrijd.datum_wanneer, "l j E Y"), wedstrijd.tijd_begin_wedstrijd.strftime("%H:%M")) wedstrijd.locatie_str = str(wedstrijd.vereniging) wedstrijd.keuze_count = wedstrijd.regiocompetitieschutterboog_set.count() deelnemer_pks = wedstrijd.regiocompetitieschutterboog_set.values_list('pk', flat=True) blazoenen_dict = dict() for blazoen in COMPETITIE_BLAZOENEN[afstand]: blazoenen_dict[blazoen] = 0 # for for deelnemer in (RegioCompetitieSchutterBoog .objects .select_related('sporterboog', 'sporterboog__boogtype', 'sporterboog__sporter', 'klasse', 'klasse__indiv') .filter(pk__in=deelnemer_pks)): klasse = deelnemer.klasse.indiv if afstand == '18': blazoenen = (klasse.blazoen1_18m_regio, klasse.blazoen2_18m_regio) else: blazoenen = (klasse.blazoen1_25m_regio, klasse.blazoen2_25m_regio) blazoen = blazoenen[0] if blazoenen[0] != blazoenen[1]: # meerder mogelijkheden if BLAZOEN_DT in blazoenen_dict: if deelnemer.sporterboog.sporter.lid_nr in voorkeur_eigen_blazoen: blazoen = BLAZOEN_WENS_DT blazoenen_dict[blazoen] += 1 # for deelnemer # convert dict to list wedstrijd.blazoen_count = [blazoenen_dict[blazoen] for blazoen in COMPETITIE_BLAZOENEN[afstand]] # for wedstrijd context['url_download'] = reverse('CompInschrijven:inschrijfmethode1-behoefte-als-bestand', kwargs={'comp_pk': comp.pk, 'regio_pk': regio.pk}) menu_dynamics_competitie(self.request, context, comp_pk=comp.pk, actief='competitie') 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: 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() context['comp'] = comp teamtype_afkorting = kwargs[ 'team_type'][:2] # afkappen voor de veiligheid # rayon_nr is optioneel (eerste binnenkomst zonder rayon nummer) try: rayon_nr = kwargs['rayon_nr'][:2] # afkappen voor de veiligheid rayon_nr = int(rayon_nr) except KeyError: rayon_nr = get_sporter_rayon_nr(self.request) except ValueError: raise Http404('Verkeerd rayonnummer') self._maak_filter_knoppen(context, comp, rayon_nr, teamtype_afkorting) teamtype = context['teamtype'] if not teamtype: raise Http404('Team type niet bekend') try: deelcomp_rk = (DeelCompetitie.objects.select_related( 'competitie', 'nhb_rayon').get(laag=LAAG_RK, competitie=comp, competitie__is_afgesloten=False, nhb_rayon__rayon_nr=rayon_nr)) except DeelCompetitie.DoesNotExist: raise Http404('Competitie niet gevonden') context['deelcomp_rk'] = deelcomp_rk comp = deelcomp_rk.competitie comp.bepaal_fase() # haal de planning erbij: competitieklasse --> competitiewedstrijd team2wedstrijd = dict() # [team_pk] = competitiewedstrijd wedstrijd_pks = list( deelcomp_rk.plan.wedstrijden.values_list('pk', flat=True)) for wedstrijd in (CompetitieWedstrijd.objects.prefetch_related( 'team_klassen').select_related('locatie').filter( pk__in=wedstrijd_pks)): if wedstrijd.locatie: wedstrijd.adres_str = ", ".join( wedstrijd.locatie.adres.split('\n')) for team in wedstrijd.team_klassen.all(): team2wedstrijd[team.pk] = wedstrijd # for if comp.afstand == '18': aantal_pijlen = 30 else: aantal_pijlen = 25 rk_teams = (KampioenschapTeam.objects.filter( deelcompetitie=deelcomp_rk, team_type=teamtype).select_related('klasse__team').order_by( 'klasse__team__volgorde', '-aanvangsgemiddelde')) # sterkste team eerst prev_klasse = "" rank = 0 for team in rk_teams: if team.klasse != prev_klasse: team.break_klasse = True if team.klasse: team.klasse_str = team.klasse.team.beschrijving try: team.wedstrijd = team2wedstrijd[team.klasse.team.pk] except KeyError: pass else: team.klasse_str = "%s - Nog niet ingedeeld in een wedstrijdklasse" % team.team_type.beschrijving prev_klasse = team.klasse rank = 0 team.ver_str = str(team.vereniging) team.ag_str = "%05.1f" % (team.aanvangsgemiddelde * aantal_pijlen) team.ag_str = team.ag_str.replace('.', ',') # TODO: dit scherm is zowel een kandidaat-deelnemerslijst als de uitslag # TODO: geen rank invullen na de cut rank += 1 team.rank = rank # for context['rk_teams'] = rk_teams if rk_teams.count() == 0: context['geen_teams'] = True menu_dynamics_competitie(self.request, context, comp_pk=comp.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: 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) if self.subset_filter: # BB/BKO mode context['subset_filter'] = True try: comp_pk = int(str( kwargs['comp_pk'][:6])) # afkappen voor de veiligheid comp = Competitie.objects.get(pk=comp_pk) except (ValueError, Competitie.DoesNotExist): raise Http404('Competitie niet gevonden') context['comp'] = comp comp.bepaal_fase() open_inschrijving = comp.fase <= 'G' subset = kwargs['subset'][:10] # afkappen voor de veiligheid if subset == 'auto': subset = 'alle' if subset == 'alle': # alle rayons context['rayon'] = 'Alle' rk_deelcomp_pks = (DeelCompetitie.objects.filter( competitie=comp, laag=LAAG_RK).values_list('pk', flat=True)) else: # alleen het gekozen rayon try: rayon_nr = int(str(subset)) # is al eerder afgekapt op 10 context['rayon'] = NhbRayon.objects.get(rayon_nr=rayon_nr) except (ValueError, NhbRayon.DoesNotExist): raise Http404('Selectie wordt niet ondersteund') rk_deelcomp_pks = (DeelCompetitie.objects.filter( competitie=comp, nhb_rayon=context['rayon']).values_list('pk', flat=True)) context['filters'] = filters = list() alle_filter = {'label': 'Alles'} if subset != 'alle': alle_filter['url'] = reverse('CompRayon:rayon-teams-alle', kwargs={ 'comp_pk': comp.pk, 'subset': 'alle' }) filters.append(alle_filter) for rayon in NhbRayon.objects.all(): rayon.label = 'Rayon %s' % rayon.rayon_nr if str(rayon.rayon_nr) != subset: rayon.url = reverse('CompRayon:rayon-teams-alle', kwargs={ 'comp_pk': comp.pk, 'subset': rayon.rayon_nr }) filters.append(rayon) # for else: # RKO mode 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') if deelcomp_rk.functie != self.functie_nu: # niet de beheerder raise PermissionDenied() rk_deelcomp_pks = [deelcomp_rk.pk] context['comp'] = comp = deelcomp_rk.competitie comp.bepaal_fase() open_inschrijving = comp.fase <= 'G' context['deelcomp'] = deelcomp_rk context['rayon'] = self.functie_nu.nhb_rayon if comp.afstand == '18': aantal_pijlen = 30 else: aantal_pijlen = 25 totaal_teams = 0 klassen = (CompetitieKlasse.objects.filter( competitie=comp, indiv=None, is_voor_teams_rk_bk=True).select_related( 'team', 'team__team_type').order_by('team__volgorde')) klasse2teams = dict() # [klasse] = list(teams) prev_sterkte = '' prev_team = None for klasse in klassen: klasse2teams[klasse] = list() if klasse.team.team_type != prev_team: prev_sterkte = '' prev_team = klasse.team.team_type min_ag_str = "%05.1f" % (klasse.min_ag * aantal_pijlen) min_ag_str = min_ag_str.replace('.', ',') if prev_sterkte: if klasse.min_ag > AG_NUL: klasse.sterkte_str = "sterkte " + min_ag_str + " tot " + prev_sterkte else: klasse.sterkte_str = "sterkte tot " + prev_sterkte else: klasse.sterkte_str = "sterkte " + min_ag_str + " en hoger" prev_sterkte = min_ag_str # for if open_inschrijving: tel_dit = 'tijdelijke_schutters' else: tel_dit = 'gekoppelde_schutters' rk_teams = (KampioenschapTeam.objects.select_related( 'vereniging', 'vereniging__regio', 'team_type', 'klasse', 'klasse__team').exclude(klasse=None).filter( deelcompetitie__in=rk_deelcomp_pks).annotate( sporter_count=Count(tel_dit)).order_by( 'klasse__team__volgorde', '-aanvangsgemiddelde', 'vereniging__ver_nr')) prev_klasse = None for team in rk_teams: if team.klasse != prev_klasse: team.break_before = True prev_klasse = team.klasse # team AG is 0.0 - 30.0 --> toon als score: 000.0 .. 900.0 ag_str = "%05.1f" % (team.aanvangsgemiddelde * aantal_pijlen) team.ag_str = ag_str.replace('.', ',') totaal_teams += 1 try: klasse2teams[team.klasse].append(team) except KeyError: # dit is geen acceptabele klasse (waarschijnlijk een regio klasse) # pas dit meteen even aan team.klasse = None team.save(update_fields=['klasse']) # for context['rk_teams'] = klasse2teams # zoek de teams die niet 'af' zijn rk_teams = (KampioenschapTeam.objects.select_related( 'vereniging', 'vereniging__regio', 'team_type', 'deelcompetitie').filter( deelcompetitie__in=rk_deelcomp_pks, klasse=None).annotate(sporter_count=Count(tel_dit)).order_by( 'team_type__volgorde', '-aanvangsgemiddelde', 'vereniging__ver_nr')) is_eerste = True for team in rk_teams: # team AG is 0.0 - 30.0 --> toon als score: 000,0 .. 900,0 ag_str = "%05.1f" % (team.aanvangsgemiddelde * aantal_pijlen) team.ag_str = ag_str.replace('.', ',') if comp.fase <= 'K' and self.rol_nu == Rollen.ROL_RKO: team.url_aanpassen = reverse('CompRayon:teams-rk-koppelen', kwargs={'rk_team_pk': team.pk}) totaal_teams += 1 team.break_before = is_eerste is_eerste = False # for context['rk_teams_niet_af'] = rk_teams context['totaal_teams'] = totaal_teams context['toon_klassen'] = comp.klassengrenzen_vastgesteld_rk_bk menu_dynamics_competitie(self.request, context, comp_pk=comp.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) ver = self.functie_nu.nhb_ver rayon = ver.regio.rayon 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, nhb_rayon=rayon, laag=LAAG_RK)) except (ValueError, DeelCompetitie.DoesNotExist): raise Http404('Competitie niet gevonden') context['deelcomp_rk'] = deelcomp_rk comp = deelcomp_rk.competitie comp.bepaal_fase() if comp.fase <= 'G': raise Http404('Pagina kan nog niet gebruikt worden') if comp.fase > 'L': raise Http404('Pagina kan niet meer gebruikt worden') mag_wijzigen = ('J' <= comp.fase <= 'K') deelnemers = ( KampioenschapSchutterBoog.objects.select_related( 'deelcompetitie', 'klasse__indiv', 'sporterboog__sporter', 'bij_vereniging').filter( deelcompetitie=deelcomp_rk, bij_vereniging=ver).order_by( 'klasse__indiv__volgorde', # groepeer per klasse 'volgorde', # oplopend op volgorde '-gemiddelde')) # aflopend op gemiddelde aantal_afgemeld = 0 aantal_bevestigd = 0 aantal_onbekend = 0 aantal_klassen = 0 klasse = -1 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 sporter = deelnemer.sporterboog.sporter deelnemer.naam_str = "[%s] %s" % (sporter.lid_nr, sporter.volledige_naam()) if mag_wijzigen: deelnemer.url_wijzig = reverse( 'CompRayon:wijzig-status-rk-deelnemer', kwargs={'deelnemer_pk': deelnemer.pk}) # tel de status van de deelnemers en eerste 8 reserveschutters 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_afgemeld'] = aantal_afgemeld context['aantal_onbekend'] = aantal_onbekend context['aantal_bevestigd'] = aantal_bevestigd 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) 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() context['comp'] = comp teamtype_afkorting = kwargs[ 'team_type'][:2] # afkappen voor de veiligheid # ver_nr is optioneel en resulteert in het nummer van de sporter try: ver_nr = kwargs['ver_nr'][:4] # afkappen voor de veiligheid ver_nr = int(ver_nr) except KeyError: # TODO: onmogelijk om hier te komen (ivm URL design) # zoek de vereniging die bij de huidige gebruiker past ver_nr = get_sporter_ver_nr(self.request) except ValueError: raise Http404('Verkeerd verenigingsnummer') try: ver = NhbVereniging.objects.select_related('regio').get( ver_nr=ver_nr) except NhbVereniging.DoesNotExist: raise Http404('Vereniging niet gevonden') context['ver'] = ver self._maak_filter_knoppen(context, comp, ver_nr, teamtype_afkorting) teamtype = context['teamtype'] if not teamtype: raise Http404('Team type niet bekend') regio_nr = ver.regio.regio_nr context['url_terug'] = reverse('CompUitslagen:uitslagen-regio-teams-n', kwargs={ 'comp_pk': comp.pk, 'team_type': teamtype.afkorting.lower(), 'regio_nr': regio_nr }) context['deelcomp'] = deelcomp = DeelCompetitie.objects.get( competitie=comp, nhb_regio=ver.regio) context['toon_punten'] = (deelcomp.regio_team_punten_model != TEAM_PUNTEN_MODEL_SOM_SCORES) # zoek alle verenigingsteams erbij teams = (RegiocompetitieTeam.objects.exclude(klasse=None).filter( deelcompetitie=deelcomp, team_type=context['teamtype'], vereniging=ver).order_by('klasse__team__volgorde')) pk2team = dict() for team in teams: pk2team[team.pk] = team team.rondes = list() team.ronde_scores = list() team.ronde_punten = list() team.naam_str = "[%s] %s" % (team.vereniging.ver_nr, team.team_naam) team.totaal_score = 0 team.totaal_punten = 0 team.leden = dict() # [deelnemer.pk] = [ronde status, ..] # for ronde_teams = (RegiocompetitieRondeTeam.objects.filter( team__in=teams).prefetch_related( 'deelnemers_geselecteerd', 'deelnemers_feitelijk', 'scorehist_feitelijk').order_by('ronde_nr')) for ronde_team in ronde_teams: team = pk2team[ronde_team.team.pk] team.rondes.append(ronde_team) team.ronde_scores.append(ronde_team.team_score) if ronde_team.ronde_nr < deelcomp.huidige_team_ronde: team.ronde_punten.append(ronde_team.team_punten) else: team.ronde_punten.append(-1) team.totaal_score += ronde_team.team_score team.totaal_punten += ronde_team.team_punten # haal de bevroren scores op sb2score = dict() # [sporterboog.pk] = score_waarde for scorehist in (ronde_team.scorehist_feitelijk.select_related( 'score', 'score__sporterboog').all()): sb2score[ scorehist.score.sporterboog.pk] = scorehist.nieuwe_waarde # for geselecteerd_pks = list() for deelnemer in ronde_team.deelnemers_geselecteerd.all(): geselecteerd_pks.append(deelnemer.pk) if deelnemer.pk not in team.leden: team.leden[deelnemer.pk] = voorgaand = list() while len(voorgaand) < ronde_team.ronde_nr: inzet = SimpleNamespace(tekst='-', score=-1) voorgaand.append(inzet) # while # for for deelnemer in ronde_team.deelnemers_feitelijk.all(): try: voorgaand = team.leden[deelnemer.pk] except KeyError: team.leden[deelnemer.pk] = voorgaand = list() while len(voorgaand) < ronde_team.ronde_nr: inzet = SimpleNamespace(tekst='-', score=-1) voorgaand.append(inzet) # while try: score = sb2score[deelnemer.sporterboog.pk] except KeyError: # geen score van deze sporter score = 0 score_str = str(score) if deelnemer.pk not in geselecteerd_pks: score_str = '* ' + score_str else: geselecteerd_pks.remove(deelnemer.pk) inzet = SimpleNamespace(tekst=score_str, score=score) voorgaand.append(inzet) # for # samenvatting van deze ronde maken laagste_inzet = None laagste_score = 9999 aantal_scores = 0 for deelnemer_pk, voorgaand in team.leden.items(): # iedereen die voorheen in het team zaten door laten groeien if len(voorgaand) <= ronde_team.ronde_nr: if deelnemer_pk in geselecteerd_pks: # was geselecteerd voor deze ronde, dus uitvaller inzet = SimpleNamespace(tekst='-', score=-1) else: # niet geselecteerd voor deze ronde inzet = SimpleNamespace(tekst='', score=-1) voorgaand.append(inzet) # track het aantal scores en de laagste score inzet = voorgaand[-1] if inzet.score >= 0: aantal_scores += 1 if inzet.score < laagste_score: laagste_score = inzet.score laagste_inzet = inzet # for if aantal_scores > 3 and laagste_inzet: # de score die buiten de top-3 valt wegstrepen laagste_inzet.is_laagste = True # for # converteer de team leden pks = list() for team in teams: pks.extend(team.leden.keys()) # for pk2deelnemer = dict() for deelnemer in (RegioCompetitieSchutterBoog.objects.select_related( 'sporterboog', 'sporterboog__sporter').filter(pk__in=pks)): pk2deelnemer[deelnemer.pk] = deelnemer # for for team in teams: nieuw = list() for pk, voorgaand in team.leden.items(): deelnemer = pk2deelnemer[pk] sporter = deelnemer.sporterboog.sporter deelnemer.naam_str = "[%s] %s" % (sporter.lid_nr, sporter.volledige_naam()) totaal = sum(inzet.score for inzet in voorgaand) tup = (totaal, deelnemer.pk, deelnemer, voorgaand[1:]) nieuw.append(tup) # for # TODO: sorteren zou eerder moeten zodat de doorgestreepte nul altijd de onderste is nieuw.sort(reverse=True) team.leden = [(deelnemer, voorgaand) for _, _, deelnemer, voorgaand in nieuw] # for # sorteer de teams unsorted_teams = list() for team in teams: tup = (team.klasse.team.volgorde, team.totaal_punten, team.totaal_score, team.pk, team) while len(team.ronde_scores) < 7: team.ronde_scores.append('-') while len(team.ronde_punten) < 7: team.ronde_punten.append(-1) unsorted_teams.append(tup) # for unsorted_teams.sort() context['teams'] = teams = list() for tup in unsorted_teams: team = tup[-1] team.klasse_str = team.klasse.team.beschrijving teams.append(team) # for context['geen_teams'] = (len(teams) == 0) menu_dynamics_competitie(self.request, context, comp_pk=comp.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: 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() context['comp'] = comp comp_boog = kwargs['comp_boog'][:2] # afkappen voor de veiligheid # rayon_nr is optioneel (eerste binnenkomst zonder rayon nummer) try: rayon_nr = kwargs['rayon_nr'][:2] # afkappen voor de veiligheid rayon_nr = int(rayon_nr) except KeyError: rayon_nr = get_sporter_rayon_nr(self.request) except ValueError: raise Http404('Verkeerd rayonnummer') self._maak_filter_knoppen(context, comp, rayon_nr, comp_boog) boogtype = context['comp_boog'] if not boogtype: raise Http404('Boogtype niet bekend') try: deelcomp = (DeelCompetitie.objects.select_related( 'competitie', 'nhb_rayon', 'plan').prefetch_related('plan__wedstrijden').get( laag=LAAG_RK, competitie__is_afgesloten=False, competitie=comp, nhb_rayon__rayon_nr=rayon_nr)) except DeelCompetitie.DoesNotExist: raise Http404('Competitie niet gevonden') context['deelcomp'] = deelcomp deelcomp.competitie.bepaal_fase() # haal de planning erbij: competitieklasse --> competitiewedstrijd indiv2wedstrijd = dict() # [indiv_pk] = competitiewedstrijd wedstrijd_pks = list( deelcomp.plan.wedstrijden.values_list('pk', flat=True)) for wedstrijd in (CompetitieWedstrijd.objects.prefetch_related( 'indiv_klassen').select_related('locatie').filter( pk__in=wedstrijd_pks)): if wedstrijd.locatie: wedstrijd.adres_str = ", ".join( wedstrijd.locatie.adres.split('\n')) for indiv in wedstrijd.indiv_klassen.all(): indiv2wedstrijd[indiv.pk] = wedstrijd # for # for wkl2limiet = dict() # [pk] = aantal if deelcomp.heeft_deelnemerslijst: # deelnemers/reserveschutters van het RK tonen deelnemers = ( KampioenschapSchutterBoog.objects.exclude( bij_vereniging__isnull=True) # attentie gevallen .exclude(deelname=DEELNAME_NEE ) # geen sporters die zich afgemeld hebben .filter(deelcompetitie=deelcomp, klasse__indiv__boogtype=boogtype, volgorde__lte=48) # toon tot 48 sporters per klasse .select_related('klasse__indiv', 'sporterboog__sporter', 'sporterboog__sporter__bij_vereniging', 'bij_vereniging').order_by( 'klasse__indiv__volgorde', 'volgorde')) for limiet in (DeelcompetitieKlasseLimiet.objects.select_related( 'klasse').filter(deelcompetitie=deelcomp)): wkl2limiet[limiet.klasse.pk] = limiet.limiet # for context['is_lijst_rk'] = True else: # competitie is nog in de regiocompetitie fase context['regiocomp_nog_actief'] = True # sporters moeten uit LAAG_REGIO gehaald worden, uit de 4 regio's van het rayon deelcomp_pks = (DeelCompetitie.objects.filter( laag=LAAG_REGIO, competitie__is_afgesloten=False, competitie=comp, nhb_regio__rayon__rayon_nr=rayon_nr).values_list('pk', flat=True)) deelnemers = (RegioCompetitieSchutterBoog.objects.filter( deelcompetitie__pk__in=deelcomp_pks, klasse__indiv__boogtype=boogtype, aantal_scores__gte=comp.aantal_scores_voor_rk_deelname ).select_related('klasse__indiv', 'sporterboog__sporter', 'sporterboog__sporter__bij_vereniging', 'bij_vereniging').order_by( 'klasse__indiv__volgorde', '-gemiddelde')) klasse = -1 limiet = 24 for deelnemer in deelnemers: deelnemer.break_klasse = (klasse != deelnemer.klasse.indiv.volgorde) if deelnemer.break_klasse: indiv = deelnemer.klasse.indiv deelnemer.klasse_str = indiv.beschrijving try: deelnemer.wedstrijd = indiv2wedstrijd[indiv.pk] except KeyError: pass try: limiet = wkl2limiet[deelnemer.klasse.pk] except KeyError: limiet = 24 klasse = deelnemer.klasse.indiv.volgorde sporter = deelnemer.sporterboog.sporter deelnemer.naam_str = "[%s] %s" % (sporter.lid_nr, sporter.volledige_naam()) deelnemer.ver_str = str(deelnemer.bij_vereniging) deelnemer.geen_deelname_risico = deelnemer.sporterboog.sporter.bij_vereniging != deelnemer.bij_vereniging if deelcomp.heeft_deelnemerslijst: if deelnemer.rank > limiet: deelnemer.is_reserve = True # for context['deelnemers'] = deelnemers menu_dynamics_competitie(self.request, context, comp_pk=comp.pk) return context