Esempio n. 1
0
    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)
Esempio n. 2
0
    def test_geen_sessie(self):
        # probeer beveiliging tegen afwezigheid sessie variabelen
        # typisch tweedelijns, want views checken user.is_authenticated

        request = self.client

        self.assertTrue(
            SESSIONVAR_ROL_MAG_WISSELEN not in request.session.keys())
        res = rol_mag_wisselen(request)
        self.assertFalse(res)

        self.assertTrue(SESSIONVAR_ROL_HUIDIGE not in request.session.keys())
        rol_activeer_rol(request, 'schutter')
        self.assertTrue(SESSIONVAR_ROL_HUIDIGE not in request.session.keys())

        rol_activeer_functie(request, 'geen getal')
        self.assertTrue(
            SESSIONVAR_ROL_PALLET_FUNCTIES not in request.session.keys())
        rol_activeer_functie(request, 0)

        self.assertTrue(
            SESSIONVAR_ROL_PALLET_VAST not in request.session.keys())
        pallet = [tup for tup in rol_enum_pallet(request)]
        self.assertEqual(len(pallet), 0)
        rol_activeer_rol(request, 'geen')

        self.assertTrue(
            SESSIONVAR_ROL_BESCHRIJVING not in request.session.keys())
        self.assertEqual(rol_get_beschrijving(request), "?")
Esempio n. 3
0
def menu_dynamics(request, context, actief='hetplein'):
    """ Deze functie update the template context voor het dynamische gedrag van
        menu zoals de 'Andere rollen' en het menu item dat actief is.
    """

    # welke regel van het menu op laten lichten?
    context['menu_actief'] = actief
    if not (actief in ACTIEF_OPTIES or actief.startswith('competitie-')):
        raise AssertionError("menu_dynamics: Onbekende 'actief' waarde: %s" % repr(actief))

    # test server banner tonen?
    context['is_test_server'] = settings.IS_TEST_SERVER

    # zet context variabelen om aan te geven welke optionele delen van het menu getoond moeten worden
    context['toon_kalender'] = False
    if request.user.is_authenticated:

        # sidenav naam
        context['menu_toon_naam'] = True

        # wissel van rol toegestaan?
        if rol_mag_wisselen(request):
            rol = rol_get_huidige(request)

            context['toon_kalender'] = True

            # sidenav rol
            context['menu_rol_beschrijving'] = rol_get_beschrijving(request)

            # activeer menu 'wissel van rol'
            context['menu_show_wisselvanrol'] = True

            if rol in (Rollen.ROL_SEC, Rollen.ROL_HWL, Rollen.ROL_WL):
                context['menu_toon_vereniging'] = True

            if rol == Rollen.ROL_SPORTER:
                context['menu_toon_sporter_profiel'] = True

            if rol in (Rollen.ROL_BKO, Rollen.ROL_RKO, Rollen.ROL_RCL,
                       Rollen.ROL_SEC, Rollen.ROL_HWL, Rollen.ROL_WL):
                context['toon_kalender'] = False

            # taken
            if rol in (Rollen.ROL_BB,
                       Rollen.ROL_BKO, Rollen.ROL_RKO, Rollen.ROL_RCL,
                       Rollen.ROL_HWL):
                context['menu_show_taken'] = True
                context['menu_aantal_open_taken'] = aantal_open_taken(request)
        else:
            context['menu_toon_sporter_profiel'] = True

    # het label met de scherm grootte boven aan het scherm
    context['toon_schermgrootte'] = settings.DEBUG
Esempio n. 4
0
    def _get_competitie_overzicht_hwl(self, request, context, comp):

        context['huidige_rol'] = rol_get_beschrijving(request)

        # haal zowel de 18m als 25m deelcompetities op in de regio van de HWL
        context['planning_deelcomp'] = (DeelCompetitie
                                        .objects
                                        .filter(competitie=comp,
                                                laag=LAAG_REGIO,
                                                is_afgesloten=False,
                                                nhb_regio=self.functie_nu.nhb_ver.regio))

        for deelcomp in context['planning_deelcomp']:
            comp.regio_einde_teams_aanmaken = deelcomp.einde_teams_aanmaken
        # for

        comp.url_inschrijvingen = reverse('CompInschrijven:lijst-regiocomp-regio',
                                          kwargs={'comp_pk': comp.pk,
                                                  'regio_pk': self.functie_nu.nhb_ver.regio.pk})

        return TEMPLATE_COMPETITIE_OVERZICHT_HWL
