Esempio n. 1
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)

        try:
            sporter_pk = kwargs['sporter_pk']
        except KeyError:
            sporter_pk = None
        sporter = self._get_sporter_or_404(self.request, sporter_pk)

        context[
            'geen_wedstrijden'] = geen_wedstrijden = sporter.bij_vereniging and sporter.bij_vereniging.geen_wedstrijden

        context['bogen'] = self._get_bogen(sporter, geen_wedstrijden)
        context['voorkeuren'], _ = SporterVoorkeuren.objects.get_or_create(
            sporter=sporter)
        context['sporter'] = sporter

        if self.rol_nu == Rollen.ROL_HWL:
            actief = 'vereniging'
            context['sporter_pk'] = sporter.pk
            context['is_hwl'] = True
        else:
            # niet de HWL maar de sporter zelf
            actief = 'sporter-profiel'
            if rol_mag_wisselen(self.request):
                # sporter is beheerder, dus toon opt-out opties
                context['email'] = sporter.account.accountemail_set.all()[0]

        context['opslaan_url'] = reverse('Sporter:voorkeuren')

        menu_dynamics(self.request, context, actief=actief)
        return context
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 test_func(self):
        """ called by the UserPassesTestMixin to verify the user has permissions to use this view """

        # evalueer opnieuw welke rechten de gebruiker heeft
        rol_evalueer_opnieuw(self.request)

        self.rol_nu, self.functie_nu = rol_get_huidige_functie(self.request)

        return self.request.user.is_authenticated and rol_mag_wisselen(
            self.request)
Esempio n. 4
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. 5
0
 def test_func(self):
     """ called by the UserPassesTestMixin to verify the user has permissions to use this view """
     return rol_mag_wisselen(self.request)
