Exemple #1
0
    def _regioschutters_inschrijven(self):

        boog_c = BoogType.objects.get(afkorting='C')

        klasse_r = CompetitieKlasse.objects.filter(indiv__boogtype__afkorting='R',
                                                   indiv__is_onbekend=False,
                                                   indiv__niet_voor_rk_bk=False)[0]

        klasse_c = CompetitieKlasse.objects.filter(indiv__boogtype__afkorting='C',
                                                   indiv__is_onbekend=False,
                                                   indiv__niet_voor_rk_bk=False)[0]

        # recurve, lid 1
        RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_101,
                                    sporterboog=self.sporterboog,
                                    bij_vereniging=self.sporterboog.sporter.bij_vereniging,
                                    klasse=klasse_r,
                                    aantal_scores=7).save()

        # compound, lid 1
        sporterboog = SporterBoog(sporter=self.lid_sporter_1,
                                  boogtype=boog_c,
                                  voor_wedstrijd=True)
        sporterboog.save()

        RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_101,
                                    sporterboog=sporterboog,
                                    bij_vereniging=sporterboog.sporter.bij_vereniging,
                                    klasse=klasse_c,
                                    aantal_scores=6).save()

        # compound, lid2
        sporterboog = SporterBoog(sporter=self.lid_sporter_2,
                                  boogtype=boog_c,
                                  voor_wedstrijd=True)
        sporterboog.save()

        RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_101,
                                    sporterboog=sporterboog,
                                    bij_vereniging=sporterboog.sporter.bij_vereniging,
                                    klasse=klasse_c,
                                    aantal_scores=6).save()
Exemple #2
0
    def test_verwijder_dupe_data(self):
        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('verwijder_dupe_data', stderr=f1, stdout=f2)

        self.assertTrue(f1.getvalue() == '')
        self.assertTrue(f2.getvalue() == '')

        # maak een echte dupe aan
        dupe = RegioCompetitieSchutterBoog(
                    deelcompetitie=self.deelnemer_r.deelcompetitie,
                    sporterboog=self.deelnemer_r.sporterboog,
                    bij_vereniging=self.deelnemer_r.bij_vereniging,
                    klasse=self.deelnemer_r.klasse)
        dupe.save()

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('verwijder_dupe_data', stderr=f1, stdout=f2)

        self.assertTrue('Gebruik --commit om' in f1.getvalue())

        # maak nog een dupe aan, voor extra coverage
        dupe = RegioCompetitieSchutterBoog(
                    deelcompetitie=self.deelnemer_r.deelcompetitie,
                    sporterboog=self.deelnemer_r.sporterboog,
                    bij_vereniging=self.deelnemer_r.bij_vereniging,
                    klasse=self.deelnemer_r.klasse)
        dupe.save()

        f1 = io.StringIO()
        f2 = io.StringIO()
        with self.assert_max_queries(20):
            management.call_command('verwijder_dupe_data', '--commit', stderr=f1, stdout=f2)

        # print("f1: %s" % f1.getvalue())
        # print("f2: %s" % f2.getvalue())

        self.assertTrue('Verwijder alle data voor deelnemer 123456' in f2.getvalue())
        self.assertTrue(' 3 deelnemers' in f2.getvalue())
Exemple #3
0
    def test_ag_controle(self):
        self.e2e_login_and_pass_otp(self.account_rcl112_18)
        self.e2e_wissel_naar_functie(self.functie_rcl112_18)

        url = self.url_ag_controle % (self.comp_18.pk, 112)

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)
        self.assert_template_used(
            resp, ('compregio/rcl-ag-controle.dtl', 'plein/site_layout.dtl'))

        # maak een inschrijving met handmatig AG
        RegioCompetitieSchutterBoog(
            sporterboog=self.sporterboog,
            bij_vereniging=self.sporterboog.sporter.bij_vereniging,
            deelcompetitie=self.deelcomp_regio112_18,
            klasse=self.klasse_recurve_onbekend,
            inschrijf_voorkeur_team=True,
            ag_voor_team_mag_aangepast_worden=True,
            ag_voor_team=5.0).save()

        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assertEqual(resp.status_code, 200)  # 200 = OK
        self.assert_html_ok(resp)

        # verkeerde fase
        zet_competitie_fase(self.comp_18, 'K')
        with self.assert_max_queries(20):
            resp = self.client.get(url)
        self.assert404(resp)

        # bad pk
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_ag_controle % (999999, 999999))
        self.assert404(resp)

        # verkeerde regio
        with self.assert_max_queries(20):
            resp = self.client.get(self.url_ag_controle %
                                   (self.comp_18.pk, 110))
        self.assert403(resp)