Esempio n. 5
0
    def _get_competitie_overzicht_beheerder(self, request, context, comp):

        kan_beheren = False

        context['huidige_rol'] = rol_get_beschrijving(request)
        context['toon_functies'] = self.rol_nu in (Rollen.ROL_BB, Rollen.ROL_BKO, Rollen.ROL_RKO)

        if self.functie_nu:
            # kijk of deze rol nog iets te doen heeft
            context['rol_is_klaar'] = True

            # toon de competitie waar de functie een rol in heeft of had (BKO/RKO/RCL)
            for deelcomp in (DeelCompetitie
                             .objects
                             .filter(competitie=comp,
                                     functie=self.functie_nu)):
                kan_beheren = True
                deelcomp.competitie.bepaal_fase()
                if not deelcomp.is_afgesloten:
                    context['rol_is_klaar'] = False
            # for
        else:
            # toon alle competities (IT/BB)
            context['rol_is_klaar'] = False

        context['object_list'] = list()

        context['regio_instellingen_globaal'] = True

        if self.rol_nu == Rollen.ROL_BB:
            context['rol_is_bb'] = True
            kan_beheren = True

            if not comp.klassengrenzen_vastgesteld:
                afstand_meter = int(comp.afstand)
                datum = wanneer_ag_vastgesteld(afstand_meter)
                if datum:
                    context['datum_ag_vastgesteld'] = localize(datum.date())
                context['comp_afstand'] = comp.afstand
                comp.url_ag_vaststellen = reverse('Competitie:ag-vaststellen-afstand',
                                                  kwargs={'afstand': comp.afstand})

            context['planning_deelcomp'] = (DeelCompetitie
                                            .objects
                                            .filter(competitie=comp,
                                                    laag=LAAG_BK)
                                            .select_related('competitie')
                                            .order_by('competitie__afstand'))
            for obj in context['planning_deelcomp']:
                kan_beheren = True

                obj.titel = 'Planning'
                obj.tekst = 'Landelijke planning voor deze competitie.'
                obj.url = reverse('Competitie:bond-planning',
                                  kwargs={'deelcomp_pk': obj.pk})
            # for

        if self.rol_nu in (Rollen.ROL_BB, Rollen.ROL_BKO, Rollen.ROL_RKO):
            # laat alle teams zien, ook de teams die nog niet af zijn of nog niet in een poule zitten
            # vanaf fase E laten we dit niet meer zien en komen de RK Teams in beeld
            if comp.fase < 'E':
                context['tekst_regio_teams_alle'] = "Alle teams inzien van de regiocompetitie."
                context['url_regio_teams_alle'] = reverse('CompRegio:regio-teams-alle',
                                                          kwargs={'comp_pk': comp.pk,
                                                                  'subset': 'auto'})

        if comp.fase == 'J' and not comp.klassengrenzen_vastgesteld_rk_bk and self.rol_nu == Rollen.ROL_BKO:
            context['tekst_klassengrenzen_rk_bk_vaststellen'] = "Open inschrijving RK teams sluiten en de klassengrenzen voor het RK teams en BK teams vaststellen."
            context['url_klassengrenzen_rk_bk_vaststellen'] = reverse('CompRayon:klassengrenzen-vaststellen-rk-bk-teams',
                                                                      kwargs={'comp_pk': comp.pk})

        if self.rol_nu in (Rollen.ROL_BB, Rollen.ROL_BKO):
            if comp.fase < 'L':
                context['tekst_rayon_teams_alle'] = "Alle aangemelde teams voor de rayonkampioenschappen teams in deze competitie"
                context["url_rayon_teams_alle"] = reverse('CompRayon:rayon-teams-alle',
                                                          kwargs={'comp_pk': comp.pk,
                                                                  'subset': 'auto'})

        if self.rol_nu == Rollen.ROL_RCL:
            toon_handmatige_ag = False
            context['toon_clusters'] = True
            context['planning_deelcomp'] = (DeelCompetitie
                                            .objects
                                            .filter(competitie=comp,
                                                    functie=self.functie_nu,
                                                    is_afgesloten=False)
                                            .select_related('nhb_regio', 'competitie'))
            for obj in context['planning_deelcomp']:
                kan_beheren = True

                obj.titel = 'Planning Regio %s' % obj.nhb_regio.regio_nr
                obj.tekst = 'Planning van de wedstrijden in %s voor deze competitie.' % obj.nhb_regio.naam
                obj.url = reverse('CompRegio:regio-planning',
                                  kwargs={'deelcomp_pk': obj.pk})

                if obj.regio_organiseert_teamcompetitie and 'E' <= comp.fase <= 'F':
                    obj.titel_team_ronde = "Team Ronde"
                    obj.tekst_team_ronde = "Stel de team punten vast en zet de teamcompetitie door naar de volgende ronde."
                    obj.url_team_ronde = reverse('CompRegio:start-volgende-team-ronde',
                                                 kwargs={'deelcomp_pk': obj.pk})

                obj.tekst_scores = "Scores invoeren en aanpassen voor %s voor deze competitie." % obj.nhb_regio.naam
                obj.url_scores = reverse('CompScores:scores-rcl',
                                         kwargs={'deelcomp_pk': obj.pk})

                if obj.regio_organiseert_teamcompetitie:
                    obj.tekst_regio_teams = "Teams voor de regiocompetitie in %s inzien voor deze competitie." % obj.nhb_regio.naam
                    obj.url_regio_teams = reverse('CompRegio:regio-teams',
                                                  kwargs={'deelcomp_pk': obj.pk})

                    # poules kaartje alleen het head-to-head puntenmodel gekozen is
                    if obj.heeft_poules_nodig():
                        obj.tekst_poules = "Poules voor directe teamwedstrijden tussen teams in deze regiocompetitie."
                        obj.url_poules = reverse('CompRegio:regio-poules',
                                                 kwargs={'deelcomp_pk': obj.pk})

                    toon_handmatige_ag = True

                comp.regio_einde_teams_aanmaken = obj.einde_teams_aanmaken
            # for

            if comp.fase <= 'F':
                comp.url_regio_instellingen = reverse('CompRegio:regio-instellingen',
                                                      kwargs={'comp_pk': comp.pk,
                                                              'regio_nr': self.functie_nu.nhb_regio.regio_nr})

                if toon_handmatige_ag:
                    comp.url_regio_handmatige_ag = reverse('CompRegio:regio-ag-controle',
                                                           kwargs={'comp_pk': comp.pk,
                                                                   'regio_nr': self.functie_nu.nhb_regio.regio_nr})

            if 'B' <= comp.fase <= 'E':
                comp.url_inschrijvingen = reverse('CompInschrijven:lijst-regiocomp-regio',
                                                  kwargs={'comp_pk': comp.pk,
                                                          'regio_pk': self.functie_nu.nhb_regio.pk})

            if comp.fase >= 'E':
                context['afsluiten_deelcomp'] = (DeelCompetitie
                                                 .objects
                                                 .filter(competitie=comp,
                                                         functie=self.functie_nu,
                                                         is_afgesloten=False)
                                                 .select_related('nhb_regio', 'competitie'))
                for obj in context['afsluiten_deelcomp']:
                    kan_beheren = True

                    obj.titel = 'Sluit Regiocompetitie'
                    obj.tekst = 'Bevestig eindstand %s voor de %s.' % (obj.nhb_regio.naam, obj.competitie.beschrijving)
                    obj.url_afsluiten = reverse('CompRegio:afsluiten-regiocomp',
                                                kwargs={'deelcomp_pk': obj.pk})
                # for

            context['regio_instellingen_globaal'] = False

        elif self.rol_nu == Rollen.ROL_RKO:
            deelcomp_rks = (DeelCompetitie
                            .objects
                            .select_related('nhb_rayon', 'competitie')
                            .filter(competitie=comp,
                                    functie=self.functie_nu,
                                    is_afgesloten=False))
            if len(deelcomp_rks):
                kan_beheren = True

                deelcomp_rk = deelcomp_rks[0]

                deelcomp_rk.titel = 'Planning %s' % deelcomp_rk.nhb_rayon.naam
                deelcomp_rk.tekst = 'Planning voor %s voor deze competitie.' % deelcomp_rk.nhb_rayon.naam
                deelcomp_rk.url = reverse('CompRayon:rayon-planning',
                                          kwargs={'rk_deelcomp_pk': deelcomp_rk.pk})

                deelcomp_rk.tekst_rayon_teams = "Aangemelde teams inzien voor de rayonkampioenschappen in Rayon %s, voor deze competitie." % deelcomp_rk.nhb_rayon.rayon_nr
                deelcomp_rk.url_rayon_teams = reverse('CompRayon:rayon-teams',
                                                      kwargs={'rk_deelcomp_pk': deelcomp_rk.pk})

                context['planning_deelcomp'] = [deelcomp_rk, ]

                # geeft de RKO de mogelijkheid om de deelnemerslijst voor het RK te bewerken
                context['url_lijst_rk'] = reverse('CompRayon:lijst-rk',
                                                  kwargs={'rk_deelcomp_pk': deelcomp_rk.pk})

                context['url_limieten_rk'] = reverse('CompRayon:rayon-limieten',
                                                     kwargs={'rk_deelcomp_pk': deelcomp_rk.pk})

            if 'B' <= comp.fase <= 'E':
                comp.url_inschrijvingen = reverse('CompInschrijven:lijst-regiocomp-rayon',
                                                  kwargs={'comp_pk': comp.pk,
                                                          'rayon_pk': self.functie_nu.nhb_rayon.pk})

        elif self.rol_nu == Rollen.ROL_BKO:
            context['planning_deelcomp'] = (DeelCompetitie
                                            .objects
                                            .filter(competitie=comp,
                                                    functie=self.functie_nu,
                                                    is_afgesloten=False)
                                            .select_related('competitie'))
            for obj in context['planning_deelcomp']:
                kan_beheren = True

                obj.titel = 'Planning'
                obj.tekst = 'Landelijke planning voor deze competitie.'
                obj.url = reverse('Competitie:bond-planning',
                                  kwargs={'deelcomp_pk': obj.pk})

                # geef de BKO de mogelijkheid om
                # - de regiocompetitie door te zetten naar de rayonkampioenschappen
                # - de RK door te zetten naar de BK
                if 'E' <= comp.fase <= 'G':
                    comp.url_doorzetten = reverse('Competitie:bko-doorzetten-naar-rk',
                                                  kwargs={'comp_pk': comp.pk})
                    comp.titel_doorzetten = '%s doorzetten naar de volgende fase (Regio naar RK)' % comp.beschrijving
                    context['bko_doorzetten'] = comp
                elif 'M' <= comp.fase < 'P':
                    comp.url_doorzetten = reverse('Competitie:bko-doorzetten-naar-bk',
                                                  kwargs={'comp_pk': comp.pk})
                    comp.titel_doorzetten = '%s doorzetten naar de volgende fase (RK naar BK)' % comp.beschrijving
                    context['bko_doorzetten'] = comp
                elif 'R' <= comp.fase < 'Z':
                    comp.url_afsluiten = reverse('Competitie:bko-competitie-afsluiten',
                                                 kwargs={'comp_pk': comp.pk})
                    comp.titel_afsluiten = '%s helemaal afsluiten' % comp.beschrijving
                    context['bko_afsluiten'] = comp
            # for

        if kan_beheren:
            template_name = TEMPLATE_COMPETITIE_OVERZICHT_BEHEERDER
        else:
            template_name = TEMPLATE_COMPETITIE_OVERZICHT

        return template_name
