Exemple #1
0
    def risultati(self):
        qs_sedi = self.args[0]
        modulo = self.modulo_riempito

        membri = modulo.cleaned_data['membri']
        attivi = membri == modulo.MEMBRI_VOLONTARI
        ordinari = membri == modulo.MEMBRI_ORDINARI

        try:
            tesseramento = Tesseramento.objects.get(
                anno=modulo.cleaned_data.get('anno'))

        except Tesseramento.DoesNotExist:  # Errore tesseramento anno non esistente
            raise ValueError(
                "Anno di tesseramento non valido o gestito da Gaia.")

        if modulo.cleaned_data['tipo'] == modulo.VERSATE:
            origine = tesseramento.paganti(
                attivi=attivi, ordinari=ordinari)  # Persone con quote pagate

        else:
            origine = tesseramento.non_paganti(
                attivi=attivi,
                ordinari=ordinari)  # Persone con quote NON pagate

        # Ora filtra per Sede
        q = Appartenenza.query_attuale_in_anno(modulo.cleaned_data.get('anno'))
        app = Appartenenza.objects.filter(pk__in=q).filter(
            sede__in=qs_sedi, membro=Appartenenza.VOLONTARIO)
        return origine.filter(appartenenze__in=app).annotate(
            appartenenza_tipo=F('appartenenze__membro'),
            appartenenza_inizio=F('appartenenze__inizio'),
            appartenenza_sede=F('appartenenze__sede'),
        ).prefetch_related('quote').distinct('cognome', 'nome',
                                             'codice_fiscale')
Exemple #2
0
    def risultati(self):
        qs_sedi = self.args[0]
        modulo = self.modulo_riempito

        membri = modulo.cleaned_data['membri']
        attivi = membri == modulo.MEMBRI_VOLONTARI
        ordinari = membri == modulo.MEMBRI_ORDINARI

        try:
            tesseramento = Tesseramento.objects.get(anno=modulo.cleaned_data.get('anno'))

        except Tesseramento.DoesNotExist:  # Errore tesseramento anno non esistente
            raise ValueError("Anno di tesseramento non valido o gestito da Gaia.")

        if modulo.cleaned_data['tipo'] == modulo.VERSATE:
            origine = tesseramento.paganti(attivi=attivi, ordinari=ordinari)  # Persone con quote pagate

        else:
            origine = tesseramento.non_paganti(attivi=attivi, ordinari=ordinari)  # Persone con quote NON pagate

        # Ora filtra per Sede
        q = Appartenenza.query_attuale_in_anno(modulo.cleaned_data.get('anno'))
        app = Appartenenza.objects.filter(pk__in=q).filter(sede__in=qs_sedi, membro=Appartenenza.VOLONTARIO)
        return origine.filter(appartenenze__in=app).annotate(
                appartenenza_tipo=F('appartenenze__membro'),
                appartenenza_inizio=F('appartenenze__inizio'),
                appartenenza_sede=F('appartenenze__sede'),
        ).prefetch_related('quote').distinct('cognome', 'nome', 'codice_fiscale')
Exemple #3
0
    def passibili_pagamento(self, membri=Appartenenza.MEMBRO_SOCIO):
        """
        Ritorna un elenco di tutti i passibili di pagamento di quota
         associativa per il tesseramento in essere.
        :param membri: Lista o tupla di appartenenze da considerare
        :return: QuerySet<Persona>
        """

        # Soci che hanno almeno una appartenenza confermata
        #  durante l'anno presso un Comitato CRI
        return Persona.objects.filter(
            Appartenenza.query_attuale_in_anno(self.anno).via("appartenenze"),              # Membri nell'anno
            appartenenze__membro__in=membri,                                                # ...di un socio cri
            appartenenze__sede__tipo=Sede.COMITATO,                                         # ...presso un Comitato
        )
Exemple #4
0
    def passibili_pagamento(self, membri=Appartenenza.MEMBRO_SOCIO):
        """
        Ritorna un elenco di tutti i passibili di pagamento di quota
         associativa per il tesseramento in essere.
        :param membri: Lista o tupla di appartenenze da considerare
        :return: QuerySet<Persona>
        """

        # Soci che hanno almeno una appartenenza confermata
        #  durante l'anno presso un Comitato CRI
        return Persona.objects.filter(
            Appartenenza.query_attuale_in_anno(self.anno).via("appartenenze"),              # Membri nell'anno
            appartenenze__membro__in=membri,                                                # ...di un socio cri
            appartenenze__sede__tipo=Sede.COMITATO,                                         # ...presso un Comitato
        )
Exemple #5
0
 def _q_volontari(self, solo_paganti=True):
     return Q(  # Oppure volontario che ha pagato almeno quota volontario
         Appartenenza.query_attuale_in_anno(self.anno).via("appartenenze"),
         self._q_pagante() if solo_paganti else Q(),
         appartenenze__membro=Appartenenza.VOLONTARIO,
     )
Exemple #6
0
 def _q_ordinari(self, solo_paganti=True):
     return Q(  # Ordinario che ha pagato almeno quota ordinario
         Appartenenza.query_attuale_in_anno(self.anno).via("appartenenze"),
         self._q_pagante() if solo_paganti else Q(),
         appartenenze__membro=Appartenenza.ORDINARIO,
     )
Exemple #7
0
 def _q_volontari(self, solo_paganti=True):
     return Q(  # Oppure volontario che ha pagato almeno quota volontario
                 Appartenenza.query_attuale_in_anno(self.anno).via("appartenenze"),
                 self._q_pagante() if solo_paganti else Q(),
                 appartenenze__membro=Appartenenza.VOLONTARIO,
             )
Exemple #8
0
 def _q_ordinari(self, solo_paganti=True):
     return Q(  # Ordinario che ha pagato almeno quota ordinario
                 Appartenenza.query_attuale_in_anno(self.anno).via("appartenenze"),
                 self._q_pagante() if solo_paganti else Q(),
                 appartenenze__membro=Appartenenza.ORDINARIO,
             )