Exemple #4
0
    def _schrijf_in_voor_competitie(deelcomp, sportersboog, skip=1):
        while len(sportersboog):
            sporterboog = sportersboog[0]

            # let op: de testen die een schutter doorschuiven vereisen dat schutter 100001 in klasse onbekend
            klassen = (CompetitieKlasse.objects.filter(
                competitie=deelcomp.competitie,
                indiv__is_onbekend=(sporterboog.sporter.lid_nr == 100001),
                indiv__boogtype=sporterboog.boogtype))

            aanmelding = RegioCompetitieSchutterBoog(deelcompetitie=deelcomp,
                                                     sporterboog=sporterboog)
            aanmelding.bij_vereniging = aanmelding.sporterboog.sporter.bij_vereniging

            if len(sportersboog) < len(klassen):
                aanmelding.klasse = klassen[len(sportersboog)]
            else:
                aanmelding.klasse = klassen[0]
            aanmelding.save()
            # print('ingeschreven: %s in klasse %s' % (aanmelding.sporterboog, aanmelding.klasse))

            sportersboog = sportersboog[skip:]
Exemple #5
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)

        # converteer en doe eerste controle op de parameters
        try:
            deelcomp_pk = int(
                kwargs['deelcomp_pk'][:10])  # afkappen voor de veiligheid
            sporterboog_pk = int(
                kwargs['sporterboog_pk'][:10])  # afkappen voor de veiligheid

            sporterboog = (SporterBoog.objects.select_related('sporter').get(
                pk=sporterboog_pk))

            deelcomp = (DeelCompetitie.objects.select_related(
                'competitie', 'nhb_regio').get(pk=deelcomp_pk))

        except (ValueError, KeyError):
            # vuilnis
            raise Http404()
        except (SporterBoog.DoesNotExist, DeelCompetitie.DoesNotExist):
            # niet bestaand record
            raise Http404('Sporter of competitie niet gevonden')

        # controleer dat de competitie aanmeldingen accepteert
        deelcomp.competitie.bepaal_fase()
        if deelcomp.competitie.fase < 'B' or deelcomp.competitie.fase >= 'F':
            raise Http404('Verkeerde competitie fase')

        # controleer dat sporterboog bij de ingelogde gebruiker hoort
        # controleer dat deelcompetitie bij de juist regio hoort
        account = self.request.user
        sporter = account.sporter_set.all()[
            0]  # ROL_SPORTER geeft bescherming tegen geen nhblid
        if (sporterboog.sporter != sporter or deelcomp.laag != LAAG_REGIO
                or deelcomp.nhb_regio != sporter.bij_vereniging.regio):
            raise Http404('Geen valide combinatie')

        # voorkom dubbele aanmelding
        if (RegioCompetitieSchutterBoog.objects.filter(
                deelcompetitie=deelcomp, sporterboog=sporterboog).count() > 0):
            # al aangemeld - zie niet hier moeten zijn gekomen
            raise Http404('Sporter is al aangemeld')

        # urlconf parameters geaccepteerd

        # bepaal in welke wedstrijdklasse de sporter komt
        age = sporterboog.sporter.bereken_wedstrijdleeftijd(
            deelcomp.competitie.begin_jaar + 1)

        # haal AG op, indien aanwezig
        scores = Score.objects.filter(
            sporterboog=sporterboog,
            type=SCORE_TYPE_INDIV_AG,
            afstand_meter=deelcomp.competitie.afstand)
        ag = Decimal(AG_NUL)
        if len(scores):
            score = scores[0]
            ag = Decimal(score.waarde) / 1000
            hist = ScoreHist.objects.filter(score=score).order_by('-when')
            if len(hist):
                context['ag_hist'] = hist[0]
        context['ag'] = ag

        aanmelding = RegioCompetitieSchutterBoog(deelcompetitie=deelcomp,
                                                 sporterboog=sporterboog,
                                                 ag_voor_indiv=ag)

        bepaler = KlasseBepaler(deelcomp.competitie)
        try:
            bepaler.bepaal_klasse_deelnemer(aanmelding)
        except LookupError as exc:
            raise Http404(str(exc))

        context['wedstrijdklasse'] = aanmelding.klasse.indiv.beschrijving
        context['is_klasse_onbekend'] = aanmelding.klasse.indiv.is_onbekend
        del aanmelding

        udvl = deelcomp.competitie.uiterste_datum_lid  # uiterste datum van lidmaatschap
        dvl = sporterboog.sporter.sinds_datum  # datum van lidmaatschap

        # geen aspirant, op tijd lid en op tijd aangemeld?
        mag_team_schieten = (deelcomp.regio_organiseert_teamcompetitie
                             and age > MAXIMALE_WEDSTRIJDLEEFTIJD_ASPIRANT
                             and dvl < udvl
                             and deelcomp.competitie.fase == 'B')
        context['mag_team_schieten'] = mag_team_schieten

        # bepaal de inschrijfmethode voor deze regio
        methode = deelcomp.inschrijf_methode

        context['deelcomp'] = deelcomp
        context['sporterboog'] = sporterboog
        context['voorkeuren'], _ = SporterVoorkeuren.objects.get_or_create(
            sporter=sporter)
        context['bevestig_url'] = reverse('CompInschrijven:aanmelden',
                                          kwargs={
                                              'sporterboog_pk': sporterboog.pk,
                                              'deelcomp_pk': deelcomp.pk
                                          })

        if methode == INSCHRIJF_METHODE_1:
            # toon de sporter alle wedstrijden in de regio, dus alle clusters
            pks = list()
            for ronde in (
                    DeelcompetitieRonde.objects.select_related('plan').filter(
                        deelcompetitie=deelcomp)):
                pks.extend(ronde.plan.wedstrijden.values_list('pk', flat=True))
            # for

            wedstrijden = (
                CompetitieWedstrijd.objects.filter(pk__in=pks).exclude(
                    vereniging__isnull=True
                )  # voorkom wedstrijd niet toegekend aan vereniging
                .select_related('vereniging').order_by('datum_wanneer',
                                                       'tijd_begin_wedstrijd'))

            # splits de wedstrijden op naar in-cluster en out-of-cluster
            ver = sporterboog.sporter.bij_vereniging
            ver_in_hwl_cluster = dict()  # [ver_nr] = True/False
            for cluster in (
                    ver.clusters.prefetch_related('nhbvereniging_set').filter(
                        gebruik=deelcomp.competitie.afstand).all()):
                ver_nrs = list(
                    cluster.nhbvereniging_set.values_list('ver_nr', flat=True))
                for ver_nr in ver_nrs:
                    ver_in_hwl_cluster[ver_nr] = True
                # for
            # for

            wedstrijden1 = list()
            wedstrijden2 = list()
            for wedstrijd in wedstrijden:
                try:
                    in_cluster = ver_in_hwl_cluster[
                        wedstrijd.vereniging.ver_nr]
                except KeyError:
                    in_cluster = False

                if in_cluster:
                    wedstrijden1.append(wedstrijd)
                else:
                    wedstrijden2.append(wedstrijd)
            # for

            if len(wedstrijden1):
                context['wedstrijden_1'] = wedstrijden1
                context['wedstrijden_2'] = wedstrijden2
            else:
                context['wedstrijden_1'] = wedstrijden2

        if methode == INSCHRIJF_METHODE_3:
            context['dagdelen'] = DAGDELEN
            if deelcomp.toegestane_dagdelen != '':
                dagdelen_spl = deelcomp.toegestane_dagdelen.split(',')
                context['dagdelen'] = list()
                for dagdeel in DAGDELEN:
                    # dagdeel = tuple(code, beschrijving)
                    # code = GN / AV / ZA / ZO / WE
                    if dagdeel[0] in dagdelen_spl:
                        context['dagdelen'].append(dagdeel)
                # for

        if deelcomp.competitie.afstand == '18':
            if sporterboog.boogtype.afkorting in ('R', 'BB'):
                context['show_dt'] = True

        menu_dynamics(self.request, context, actief='sporter-profiel')
        return context