Esempio n. 6
0
    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['geen_wedstrijden'] = True

        pks1 = list(
            DeelcompetitieRonde.objects.filter(
                deelcompetitie__is_afgesloten=False,
                plan__wedstrijden__vereniging=self.functie_nu.nhb_ver,
                deelcompetitie__laag=LAAG_REGIO).values_list(
                    'plan__wedstrijden', flat=True))

        pks2 = list(
            DeelCompetitie.objects.filter(
                is_afgesloten=False,
                plan__wedstrijden__vereniging=self.functie_nu.nhb_ver,
                laag__in=(LAAG_RK, LAAG_BK)).
            exclude(
                plan__wedstrijden=None)  # excludes when ManyToMany is empty
            .values_list('plan__wedstrijden', flat=True))

        pks = list(pks1) + list(pks2)

        is_mix = (1 <= len(pks2) < len(pks1))

        wedstrijden = (CompetitieWedstrijd.objects.filter(pk__in=pks).order_by(
            'datum_wanneer', 'tijd_begin_wedstrijd'))

        for wedstrijd in wedstrijden:
            # voor competitiewedstrijden wordt de beschrijving ingevuld
            # als de instellingen van de ronde opgeslagen worden
            # dit is slechts fall-back
            if wedstrijd.beschrijving == "":
                # als deze wedstrijd bij een competitieronde hoort,
                # maak een passende beschrijving voor

                # CompetitieWedstrijd --> CompetitieWedstrijdenPlan --> DeelcompetitieRonde / DeelCompetitie
                plan = wedstrijd.competitiewedstrijdenplan_set.all()[0]
                if plan.deelcompetitieronde_set.count() > 0:
                    ronde = plan.deelcompetitieronde_set.select_related(
                        'deelcompetitie',
                        'deelcompetitie__competitie').all()[0]
                    wedstrijd.beschrijving1 = ronde.deelcompetitie.competitie.beschrijving
                    wedstrijd.beschrijving2 = ronde.beschrijving
                else:
                    deelcomp = plan.deelcompetitie_set.select_related(
                        'competitie').all()[0]
                    wedstrijd.beschrijving1 = deelcomp.competitie.beschrijving
                    if deelcomp.laag == LAAG_RK:
                        wedstrijd.beschrijving2 = "Rayonkampioenschappen"
                    else:
                        wedstrijd.beschrijving2 = "Bondskampioenschappen"
            else:
                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 = ''

            wedstrijd.is_rk = (
                wedstrijd.beschrijving2 == 'Rayonkampioenschappen')
            wedstrijd.is_bk = (
                wedstrijd.beschrijving2 == 'Bondskampioenschappen')
            wedstrijd.opvallen = (wedstrijd.is_rk
                                  or wedstrijd.is_bk) and is_mix

            wedstrijd.toon_geen_uitslag = True

            if not (wedstrijd.is_rk or wedstrijd.is_bk):
                heeft_uitslag = (wedstrijd.uitslag
                                 and wedstrijd.uitslag.scores.count() > 0)
                mag_wijzigen = self.uitslag_invoeren and not (
                    wedstrijd.uitslag and wedstrijd.uitslag.is_bevroren)
                if self.rol_nu in (Rollen.ROL_HWL,
                                   Rollen.ROL_WL) and mag_wijzigen:
                    # mag uitslag wijzigen
                    url = reverse('CompScores:uitslag-invoeren',
                                  kwargs={'wedstrijd_pk': wedstrijd.pk})
                    if heeft_uitslag:
                        wedstrijd.url_uitslag_aanpassen = url
                    else:
                        wedstrijd.url_score_invoeren = url
                    wedstrijd.toon_geen_uitslag = False
                else:
                    if heeft_uitslag:
                        wedstrijd.url_uitslag_bekijken = reverse(
                            'CompScores:uitslag-bekijken',
                            kwargs={'wedstrijd_pk': wedstrijd.pk})
                        wedstrijd.toon_geen_uitslag = False

            # link naar de waarschijnlijke deelnemerslijst
            if self.rol_nu in (Rollen.ROL_HWL, Rollen.ROL_WL) and not (
                    wedstrijd.uitslag and wedstrijd.uitslag.is_bevroren):
                if wedstrijd.is_rk or wedstrijd.is_bk:
                    wedstrijd.url_waarschijnlijke_deelnemers = reverse(
                        'CompRayon:download-formulier',
                        kwargs={'wedstrijd_pk': wedstrijd.pk})
                else:
                    wedstrijd.url_waarschijnlijke_deelnemers = reverse(
                        'CompRegio:waarschijnlijke-deelnemers',
                        kwargs={'wedstrijd_pk': wedstrijd.pk})

            context['geen_wedstrijden'] = False
        # for

        context['vereniging'] = self.functie_nu.nhb_ver
        context['huidige_rol'] = rol_get_beschrijving(self.request)
        context['wedstrijden'] = wedstrijden
        context['uitslag_invoeren'] = self.uitslag_invoeren

        menu_dynamics(self.request, context, actief='vereniging')
        return context