Esempio n. 6
0
    def post(self, request, *args, **kwargs):
        """ Deze functie wordt aangeroepen als een POST request ontvangen is."""

        sporter = self._get_sporter_or_404(
            request, request.POST.get('sporter_pk', None))

        # sla de nieuwe voorkeuren op in SporterBoog records (1 per boogtype)
        # werkt alleen na een GET (maakt de SporterBoog records aan)
        for obj in (SporterBoog.objects.filter(
                sporter=sporter).select_related('boogtype')):

            # wedstrijdboog
            old_voor_wedstrijd = obj.voor_wedstrijd
            obj.voor_wedstrijd = False
            if request.POST.get('schiet_' + obj.boogtype.afkorting, None):
                obj.voor_wedstrijd = True

            # informatie over de boog
            old_heeft_interesse = obj.heeft_interesse
            obj.heeft_interesse = False
            if request.POST.get('info_' + obj.boogtype.afkorting, None):
                obj.heeft_interesse = True

            if (old_voor_wedstrijd != obj.voor_wedstrijd
                    or old_heeft_interesse != obj.heeft_interesse):
                # wijzigingen opslaan
                obj.save()
        # for

        voorkeuren, _ = SporterVoorkeuren.objects.get_or_create(
            sporter=sporter)

        old_eigen_blazoen = voorkeuren.voorkeur_eigen_blazoen
        voorkeuren.voorkeur_eigen_blazoen = False
        if request.POST.get('voorkeur_eigen_blazoen', None):
            voorkeuren.voorkeur_eigen_blazoen = True

        old_voorkeur_meedoen_competitie = voorkeuren.voorkeur_meedoen_competitie
        voorkeuren.voorkeur_meedoen_competitie = False
        if request.POST.get('voorkeur_meedoen_competitie', None):
            voorkeuren.voorkeur_meedoen_competitie = True

        if (old_voorkeur_meedoen_competitie !=
                voorkeuren.voorkeur_meedoen_competitie
                or old_eigen_blazoen != voorkeuren.voorkeur_eigen_blazoen):
            # wijzigingen opslaan
            voorkeuren.save(update_fields=[
                'voorkeur_eigen_blazoen', 'voorkeur_meedoen_competitie'
            ])

        if sporter.para_classificatie:
            para_notitie = request.POST.get('para_notitie', '')
            if para_notitie != voorkeuren.opmerking_para_sporter:
                # wijziging opslaan
                voorkeuren.opmerking_para_sporter = para_notitie
                voorkeuren.save(update_fields=['opmerking_para_sporter'])

        old_disc_outdoor = voorkeuren.voorkeur_discipline_outdoor
        voorkeuren.voorkeur_discipline_outdoor = False
        if request.POST.get('voorkeur_disc_outdoor', None):
            voorkeuren.voorkeur_discipline_outdoor = True

        old_disc_indoor = voorkeuren.voorkeur_discipline_indoor
        voorkeuren.voorkeur_discipline_indoor = False
        if request.POST.get('voorkeur_disc_indoor', None):
            voorkeuren.voorkeur_discipline_indoor = True

        old_disc_25m1p = voorkeuren.voorkeur_discipline_25m1pijl
        voorkeuren.voorkeur_discipline_25m1pijl = False
        if request.POST.get('voorkeur_disc_25m1p', None):
            voorkeuren.voorkeur_discipline_25m1pijl = True

        old_disc_clout = voorkeuren.voorkeur_discipline_clout
        voorkeuren.voorkeur_discipline_clout = False
        if request.POST.get('voorkeur_disc_clout', None):
            voorkeuren.voorkeur_discipline_clout = True

        old_disc_veld = voorkeuren.voorkeur_discipline_veld
        voorkeuren.voorkeur_discipline_veld = False
        if request.POST.get('voorkeur_disc_veld', None):
            voorkeuren.voorkeur_discipline_veld = True

        old_disc_run = voorkeuren.voorkeur_discipline_run
        voorkeuren.voorkeur_discipline_run = False
        if request.POST.get('voorkeur_disc_run', None):
            voorkeuren.voorkeur_discipline_run = True

        old_disc_3d = voorkeuren.voorkeur_discipline_3d
        voorkeuren.voorkeur_discipline_3d = False
        if request.POST.get('voorkeur_disc_3d', None):
            voorkeuren.voorkeur_discipline_3d = True

        if (old_disc_outdoor != voorkeuren.voorkeur_discipline_outdoor
                or old_disc_indoor != voorkeuren.voorkeur_discipline_indoor
                or old_disc_25m1p != voorkeuren.voorkeur_discipline_25m1pijl
                or old_disc_clout != voorkeuren.voorkeur_discipline_clout
                or old_disc_veld != voorkeuren.voorkeur_discipline_veld
                or old_disc_run != voorkeuren.voorkeur_discipline_run
                or old_disc_3d != voorkeuren.voorkeur_discipline_3d):
            # wijzigingen opslaan
            voorkeuren.save(update_fields=[
                'voorkeur_discipline_25m1pijl', 'voorkeur_discipline_outdoor',
                'voorkeur_discipline_indoor', 'voorkeur_discipline_clout',
                'voorkeur_discipline_veld', 'voorkeur_discipline_run',
                'voorkeur_discipline_3d'
            ])

        del voorkeuren

        if self.rol_nu != Rollen.ROL_HWL:
            if rol_mag_wisselen(self.request):
                account = request.user
                email = account.accountemail_set.all()[0]
                updated = list()

                optout_nieuwe_taak = False
                if request.POST.get('optout_nieuwe_taak'):
                    optout_nieuwe_taak = True
                if email.optout_nieuwe_taak != optout_nieuwe_taak:
                    # wijziging doorvoeren
                    email.optout_nieuwe_taak = optout_nieuwe_taak
                    updated.append('optout_nieuwe_taak')

                optout_herinnering_taken = False
                if request.POST.get('optout_herinnering_taken'):
                    optout_herinnering_taken = True

                if email.optout_herinnering_taken != optout_herinnering_taken:
                    # wijziging doorvoeren
                    email.optout_herinnering_taken = optout_herinnering_taken
                    updated.append('optout_herinnering_taken')

                # wijziging opslaan
                if len(updated):
                    email.save(update_fields=updated)

        if self.rol_nu == Rollen.ROL_HWL:
            # stuur de HWL terug naar zijn ledenlijst
            return HttpResponseRedirect(reverse('Vereniging:leden-voorkeuren'))

        return HttpResponseRedirect(reverse('Sporter:profiel'))