Exemple #6
0
    def post(request, *args, **kwargs):
        """ Deze functie wordt aangeroepen als de sporter op zijn profiel pagina
            de knop Aanmelden gebruikt voor een specifieke regiocompetitie en boogtype.
        """
        # voorkom misbruik: ingelogd als niet geblokkeerd nhblid vereist
        sporter = None
        account = request.user
        if account.is_authenticated:
            if account.sporter_set.count() > 0:
                sporter = account.sporter_set.all()[0]
                if not (sporter.is_actief_lid and sporter.bij_vereniging):
                    sporter = None
        if not sporter:
            raise Http404('Sporter niet gevonden')

        # converteer en doe eerste controle op de parameters
        try:
            deelcomp_pk = int(
                kwargs['deelcomp_pk'][:10])  # afkappen voor de veiligheid
            sporterboog_pk = int(
                kwargs['sporterboog_pk'][:10])  # afkappen voor de veiligheid

            sporterboog = (SporterBoog.objects.select_related('sporter').get(
                pk=sporterboog_pk))

            deelcomp = (DeelCompetitie.objects.select_related(
                'competitie', 'nhb_regio').get(pk=deelcomp_pk))
        except (ValueError, KeyError):
            # vuilnis
            raise Http404()
        except (SporterBoog.DoesNotExist, DeelCompetitie.DoesNotExist):
            # niet bestaand record(s)
            raise Http404('Sporter of competitie niet gevonden')

        # controleer dat de competitie aanmeldingen accepteert
        deelcomp.competitie.bepaal_fase()
        if deelcomp.competitie.fase < 'B' or deelcomp.competitie.fase >= 'F':
            raise Http404('Verkeerde competitie fase')

        # controleer dat sporterboog bij de ingelogde gebruiker hoort
        # controleer dat deelcompetitie bij de juist regio hoort
        if (sporterboog.sporter != sporter or deelcomp.laag != LAAG_REGIO
                or deelcomp.nhb_regio != sporter.bij_vereniging.regio):
            raise Http404('Geen valide combinatie')

        # voorkom dubbele aanmelding
        if (RegioCompetitieSchutterBoog.objects.filter(
                deelcompetitie=deelcomp, sporterboog=sporterboog).count() > 0):
            # al aangemeld - zie niet hier moeten zijn gekomen
            raise Http404('Sporter is al aangemeld')

        # urlconf parameters geaccepteerd

        # bepaal de inschrijfmethode voor deze regio
        methode = deelcomp.inschrijf_methode

        # bepaal in welke wedstrijdklasse de sporter komt
        age = sporterboog.sporter.bereken_wedstrijdleeftijd(
            deelcomp.competitie.begin_jaar + 1)

        aanmelding = RegioCompetitieSchutterBoog(
            deelcompetitie=deelcomp,
            sporterboog=sporterboog,
            bij_vereniging=sporterboog.sporter.bij_vereniging,
            ag_voor_indiv=AG_NUL,
            ag_voor_team=AG_NUL,
            ag_voor_team_mag_aangepast_worden=True)

        # haal AG op, indien aanwezig
        scores = Score.objects.filter(
            sporterboog=sporterboog,
            type=SCORE_TYPE_INDIV_AG,
            afstand_meter=deelcomp.competitie.afstand)
        if len(scores):
            score = scores[0]
            ag = Decimal(score.waarde) / 1000
            aanmelding.ag_voor_indiv = ag
            aanmelding.ag_voor_team = ag
            if ag > 0.000:
                aanmelding.ag_voor_team_mag_aangepast_worden = False

        bepaler = KlasseBepaler(deelcomp.competitie)
        try:
            bepaler.bepaal_klasse_deelnemer(aanmelding)
        except LookupError as exc:
            raise Http404(str(exc))

        udvl = deelcomp.competitie.uiterste_datum_lid  # uiterste datum van lidmaatschap
        dvl = sporterboog.sporter.sinds_datum  # datum van lidmaatschap

        # geen aspirant, op tijd lid en op tijd aangemeld?
        mag_team_schieten = (deelcomp.regio_organiseert_teamcompetitie
                             and age > MAXIMALE_WEDSTRIJDLEEFTIJD_ASPIRANT
                             and dvl < udvl
                             and deelcomp.competitie.fase == 'B')

        # kijk of de sporter met een team mee wil schieten voor deze competitie
        if mag_team_schieten and request.POST.get('wil_in_team', '') != '':
            aanmelding.inschrijf_voorkeur_team = True

        # kijk of er velden van een formulier bij zitten
        if methode == INSCHRIJF_METHODE_3:
            aanmelding.inschrijf_voorkeur_dagdeel = ''
            dagdelen_spl = deelcomp.toegestane_dagdelen.split(',')

            dagdeel = request.POST.get('dagdeel', '')
            if dagdeel in DAGDEEL_AFKORTINGEN:
                if deelcomp.toegestane_dagdelen == '' or dagdeel in dagdelen_spl:
                    aanmelding.inschrijf_voorkeur_dagdeel = dagdeel

            if aanmelding.inschrijf_voorkeur_dagdeel == '':
                # dagdeel is verplicht
                raise Http404('Verzoek is niet compleet')

        opmerking = request.POST.get('opmerking', '')
        if len(opmerking) > 500:
            opmerking = opmerking[:
                                  500]  # moet afkappen, anders database foutmelding
        aanmelding.inschrijf_notitie = opmerking

        aanmelding.save()

        if methode == INSCHRIJF_METHODE_1:
            pks = list()
            for ronde in (
                    DeelcompetitieRonde.objects.select_related('plan').filter(
                        deelcompetitie=deelcomp)):
                # sta alle wedstrijden in de regio toe, dus alle clusters
                pks.extend(ronde.plan.wedstrijden.values_list('pk', flat=True))
            # for
            wedstrijden = list()
            for pk in pks:
                key = 'wedstrijd_%s' % pk
                if request.POST.get(key, '') != '':
                    wedstrijden.append(pk)
            # for
            aanmelding.inschrijf_gekozen_wedstrijden.set(wedstrijden)

        return HttpResponseRedirect(reverse('Sporter:profiel'))