Esempio n. 7
0
    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['toon_rayon'] = True
        context['toon_regio'] = True
        context['toon_cluster'] = False
        context['toon_details'] = True
        context['toon_ledental'] = self.is_staff

        menu_actief = 'hetplein'

        context['huidige_rol'] = rol_get_beschrijving(self.request)

        context['landelijk'] = self.rol_nu in (Rollen.ROL_BB, Rollen.ROL_BKO)

        if self.rol_nu == Rollen.ROL_BB:
            context['contact_geen_beheerders'] = reverse(
                'Vereniging:contact-geen-beheerders')

        if self.rol_nu == Rollen.ROL_RKO:
            context['toon_rayon'] = False

        if self.rol_nu in (Rollen.ROL_RCL, Rollen.ROL_HWL, Rollen.ROL_SEC):
            context['toon_rayon'] = False
            context['toon_regio'] = False
            if self.rol_nu == Rollen.ROL_HWL:
                menu_actief = 'vereniging'

        context['verenigingen'] = verenigingen = self._get_verenigingen()

        # voeg de url toe voor de "details" knoppen
        for nhbver in verenigingen:

            nhbver.details_url = reverse('Vereniging:accommodatie-details',
                                         kwargs={'vereniging_pk': nhbver.pk})

            for loc in (
                    nhbver.
                    wedstrijdlocatie_set  # FUTURE: kost een query -> aparte ophalen in dict
                    .filter(zichtbaar=True)):
                if loc.baan_type == 'E':
                    nhbver.heeft_externe_locaties = True
                elif loc.baan_type == 'B':
                    nhbver.buiten_locatie = loc
                else:
                    nhbver.locatie = loc
            # for

            if nhbver.clusters.count() > 0:
                context['toon_cluster'] = True
                letters = [cluster.letter for cluster in nhbver.clusters.all()]
                letters.sort()
                nhbver.cluster_letters = ",".join(letters)

                if not context['toon_regio']:
                    # verander in 101a,b
                    nhbver.cluster_letters = str(
                        nhbver.regio.regio_nr) + nhbver.cluster_letters
        # for

        menu_dynamics(self.request, context, actief=menu_actief)
        return context
Esempio n. 8
0
    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)

        rol_nu, functie_nu = rol_get_huidige_functie(self.request)
        context['huidige_rol'] = rol_get_beschrijving(self.request)

        context['terug_url'] = reverse('Competitie:kies')

        # filter clusters die aangepast mogen worden op competitie type
        # waarvan de definitie heel handig overeen komt met cluster.gebruik
        context['gebruik'] = gebruik_filter = functie_nu.comp_type

        # probeer een competitie te vinden om te tonen in het menu
        try:
            deelcomp = DeelCompetitie.objects.get(
                competitie__afstand=gebruik_filter,
                nhb_regio=functie_nu.nhb_regio)
        except DeelCompetitie.DoesNotExist:
            comp_pk = None
        else:
            comp_pk = deelcomp.competitie.pk
            context['terug_url'] = reverse('Competitie:overzicht',
                                           kwargs={'comp_pk': comp_pk})

        # cluster namen
        objs = (NhbCluster.objects.filter(
            regio=functie_nu.nhb_regio,
            gebruik=gebruik_filter).select_related('regio').order_by('letter'))
        context['cluster_list'] = objs
        context['regio_heeft_clusters'] = objs.count() > 0
        context['opslaan_url'] = reverse('CompRegio:clusters')

        for obj in objs:
            obj.veld_naam = "naam_%s" % obj.pk
        # for

        # maak lijstje voor het formulier met de keuze opties van de pull-down lijstjes
        opts = objs[:]
        for opt in opts:
            opt.tekst = opt.cluster_code_str()
            opt.choice_name = str(opt.pk)  # gebruik de cluster pk als selector
        # for

        # voeg de "geen cluster" opties toe
        opt_geen = NhbCluster()
        opt_geen.tekst = "Geen"
        opt_geen.choice_name = "0"
        opts.insert(0, opt_geen)

        # vereniging in de regio
        objs = (NhbVereniging.objects.filter(regio=functie_nu.nhb_regio).
                prefetch_related('clusters').order_by('ver_nr'))
        context['object_list'] = objs

        for obj in objs:
            # voeg form-fields toe die voor de post gebruikt kunnen worden
            obj.veld_naam = 'ver_' + str(obj.ver_nr)

            # maak een kopie om een vlag te kunnen zetten op de huidige optie
            obj.cluster_opties = copy.deepcopy(opts)

            # zet de 'selected' vlag op de huidige cluster keuzes voor de vereniging
            for cluster in obj.clusters.all():
                # zoek dit cluster op
                for opt in obj.cluster_opties:
                    if opt.pk == cluster.pk:
                        opt.actief = True
                # for
            # for
        # for

        context['handleiding_clusters_url'] = reverse('Handleiding:Clusters')
        context['email_bondsbureau'] = settings.EMAIL_BONDSBUREAU

        if comp_pk:
            menu_dynamics_competitie(self.request, context, comp_pk=comp_pk)
        else:
            menu_dynamics(self.request, context, actief='competitie')

        return context