Exemple #7
0
    def post(self, request, *args, **kwargs):
        """ Deze functie wordt aangeroepen als de knop 'Geselecteerde schutters aanmelden' wordt gebruikt
            het csrf token is al gecontroleerd
        """
        try:
            comp_pk = int(self.kwargs['comp_pk'][:10])      # afkappen voor de veiligheid
            comp = Competitie.objects.get(pk=comp_pk)
        except (ValueError, TypeError, Competitie.DoesNotExist):
            raise Http404('Competitie niet gevonden')

        # check dat competitie open is voor inschrijvingen
        comp.bepaal_fase()
        if not ('B' <= comp.fase <= 'E'):
            raise Http404('Verkeerde competitie fase')

        # rol is HWL (zie test_func)

        # bepaal de inschrijfmethode voor deze regio
        hwl_regio = self.functie_nu.nhb_ver.regio

        if hwl_regio.is_administratief:
            # niemand van deze vereniging mag meedoen aan wedstrijden
            raise Http404('Geen wedstrijden in deze regio')

        # zoek de juiste DeelCompetitie erbij
        deelcomp = DeelCompetitie.objects.get(competitie=comp,
                                              nhb_regio=hwl_regio)
        methode = deelcomp.inschrijf_methode

        boog2teamtype = dict()
        for obj in TeamType.objects.all():
            boog2teamtype[obj.afkorting] = obj
        # for

        # zoek eerst de voorkeuren op
        mag_team_schieten = comp.fase == 'B'
        bulk_team = False
        if mag_team_schieten and request.POST.get('wil_in_team', '') != '':
            bulk_team = True

        bulk_wedstrijden = list()
        if methode == INSCHRIJF_METHODE_1:
            pks = list()
            for ronde in (DeelcompetitieRonde
                          .objects
                          .select_related('plan')
                          .filter(deelcompetitie=deelcomp)):
                # sta alle wedstrijden in de regio toe, dus alle clusters
                pks.extend(ronde.plan.wedstrijden.values_list('pk', flat=True))
            # for
            for pk in pks:
                key = 'wedstrijd_%s' % pk
                if request.POST.get(key, '') != '':
                    bulk_wedstrijden.append(pk)
            # for

        bulk_dagdeel = ''
        if methode == INSCHRIJF_METHODE_3:
            dagdeel = request.POST.get('dagdeel', '')
            if dagdeel in DAGDEEL_AFKORTINGEN:
                if dagdeel in deelcomp.toegestane_dagdelen or deelcomp.toegestane_dagdelen == '':
                    bulk_dagdeel = dagdeel
            if not bulk_dagdeel:
                raise Http404('Incompleet verzoek')

        bulk_opmerking = request.POST.get('opmerking', '')
        if len(bulk_opmerking) > 500:
            bulk_opmerking = bulk_opmerking[:500]     # moet afkappen, anders database foutmelding

        udvl = comp.uiterste_datum_lid

        bepaler = KlasseBepaler(comp)

        # all checked boxes are in the post request as keys, typically with value 'on'
        for key, _ in request.POST.items():
            # key = 'lid_NNNNNN_boogtype_MM' (of iets anders)
            spl = key.split('_')
            # spl = ('lid', 'NNNNNN', 'boogtype', 'MM')
            if len(spl) == 4 and spl[0] == 'lid' and spl[2] == 'boogtype':
                # dit lijkt ergens op - converteer de getallen (geeft ook input bescherming)
                try:
                    sporter_pk = int(spl[1])
                    boogtype_pk = int(spl[3])
                except (TypeError, ValueError):
                    # iemand loopt te klooien
                    raise Http404('Verkeerde parameters')

                # SporterBoog record met voor_wedstrijd==True moet bestaan
                try:
                    sporterboog = (SporterBoog
                                   .objects
                                   .select_related('sporter',
                                                   'boogtype')
                                   .get(sporter=sporter_pk,
                                        boogtype=boogtype_pk))
                except SporterBoog.DoesNotExist:
                    # iemand loopt te klooien
                    raise Http404('Sporter niet gevonden')

                if not sporterboog.voor_wedstrijd:
                    # iemand loopt te klooien
                    raise Http404('Sporter heeft geen voorkeur voor wedstrijden opgegeven')

                # controleer lid bij vereniging HWL
                if sporterboog.sporter.bij_vereniging != self.functie_nu.nhb_ver:
                    # iemand loopt te klooien
                    raise PermissionDenied('Geen lid bij jouw vereniging')

                # voorkom dubbele aanmelding
                if (RegioCompetitieSchutterBoog
                        .objects
                        .filter(deelcompetitie=deelcomp,
                                sporterboog=sporterboog)
                        .count() > 0):
                    # al aangemeld - zou niet hier moeten zijn gekomen
                    raise Http404('Sporter is al ingeschreven')

                # bepaal in welke wedstrijdklasse de schutter komt
                age = sporterboog.sporter.bereken_wedstrijdleeftijd(deelcomp.competitie.begin_jaar + 1)
                dvl = sporterboog.sporter.sinds_datum

                aanmelding = RegioCompetitieSchutterBoog()
                aanmelding.deelcompetitie = deelcomp
                aanmelding.sporterboog = sporterboog
                aanmelding.bij_vereniging = sporterboog.sporter.bij_vereniging
                aanmelding.ag_voor_indiv = AG_NUL
                aanmelding.ag_voor_team = AG_NUL
                aanmelding.ag_voor_team_mag_aangepast_worden = True

                # zoek de aanvangsgemiddelden er bij, indien beschikbaar
                for score in Score.objects.filter(sporterboog=sporterboog,
                                                  afstand_meter=comp.afstand,
                                                  type=SCORE_TYPE_INDIV_AG):
                    ag = Decimal(score.waarde) / 1000
                    aanmelding.ag_voor_indiv = ag
                    aanmelding.ag_voor_team = ag
                    aanmelding.ag_voor_team_mag_aangepast_worden = False
                # for

                # zoek een toepasselijke klasse aan de hand van de leeftijd
                try:
                    bepaler.bepaal_klasse_deelnemer(aanmelding)
                except LookupError as exc:
                    raise Http404(str(exc))

                # kijk of de schutter met een team mee wil en mag schieten voor deze competitie
                if age > MAXIMALE_WEDSTRIJDLEEFTIJD_ASPIRANT and dvl < udvl:
                    # is geen aspirant en was op tijd lid
                    aanmelding.inschrijf_voorkeur_team = bulk_team

                aanmelding.inschrijf_voorkeur_dagdeel = bulk_dagdeel
                aanmelding.inschrijf_notitie = bulk_opmerking
                aanmelding.save()

                if methode == INSCHRIJF_METHODE_1:
                    aanmelding.inschrijf_gekozen_wedstrijden.set(bulk_wedstrijden)

            # else: silently ignore
        # for

        url = reverse('CompInschrijven:leden-ingeschreven', kwargs={'deelcomp_pk': deelcomp.pk})
        return HttpResponseRedirect(url)
    def _maak_inschrijvingen(self):
        # schrijf iemand in
        boog_ib = BoogType.objects.get(afkorting='IB')
        boog_r = BoogType.objects.get(afkorting='R')
        boog_c = BoogType.objects.get(afkorting='C')

        # sporter 1 aanmelden

        sporterboog = self.sporterboog_100001

        SporterVoorkeuren(sporter=sporterboog.sporter, voorkeur_eigen_blazoen=True).save()

        klasse = (CompetitieKlasse
                  .objects
                  .filter(competitie=self.comp_18,
                          indiv__boogtype=boog_r,
                          indiv__is_onbekend=True))[0]

        RegioCompetitieSchutterBoog(
                deelcompetitie=self.deelcomp_regio_18,
                sporterboog=sporterboog,
                bij_vereniging=sporterboog.sporter.bij_vereniging,
                klasse=klasse).save()

        klasse = (CompetitieKlasse
                  .objects
                  .filter(competitie=self.comp_25,
                          indiv__boogtype=boog_r,
                          indiv__is_onbekend=True))[0]

        RegioCompetitieSchutterBoog(
                deelcompetitie=self.deelcomp_regio_25,
                sporterboog=sporterboog,
                bij_vereniging=sporterboog.sporter.bij_vereniging,
                klasse=klasse).save()

        # Schutter 2 aanmelden

        klasse = (CompetitieKlasse
                  .objects
                  .filter(competitie=self.comp_18,
                          indiv__boogtype=boog_c,
                          indiv__is_onbekend=False))[0]

        sporterboog = SporterBoog(sporter=self.sporter_100002,
                                  boogtype=boog_c,
                                  voor_wedstrijd=True)
        sporterboog.save()

        aanmelding = RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_18,
                                                 sporterboog=sporterboog,
                                                 bij_vereniging=sporterboog.sporter.bij_vereniging,
                                                 klasse=klasse)
        aanmelding.save()

        klasse = (CompetitieKlasse
                  .objects
                  .filter(competitie=self.comp_25,
                          indiv__boogtype=boog_c,
                          indiv__is_onbekend=False))[0]

        aanmelding = RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_25,
                                                 sporterboog=sporterboog,
                                                 bij_vereniging=sporterboog.sporter.bij_vereniging,
                                                 klasse=klasse)
        aanmelding.save()

        # aspirant schutter aanmelden
        self.sporter_100012.geboorte_datum = datetime.date(year=self.comp_18.begin_jaar - 10, month=1, day=1)
        self.sporter_100012.save()

        klasse = (CompetitieKlasse
                  .objects
                  .filter(competitie=self.comp_18,
                          indiv__boogtype=boog_ib,
                          indiv__beschrijving__contains="Aspirant"))[0]

        sporterboog = SporterBoog(sporter=self.sporter_100012,
                                  boogtype=boog_ib,
                                  voor_wedstrijd=True)
        sporterboog.save()

        aanmelding = RegioCompetitieSchutterBoog(deelcompetitie=self.deelcomp_regio_18,
                                                 sporterboog=sporterboog,
                                                 bij_vereniging=sporterboog.sporter.bij_vereniging,
                                                 klasse=klasse)
        aanmelding.save()

        klasse = (CompetitieKlasse
                  .objects
                  .filter(competitie=self.comp_25,
                          indiv__boogtype=boog_ib,
                          indiv__beschrijving__contains="Aspirant"))[0]

        RegioCompetitieSchutterBoog(
                deelcompetitie=self.deelcomp_regio_25,
                sporterboog=sporterboog,
                bij_vereniging=sporterboog.sporter.bij_vereniging,
                klasse=klasse).save()

        # Schutter 3 aanmelden
        klasse = (CompetitieKlasse
                  .objects
                  .filter(competitie=self.comp_18,
                          indiv__boogtype=boog_r))[0]

        sporterboog = SporterBoog(sporter=self.sporter_100003,
                                  boogtype=boog_r,
                                  voor_wedstrijd=True)
        sporterboog.save()

        RegioCompetitieSchutterBoog(
                deelcompetitie=self.deelcomp_regio_18,
                sporterboog=sporterboog,
                bij_vereniging=sporterboog.sporter.bij_vereniging,
                klasse=klasse).save()
Exemple #9
0
    def setUp(self):
        """ initialisatie van de test case """
        regio_111 = NhbRegio.objects.get(pk=111)

        boog_r = BoogType.objects.get(afkorting='R')
        boog_bb = BoogType.objects.get(afkorting='BB')
        boog_ib = BoogType.objects.get(afkorting='IB')

        teamtype_r = TeamType.objects.get(afkorting='R')

        datum = datetime.date(year=2000, month=1, day=1)

        comp = Competitie(
                    beschrijving='Test',
                    afstand='18',
                    begin_jaar=2000,
                    uiterste_datum_lid=datum,
                    begin_aanmeldingen=datum,
                    einde_aanmeldingen=datum,
                    einde_teamvorming=datum,
                    eerste_wedstrijd=datum,
                    laatst_mogelijke_wedstrijd=datum,
                    datum_klassengrenzen_rk_bk_teams=datum,
                    rk_eerste_wedstrijd=datum,
                    rk_laatste_wedstrijd=datum,
                    bk_eerste_wedstrijd=datum,
                    bk_laatste_wedstrijd=datum)
        comp.save()
        self.comp = comp

        deelcomp = DeelCompetitie(
                            competitie=comp,
                            laag=LAAG_REGIO,
                            nhb_regio=regio_111)
        deelcomp.save()

        indiv_r1 = IndivWedstrijdklasse.objects.filter(boogtype=boog_r)[1]
        indiv_r2 = IndivWedstrijdklasse.objects.filter(boogtype=boog_r)[2]
        indiv_ib = IndivWedstrijdklasse.objects.filter(boogtype=boog_ib)[0]
        indiv_bb = IndivWedstrijdklasse.objects.filter(boogtype=boog_bb)[0]

        klasse_r1 = CompetitieKlasse(
                        competitie=comp,
                        indiv=indiv_r1,
                        min_ag=2.0)
        klasse_r1.save()

        CompetitieKlasse(
                competitie=comp,
                indiv=indiv_r2,
                min_ag=1.0).save()

        CompetitieKlasse(
                competitie=comp,
                indiv=indiv_bb,
                min_ag=0.0).save()

        klasse_ib = CompetitieKlasse(
                        competitie=comp,
                        indiv=indiv_ib,
                        min_ag=0.0)
        klasse_ib.save()

        # maak een test vereniging
        ver = NhbVereniging()
        ver.naam = "Grote Club met een naam langer dan 30 tekens"
        ver.ver_nr = "1000"
        ver.regio = regio_111
        ver.save()

        # maak een test lid aan
        sporter = Sporter()
        sporter.lid_nr = 123456
        sporter.geslacht = "M"
        sporter.voornaam = "Ramon"
        sporter.achternaam = "de Tester"
        sporter.geboorte_datum = datetime.date(year=1972, month=3, day=4)
        sporter.sinds_datum = datetime.date(year=2010, month=11, day=12)
        sporter.bij_vereniging = ver
        sporter.account = None
        sporter.email = ''
        sporter.save()
        self.sporter = sporter

        sporterboog_r = SporterBoog(
                            sporter=sporter,
                            boogtype=boog_r,
                            voor_wedstrijd=True)
        sporterboog_r.save()
        self.sporterboog_r = sporterboog_r

        sporterboog_ib = SporterBoog(
                            sporter=sporter,
                            boogtype=boog_ib,
                            voor_wedstrijd=False)
        sporterboog_ib.save()
        self.sporterboog_ib = sporterboog_ib

        sporterboog_bb = SporterBoog(
                            sporter=sporter,
                            boogtype=boog_bb,
                            voor_wedstrijd=False)
        sporterboog_bb.save()
        self.sporterboog_bb = sporterboog_bb

        deelnemer_r = RegioCompetitieSchutterBoog(
                            deelcompetitie=deelcomp,
                            sporterboog=sporterboog_r,
                            bij_vereniging=ver,
                            klasse=klasse_r1,
                            aantal_scores=1)
        deelnemer_r.save()
        self.deelnemer_r = deelnemer_r

        deelnemer_ib = RegioCompetitieSchutterBoog(
                            deelcompetitie=deelcomp,
                            sporterboog=sporterboog_ib,
                            bij_vereniging=ver,
                            klasse=klasse_ib,
                            aantal_scores=2)
        deelnemer_ib.save()
        self.deelnemer_ib = deelnemer_ib

        team = RegiocompetitieTeam(
                            deelcompetitie=deelcomp,
                            vereniging=ver,
                            volg_nr=1,
                            team_type=teamtype_r,
                            team_naam='Test')
        team.save()
        self.team = team

        team.gekoppelde_schutters.add(deelnemer_ib)