def risultati(self): qs_sedi = self.args[0] if self.modulo_riempito.cleaned_data[ 'estesi'] == self.modulo_riempito.ESTESI_INGRESSO: # Estesi in ingresso risultati = Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro=Appartenenza.ESTESO, ).via("appartenenze")) else: # Estesi in uscita estesi_da_qualche_parte = Persona.objects.filter( Appartenenza.query_attuale(membro=Appartenenza.ESTESO).via( "appartenenze")).values_list('pk', flat=True) volontari_da_me = Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro=Appartenenza.VOLONTARIO, ).via("appartenenze")).values_list('pk', flat=True) risultati = Persona.objects.filter(pk__in=volontari_da_me).filter( pk__in=estesi_da_qualche_parte) return risultati.annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related('appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono').distinct('cognome', 'nome', 'codice_fiscale')
def espandi_gestione_soci(qs_sedi, al_giorno=None): from anagrafica.models import Persona, Appartenenza, Trasferimento, Estensione, Riserva from ufficio_soci.models import Quota, Tesserino try: return [ (MODIFICA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO).via( "appartenenze"))), (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_ESTESO).via( "appartenenze"))), (MODIFICA, Trasferimento.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO).via( "persona__appartenenze"))), (LETTURA, Trasferimento.objects.filter(destinazione__in=qs_sedi)), (MODIFICA, Estensione.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO).via( "persona__appartenenze"))), (LETTURA, Estensione.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_ESTESO).via( "persona__appartenenze"))), (LETTURA, Estensione.objects.filter(destinazione__in=qs_sedi)), (MODIFICA, Quota.objects.filter(sede__in=qs_sedi)), (LETTURA, Riserva.objects.filter(appartenenza__sede__in=qs_sedi)), ] except (AttributeError, ValueError, KeyError): return []
def choices_for_request(self): self.choices = self.choices.filter( Q(Appartenenza.query_attuale(membro=Appartenenza.SOSTENITORE).via("appartenenze")) | Q(aspirante__isnull=False) ).exclude( Q(Appartenenza.query_attuale(membro=Appartenenza.VOLONTARIO).via("appartenenze")) ).order_by('nome', 'cognome', 'codice_fiscale').distinct('nome', 'cognome', 'codice_fiscale') return super(PersonaAutocompletamento, self).choices_for_request()
def choices_for_request(self): self.choices = self.choices.filter( Q(Appartenenza.query_attuale(membro=Appartenenza.SOSTENITORE).via("appartenenze")) | Q(aspirante__isnull=False) ).exclude( Q(Appartenenza.query_attuale(membro=Appartenenza.VOLONTARIO).via("appartenenze")) ).order_by('nome', 'cognome', 'codice_fiscale').distinct('nome', 'cognome', 'codice_fiscale') return super(PersonaAutocompletamento, self).choices_for_request()
def _calcola_anni_attivita(queryset, meno=True): limite = now().replace(year=now().year - LIMITE_ANNI_ATTIVITA) if meno: appartenenze_filtrate = Appartenenza.query_attuale().filter(inizio__gte=limite) else: appartenenze_filtrate = Appartenenza.query_attuale().filter(inizio__lt=limite) return queryset.filter(appartenenze__in=appartenenze_filtrate)
def _calcola_anni_attivita(queryset, meno=True): limite = now().replace(year=now().year - LIMITE_ANNI_ATTIVITA) if meno: appartenenze_filtrate = Appartenenza.query_attuale().filter(inizio__gte=limite) else: appartenenze_filtrate = Appartenenza.query_attuale().filter(inizio__lt=limite) return queryset.filter(appartenenze__in=appartenenze_filtrate)
def espandi_gestione_centrale_operativa_sede(qs_sedi, al_giorno=None): from anagrafica.models import Persona, Appartenenza try: return [ (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi).via("appartenenze"), reperibilita__isnull=False)), (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi).via("appartenenze"), coturni__isnull=False)), ] except (AttributeError, ValueError, KeyError, TypeError): return []
def espandi_gestione_soci(qs_sedi, al_giorno=None): from anagrafica.models import Persona, Appartenenza, Trasferimento, Estensione, Riserva from ufficio_soci.models import Quota, Tesserino return [ (MODIFICA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO).via("appartenenze"))), (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_ESTESO).via("appartenenze"))), (MODIFICA, Trasferimento.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO).via("persona__appartenenze"))), ##(LETTURA, Trasferimento.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO).via("persona__appartenenze__precedente"))) (MODIFICA, Estensione.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO).via("persona__appartenenze"))), (LETTURA, Estensione.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_ESTESO).via("persona__appartenenze"))), (MODIFICA, Quota.objects.filter(sede__in=qs_sedi)), (LETTURA, Riserva.objects.filter(appartenenza__sede__in=qs_sedi)), ]
def espandi_elenchi_soci(qs_sedi, al_giorno=None): from anagrafica.models import Persona, Appartenenza, Sede, Riserva from ufficio_soci.models import Quota, Tesserino return [ (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi).via("appartenenze"))), (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO).via("appartenenze"))), (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_ESTESO).via("appartenenze"))), (LETTURA, Quota.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_ESTESO).via("persona__appartenenze"))), (LETTURA, Quota.objects.filter(Q(Q(sede__in=qs_sedi) | Q(appartenenza__sede__in=qs_sedi)))), (LETTURA, Persona.objects.filter(Appartenenza.con_esito_ok(sede__in=qs_sedi).via("appartenenze"))), (LETTURA, Persona.objects.filter(Appartenenza.con_esito_pending(sede__in=qs_sedi).via("appartenenze"))), (LETTURA, Persona.objects.filter(Appartenenza.con_esito_no(sede__in=qs_sedi).via("appartenenze"))), (LETTURA, Riserva.objects.filter(Appartenenza.con_esito_ok(sede__in=qs_sedi).via("persona__appartenenze"))), (LETTURA, Tesserino.objects.filter(Appartenenza.con_esito_ok(sede__in=qs_sedi).via("persona__appartenenze"))), ]
def risultati(self): qs_sedi = self.args[0] tesserini_richiesti = super(ElencoTesseriniDaRichiedere, self).risultati() return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_TESSERINO, ).via("appartenenze"), # Con fototessera confermata Q(Fototessera.con_esito_ok().via("fototessere")), # Escludi tesserini rifiutati ~Q(tesserini__stato_richiesta=Tesserino.RIFIUTATO), ).exclude( # Escludi quelli richiesti da genitore pk__in=tesserini_richiesti.values_list('id', flat=True) ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] tesserini_richiesti = super(ElencoTesseriniDaRichiedere, self).risultati() return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_TESSERINO, ).via("appartenenze"), # Con fototessera confermata Fototessera.con_esito_ok().via("fototessere"), # Escludi tesserini rifiutati ~Q(tesserini__stato_richiesta=Tesserino.RIFIUTATO), ).exclude( # Escludi quelli richiesti da genitore pk__in=tesserini_richiesti.values_list('id', flat=True) ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] cd = self.modulo_riempito.cleaned_data metodo = cd['metodo'] titoli = cd['titoli'] base = Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_SOCIO, ).via("appartenenze") ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ) if metodo == self.modulo_riempito.METODO_OR: # Almeno un titolo return base.filter(titoli_personali__in=TitoloPersonale.con_esito_ok().filter( titolo__in=titoli, )).distinct('cognome', 'nome', 'codice_fiscale') else: # Tutti i titoli base = base.filter(titoli_personali__in=TitoloPersonale.con_esito_ok()) for titolo in titoli: base = base.filter(titoli_personali__titolo=titolo) return base.distinct('cognome', 'nome', 'codice_fiscale')
def choices_for_request(self, filtra_per_sede=True): # Le mie sedi di competenza: # 1. La mia Sede attuale # 2. Il mio Comitato # 3. Le mie Sedi di competenza sedi = self.request.user.persona.sedi_attuali() \ | self.request.user.persona.sedi_attuali().ottieni_comitati().espandi() \ | self.request.user.persona.sedi_deleghe_attuali(espandi=True, pubblici=True) self.choices = self.choices.filter( # 1. Appartenente a una delle sedi Q(Appartenenza.query_attuale(sede__in=sedi).via("appartenenze"),) # 2. Iscritto confermato a un corso base presso una mia sede | Q(PartecipazioneCorsoBase.con_esito( PartecipazioneCorsoBase.ESITO_OK, corso__sede__in=sedi ).via("partecipazioni_corsi")) # 3. Iscritto in attesa a un corso base presso una mia sede | Q(PartecipazioneCorsoBase.con_esito( PartecipazioneCorsoBase.ESITO_PENDING, corso__sede__in=sedi ).via("partecipazioni_corsi")) )\ .order_by('nome', 'cognome', 'codice_fiscale')\ .distinct('nome', 'cognome', 'codice_fiscale') return super(PersonaAutocompletamento, self).choices_for_request()
def choices_for_request(self): # Le mie sedi di competenza: # 1. La mia Sede attuale # 2. Il mio Comitato # 3. Le mie Sedi di competenza sedi = self.request.user.persona.sedi_attuali() \ | self.request.user.persona.sedi_attuali().ottieni_comitati().espandi() \ | self.request.user.persona.sedi_deleghe_attuali(espandi=True, pubblici=True) self.choices = self.choices.filter( # 1. Appartenente a una delle sedi Q(Appartenenza.query_attuale(sede__in=sedi).via("appartenenze"),) # 2. Iscritto confermato a un corso base presso una mia sede | Q(PartecipazioneCorsoBase.con_esito( PartecipazioneCorsoBase.ESITO_OK, corso__sede__in=sedi ).via("partecipazioni_corsi")) # 3. Iscritto in attesa a un corso base presso una mia sede | Q(PartecipazioneCorsoBase.con_esito( PartecipazioneCorsoBase.ESITO_PENDING, corso__sede__in=sedi ).via("partecipazioni_corsi")) )\ .order_by('nome', 'cognome', 'codice_fiscale')\ .distinct('nome', 'cognome', 'codice_fiscale') return super(PersonaAutocompletamento, self).choices_for_request()
def risultati(self): qs_sedi = self.args[0] cd = self.modulo_riempito.cleaned_data metodo = cd['metodo'] titoli = cd['titoli'] base = Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_SOCIO, ).via("appartenenze") ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ) if metodo == self.modulo_riempito.METODO_OR: # Almeno un titolo return base.filter(titoli_personali__in=TitoloPersonale.con_esito_ok().filter( titolo__in=titoli, )).distinct('cognome', 'nome', 'codice_fiscale') else: # Tutti i titoli base = base.filter(titoli_personali__in=TitoloPersonale.con_esito_ok()) for titolo in titoli: base = base.filter(titoli_personali__titolo=titolo) return base.distinct('cognome', 'nome', 'codice_fiscale')
def choices_for_request(self): volontari = self.model.objects.filter( Q( Appartenenza.query_attuale( membro=Appartenenza.VOLONTARIO).via("appartenenze"))) self.choices = self.choices.filter( Q( Appartenenza.query_attuale( membro=Appartenenza.SOSTENITORE).via("appartenenze")) | Q(aspirante__isnull=False)).exclude( pk__in=volontari.values_list('pk', flat=True)).order_by( 'nome', 'cognome', 'codice_fiscale').distinct('nome', 'cognome', 'codice_fiscale') return super(PersonaAutocompletamento, self).choices_for_request()
def choices_for_request(self): sedi = self.request.user.persona.sedi_deleghe_attuali( tipo__in=(UFFICIO_SOCI, UFFICIO_SOCI_UNITA), espandi=True) self.choices = self.choices.filter( Appartenenza.query_attuale(membro=Appartenenza.VOLONTARIO, sede__in=sedi).via("appartenenze")) return super(VolontarioSedeAutocompletamento, self).choices_for_request()
def espandi_gestione_gruppo(qs_gruppi, al_giorno=None): from anagrafica.models import Persona from gruppi.models import Appartenenza return [ (MODIFICA, qs_gruppi), (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno).via("appartenenze_gruppi"), appartenenze_gruppi__gruppo__in=qs_gruppi)), ]
def espandi_elenchi_soci(qs_sedi, al_giorno=None): from anagrafica.models import Persona, Appartenenza, Sede, Riserva from ufficio_soci.models import Quota, Tesserino try: return [ (LETTURA, Persona.objects.filter( Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi).via("appartenenze"))), (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO).via( "appartenenze"))), (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_ESTESO).via( "appartenenze"))), (LETTURA, Quota.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_ESTESO).via( "persona__appartenenze"))), (LETTURA, Quota.objects.filter(Q(Q(sede__in=qs_sedi) | Q(appartenenza__sede__in=qs_sedi)))), (LETTURA, Persona.objects.filter( Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, confermata=True, ritirata=False).via( "appartenenze"))), (LETTURA, Persona.objects.filter(Appartenenza.con_esito_pending(sede__in=qs_sedi).via("appartenenze"))), (LETTURA, Persona.objects.filter(Appartenenza.con_esito_no(sede__in=qs_sedi).via("appartenenze"))), (LETTURA, Riserva.objects.filter( Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, confermata=True, ritirata=False).via( "persona__appartenenze"))), (LETTURA, Tesserino.objects.filter( Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi, confermata=True, ritirata=False).via( "persona__appartenenze"))), ] except (AttributeError, ValueError, KeyError): return []
def risultati(self): qs_sedi = self.args[0] oggi = self.modulo_riempito.cleaned_data['al_giorno'] nascita_minima = date(oggi.year - 18, oggi.month, oggi.day) if self.modulo_riempito.cleaned_data[ 'elettorato'] == ModuloElencoElettorato.ELETTORATO_ATTIVO: anzianita_minima = datetime( oggi.year - Appartenenza.MEMBRO_ANZIANITA_ELETTORATO_ATTIVO, oggi.month, oggi.day, 23, 59, 59) else: anzianita_minima = datetime( oggi.year - Appartenenza.MEMBRO_ANZIANITA_ANNI, oggi.month, oggi.day, 23, 59, 59) aggiuntivi = { # Anzianita' minima "pk__in": Persona.objects.filter( Appartenenza.con_esito_ok( membro__in=Appartenenza.MEMBRO_ANZIANITA, inizio__lte=anzianita_minima).via("appartenenze")).only( "id") } if self.modulo_riempito.cleaned_data[ 'elettorato'] == ModuloElencoElettorato.ELETTORATO_PASSIVO: # Elettorato passivo, aggiuntivi.update({ # Eta' minima "data_nascita__lte": nascita_minima, }) r = Persona.objects.filter( Appartenenza.query_attuale( al_giorno=oggi, sede__in=qs_sedi, membro=Appartenenza.VOLONTARIO, ).via("appartenenze"), Q(**aggiuntivi), ).exclude( # Escludi quelli con dimissione negli anni di anzianita' appartenenze__terminazione__in=[ Appartenenza.DIMISSIONE, Appartenenza.ESPULSIONE ], appartenenze__fine__gte=anzianita_minima, ).exclude( # Escludi quelli con provvedimento di sospensione non terminato pk__in=ProvvedimentoDisciplinare.objects.filter( Q(fine__gte=oggi) | Q(fine__isnull=True), inizio__lte=oggi, tipo=ProvvedimentoDisciplinare.SOSPENSIONE).values_list( 'persona_id', flat=True)).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related('appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono').distinct( 'cognome', 'nome', 'codice_fiscale') return r
def risultati(self): qs_sedi = self.args[0] gruppo = self.args[1] return Persona.objects.filter( Appartenenza.query_attuale().via("appartenenze_gruppi"), App.query_attuale(sede__in=qs_sedi).via("appartenenze"), appartenenze_gruppi__gruppo=gruppo ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] gruppo = self.args[1] return Persona.objects.filter( Appartenenza.query_attuale().via("appartenenze_gruppi"), App.query_attuale(sede__in=qs_sedi).via("appartenenze"), appartenenze_gruppi__gruppo=gruppo).distinct( 'cognome', 'nome', 'codice_fiscale')
def co_reperibilita(request, me): sedi = me.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE) ora = poco_fa() reperibilita = Reperibilita.query_attuale(Appartenenza.query_attuale(sede__in=sedi).via("persona__appartenenze"), al_giorno=ora).order_by('attivazione', '-creazione') contesto = { "reperibilita": reperibilita, "ora": ora, } return "centrale_operativa_reperibilita.html", contesto
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro=Appartenenza.SOSTENITORE, ).via("appartenenze") ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' )
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro=Appartenenza.SOSTENITORE, ).via("appartenenze") ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' )
def risultati(self): qs_sedi = self.args[0] oggi = self.modulo_riempito.cleaned_data['al_giorno'] nascita_minima = date(oggi.year - 18, oggi.month, oggi.day) if self.modulo_riempito.cleaned_data['elettorato'] == ModuloElencoElettorato.ELETTORATO_ATTIVO: anzianita_minima = datetime( oggi.year - Appartenenza.MEMBRO_ANZIANITA_ELETTORATO_ATTIVO, oggi.month, oggi.day, 23, 59, 59 ) else: anzianita_minima = datetime( oggi.year - Appartenenza.MEMBRO_ANZIANITA_ANNI, oggi.month, oggi.day, 23, 59, 59 ) aggiuntivi = { # Anzianita' minima "pk__in": Persona.objects.filter( Appartenenza.con_esito_ok( membro__in=Appartenenza.MEMBRO_ANZIANITA, inizio__lte=anzianita_minima ).via("appartenenze") ).only("id") } if self.modulo_riempito.cleaned_data['elettorato'] == ModuloElencoElettorato.ELETTORATO_PASSIVO: # Elettorato passivo, aggiuntivi.update({ # Eta' minima "data_nascita__lte": nascita_minima, }) r = Persona.objects.filter( Appartenenza.query_attuale( al_giorno=oggi, sede__in=qs_sedi, membro=Appartenenza.VOLONTARIO, ).via("appartenenze"), Q(**aggiuntivi), ).exclude( # Escludi quelli con dimissione negli anni di anzianita' appartenenze__terminazione__in=[Appartenenza.DIMISSIONE, Appartenenza.ESPULSIONE], appartenenze__fine__gte=anzianita_minima, ).exclude( # Escludi quelli con provvedimento di sospensione non terminato pk__in=ProvvedimentoDisciplinare.objects.filter( Q(fine__gte=oggi) | Q(fine__isnull=True), inizio__lte=oggi, tipo=ProvvedimentoDisciplinare.SOSPENSIONE ).values_list('persona_id', flat=True) ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale') return r
def espandi_gestione_gruppo(qs_gruppi, al_giorno=None): from anagrafica.models import Persona from gruppi.models import Appartenenza try: return [ (MODIFICA, qs_gruppi), (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno).via("appartenenze_gruppi"), appartenenze_gruppi__gruppo__in=qs_gruppi)), ] except (AttributeError, ValueError, KeyError, TypeError): return []
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( ~Appartenenza.query_attuale( sede__in=qs_sedi, ).via("appartenenze"), appartenenze__sede__in=qs_sedi, appartenenze__terminazione__in=[Appartenenza.DIMISSIONE, Appartenenza.ESPULSIONE], ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( ~Appartenenza.query_attuale( sede__in=qs_sedi, ).via("appartenenze"), appartenenze__sede__in=qs_sedi, appartenenze__terminazione__in=[Appartenenza.DIMISSIONE, Appartenenza.ESPULSIONE], ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( Riserva.query_attuale( Riserva.con_esito_ok().q, Appartenenza.query_attuale(sede__in=qs_sedi).via( "appartenenza")).via("riserve")).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), ).prefetch_related('appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono').distinct( 'cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] from django.db.models import BooleanField, Value if self.modulo_riempito.cleaned_data['estesi'] == self.modulo_riempito.ESTESI_INGRESSO: # Estesi in ingresso risultati = Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro=Appartenenza.ESTESO, ).via("appartenenze") ).annotate(is_ingresso=Value(value=True, output_field=BooleanField())) else: # Estesi in uscita estesi_da_qualche_parte = Persona.objects.filter( Appartenenza.query_attuale( membro=Appartenenza.ESTESO ).via("appartenenze") ).values_list('pk', flat=True) volontari_da_me = Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro=Appartenenza.VOLONTARIO, ).via("appartenenze") ).values_list('pk', flat=True) risultati = Persona.objects.filter( pk__in=volontari_da_me ).filter( pk__in=estesi_da_qualche_parte ).annotate(is_ingresso=Value(value=False, output_field=BooleanField())) return risultati.annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro=Appartenenza.ORDINARIO, ).via("appartenenze")).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related('appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono').distinct( 'cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( Appartenenza.query_attuale( al_giorno=self.modulo_riempito.cleaned_data['al_giorno'], sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_SOCIO, ).via("appartenenze")).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related('appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono').distinct( 'cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro=Appartenenza.ORDINARIO, ).via("appartenenze") ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( appartenenze__sede__in=qs_sedi, appartenenze__terminazione__in=[ Appartenenza.TRASFERIMENTO, ], ).exclude( # Escludi tutti i membri attuali delle mie sedi (es. trasf. interni) pk__in=Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi).via("appartenenze")).values_list( 'id', flat=True)).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono').distinct( 'cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] sostenitori = Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro=Appartenenza.SOSTENITORE, ).via("appartenenze")).values_list('pk', flat=True) ex = Persona.objects.filter( appartenenze__in=Appartenenza.objects.filter( sede__in=qs_sedi, membro=Appartenenza.SOSTENITORE, fine__isnull=False)).exclude(pk__in=sostenitori) return ex.prefetch_related('appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono')
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( Appartenenza.query_attuale( al_giorno=self.modulo_riempito.cleaned_data['al_giorno'], sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_SOCIO, ).via("appartenenze") ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_TESSERINO, ).via("appartenenze"), tesserini__stato_richiesta__in=(Tesserino.ACCETTATO, Tesserino.RICHIESTO), ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), tesserino_codice=F('tesserini__codice'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( Riserva.query_attuale( Riserva.con_esito_ok().q, Appartenenza.query_attuale( sede__in=qs_sedi ).via("appartenenza"), ).via("riserve") ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def attivita_gruppi_gruppo(request, me, pk): """ Mostra i membri del gruppo """ gruppo = get_object_or_404(Gruppo, pk=pk) if not me.permessi_almeno(gruppo, MODIFICA): return redirect(ERRORE_PERMESSI) sedi = Sede.objects.filter(App.query_attuale().via("appartenenze"), appartenenze__persona__appartenenze_gruppi__in=gruppo.appartenenze.all()) elenco = ElencoMembriGruppo(sedi, gruppo, gruppo=gruppo) contesto = { "elenco": elenco, "gruppo": gruppo, } return 'attivita_gruppi_gruppo.html', contesto
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( appartenenze__sede__in=qs_sedi, appartenenze__terminazione__in=[Appartenenza.TRASFERIMENTO,], ).exclude( # Escludi tutti i membri attuali delle mie sedi (es. trasf. interni) pk__in=Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi ).via("appartenenze") ).values_list('id', flat=True) ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_TESSERINO, ).via("appartenenze"), tesserini__stato_richiesta__in=(Tesserino.ACCETTATO, Tesserino.RICHIESTO, Tesserino.DUPLICATO), ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), tesserino_pk=F('tesserini__pk'), tesserino_codice=F('tesserini__codice'), tesserino_tipo_richiesta=F('tesserini__tipo_richiesta'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] sostenitori = Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro=Appartenenza.SOSTENITORE, ).via("appartenenze") ).values_list('pk', flat=True) ex = Persona.objects.filter( appartenenze__in=Appartenenza.objects.filter( sede__in=qs_sedi, membro=Appartenenza.SOSTENITORE, fine__isnull=False ) ).exclude(pk__in=sostenitori) return ex.prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' )
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 anno = modulo.cleaned_data['anno'] try: tesseramento = Tesseramento.objects.get(anno=anno) except Tesseramento.DoesNotExist: # Errore tesseramento anno non esistente raise ValueError( "Anno di tesseramento non valido o gestito da Gaia.") # Dobbiamo ridurre il set a tutti i volontari che sono, al giorno attuale, appartenenti a questa sede # Nel caso di un anno passato, generiamo l'elenco al 31 dicembre. Nel caso dell'anno in corso, # generiamo l'elenco al giorno attuale. Questo e' equivalente a: # giorno = min(31/dicembre/<anno selezionato>, oggi) giorno_appartenenza = min(date(day=31, month=12, year=anno), oggi()) 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( al_giorno=giorno_appartenenza, membro=Appartenenza.VOLONTARIO).filter(sede__in=qs_sedi).defer( 'membro', 'inizio', 'sede') return origine.filter(appartenenze__in=q).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related('quote').distinct('cognome', 'nome', 'codice_fiscale')
def attivita_gruppi_gruppo(request, me, pk): """ Mostra i membri del gruppo """ gruppo = get_object_or_404(Gruppo, pk=pk) if not me.permessi_almeno(gruppo, MODIFICA): return redirect(ERRORE_PERMESSI) sedi = Sede.objects.filter( App.query_attuale().via("appartenenze"), appartenenze__persona__appartenenze_gruppi__in=gruppo.appartenenze.all( )) elenco = ElencoMembriGruppo(sedi, gruppo, gruppo=gruppo) contesto = { "elenco": elenco, "gruppo": gruppo, } return 'attivita_gruppi_gruppo.html', contesto
def risultati(self): qs_sedi = self.args[0] modulo = self.modulo_riempito query = Q() if modulo.IV == modulo.cleaned_data['includi']: query &= Q(iv=True) if modulo.CM == modulo.cleaned_data['includi']: query &= Q(cm=True) return Persona.objects.filter( query, Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO, ).via("appartenenze")).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related('appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono').distinct( 'cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] modulo = self.modulo_riempito attivi = Partecipazione.objects.filter( turno__fine__gte=modulo.cleaned_data['inizio'], turno__inizio__lte=modulo.cleaned_data['fine'], turno__attivita__sede__in=qs_sedi, confermata=True, ).values_list('persona_id', flat=True) return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_ATTIVITA, ).via("appartenenze") ).exclude(pk__in=attivi).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] modulo = self.modulo_riempito if modulo and modulo.cleaned_data['includi_estesi'] == modulo.SI: appartenenze = [Appartenenza.VOLONTARIO, Appartenenza.ESTESO] else: appartenenze = [Appartenenza.VOLONTARIO,] return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=appartenenze, ).via("appartenenze") ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] modulo = self.modulo_riempito attivi = Partecipazione.objects.filter( turno__fine__gte=modulo.cleaned_data['inizio'], turno__inizio__lte=modulo.cleaned_data['fine'], turno__attivita__sede__in=qs_sedi, confermata=True, ).values_list('persona_id', flat=True) return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_ATTIVITA, ).via("appartenenze") ).exclude(pk__in=attivi).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] modulo = self.modulo_riempito if modulo and modulo.cleaned_data['includi_estesi'] == modulo.SI: appartenenze = [Appartenenza.VOLONTARIO, Appartenenza.ESTESO] else: appartenenze = [Appartenenza.VOLONTARIO,] return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=appartenenze, ).via("appartenenze") ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] tesserini_da_richiedere = super(ElencoTesseriniSenzaFototessera, self).risultati() tesserini_richiesti = super(ElencoTesseriniDaRichiedere, self).risultati() return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_TESSERINO, ).via("appartenenze"), ).exclude( # Escludi quelli che posso richiedere pk__in=tesserini_da_richiedere.values_list( 'id', flat=True)).exclude( # Escludi quelli gia richiesti pk__in=tesserini_richiesti.values_list('id', flat=True), ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related('appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono').distinct( 'cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] modulo = self.modulo_riempito query = Q() if modulo.IV == modulo.cleaned_data['includi']: query &= Q(iv=True) if modulo.CM == modulo.cleaned_data['includi']: query &= Q(cm=True) return Persona.objects.filter( query, Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_DIRETTO, ).via("appartenenze") ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] tesserini_da_richiedere = super(ElencoTesseriniSenzaFototessera, self).risultati() tesserini_richiesti = super(ElencoTesseriniDaRichiedere, self).risultati() return Persona.objects.filter( Appartenenza.query_attuale( sede__in=qs_sedi, membro__in=Appartenenza.MEMBRO_TESSERINO, ).via("appartenenze"), ).exclude( # Escludi quelli che posso richiedere pk__in=tesserini_da_richiedere.values_list('id', flat=True) ).exclude( # Escludi quelli gia richiesti pk__in=tesserini_richiesti.values_list('id', flat=True), ).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related( 'appartenenze', 'appartenenze__sede', 'utenza', 'numeri_telefono' ).distinct('cognome', 'nome', 'codice_fiscale')
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 anno = modulo.cleaned_data['anno'] try: tesseramento = Tesseramento.objects.get(anno=anno) except Tesseramento.DoesNotExist: # Errore tesseramento anno non esistente raise ValueError("Anno di tesseramento non valido o gestito da Gaia.") # Dobbiamo ridurre il set a tutti i volontari che sono, al giorno attuale, appartenenti a questa sede # Nel caso di un anno passato, generiamo l'elenco al 31 dicembre. Nel caso dell'anno in corso, # generiamo l'elenco al giorno attuale. Questo e' equivalente a: # giorno = min(31/dicembre/<anno selezionato>, oggi) giorno_appartenenza = min(date(day=31, month=12, year=anno), oggi()) 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(al_giorno=giorno_appartenenza, membro=Appartenenza.VOLONTARIO) app = Appartenenza.objects.filter(pk__in=q).filter(sede__in=qs_sedi) 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')
def _sposta_persone(self, request, form_class, queryset=None): from anagrafica.forms import ModuloSpostaPersoneManuale, ModuloSpostaPersoneDaCSV contesto = {} trasferimenti = None esclusi = None errori = None eseguito = False if not self._has_transfer_permission(request): self.message_user(request, 'Non si hanno i diritti per l\'operazione richiesta', level=messages.WARNING) return HttpResponseRedirect(reverse('admin:anagrafica_persona_changelist')) if request.method.lower() == 'post': if form_class == ModuloSpostaPersoneDaCSV: form = form_class(request.POST, files=request.FILES) contesto.update({ 'url': reverse('admin:anagrafica_persona_trasferisci'), }) if form.is_valid(): if form.cleaned_data.get('procedi', False) and request.session.get('dati_persone', None): trasferimenti = form.sposta_persone(request.user.persona, persone=request.session['dati_persone']) errori = [persona for persona in trasferimenti if persona[1] is not True and isinstance(persona[1], text_type)] trasferimenti = [persona[0] for persona in trasferimenti if persona[1] is True or isinstance(persona[1], Appartenenza)] self.message_user(request, self.messaggio_spostamento % {'num': len(trasferimenti)}) contesto.update({ 'title': 'Esito dei trasferimenti', }) eseguito = True else: dati, esclusi = form.elenco_persone(request.FILES['dati']) form.fields['dati'].widget = forms.HiddenInput() form.data['procedi'] = 1 request.session['dati_persone'] = dati contesto.update({ 'title': 'Conferma trasferimenti', 'etichetta_invio': 'Avvia trasferimento', 'dati_csv': dati, }) elif form_class == ModuloSpostaPersoneManuale: if 'do_action' in request.POST and request.POST.get(helpers.ACTION_CHECKBOX_NAME, ''): form = form_class(request.POST) queryset = Persona.objects.filter( pk__in=[int(pk) for pk in request.POST.get(helpers.ACTION_CHECKBOX_NAME, '').split(',')] ) # Escludiamo i non volontari volontari = Appartenenza.objects.filter( Appartenenza.query_attuale(membro=Appartenenza.VOLONTARIO).q, persona__in=queryset ).values_list('persona', flat=True) esclusi = queryset.exclude(pk__in=volontari) queryset = queryset.filter(pk__in=volontari) if form.is_valid(): persone, scarti = form.mappa_persone(queryset) trasferimenti = form.sposta_persone(request.user.persona, persone=persone) errori = [persona for persona in trasferimenti if persona[1] is not True and isinstance(persona[1], text_type)] trasferimenti = [persona[0] for persona in trasferimenti if persona[1] is True or isinstance(persona[1], Appartenenza)] self.message_user(request, self.messaggio_spostamento % {'num': len(trasferimenti)}) contesto.update({ 'title': 'Esito dei trasferimenti', 'url': reverse('admin:anagrafica_persona_trasferisci_post'), }) else: form = form_class() contesto.update({ 'title': 'Seleziona gli estremi dei trasferimenti', 'etichetta_invio': 'Avvia trasferimento', 'eseguito': False, 'dati_pronti': True, 'queryset': queryset, 'url': reverse('admin:anagrafica_persona_trasferisci_post'), }) eseguito = 'do_action' in request.POST else: if form_class == ModuloSpostaPersoneDaCSV: contesto = { 'title': 'Carica dati dei trasferimenti', 'etichetta_invio': 'Carica dati', 'eseguito': False, 'url': reverse('admin:anagrafica_persona_trasferisci'), } elif form_class == ModuloSpostaPersoneManuale: contesto.update({ 'title': 'Seleziona gli estremi dei trasferimenti', 'etichetta_invio': 'Avvia trasferimento', 'eseguito': False, 'url': reverse('admin:anagrafica_persona_trasferisci_post'), }) eseguito = 'do_action' in request.POST form = form_class() contesto.update({ 'opts': self.model._meta, 'form': form, 'queryset': queryset, 'action': 'sposta_persone', 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, 'pks': queryset.values_list('pk', flat=True) if queryset else '', 'trasferimenti': trasferimenti, 'errori': errori, 'esclusi': esclusi, 'eseguito': eseguito, }) return render(request, 'admin/anagrafica/trasferimento_massivo.html', contesto)
def espandi_gestione_centrale_operativa_sede(qs_sedi, al_giorno=None): from anagrafica.models import Persona, Appartenenza return [ (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi).via("appartenenze"), reperibilita__isnull=False)), (LETTURA, Persona.objects.filter(Appartenenza.query_attuale(al_giorno=al_giorno, sede__in=qs_sedi).via("appartenenze"), coturni__isnull=False)), ]
def choices_for_request(self): self.choices = self.choices.filter(Appartenenza.query_attuale(membro=Appartenenza.SOSTENITORE).via("appartenenze")) return super(SostenitoreAutocompletamento, self).choices_for_request()
def _appartenenze_attive(queryset): return queryset.filter( appartenenze__in=Appartenenza.query_attuale().values_list('pk', flat='True') )
def choices_for_request(self): sedi = [d.oggetto for d in self.request.user.persona.deleghe_attuali(tipo__in=(UFFICIO_SOCI, UFFICIO_SOCI_UNITA))] self.choices = self.choices.filter(Appartenenza.query_attuale(membro=Appartenenza.VOLONTARIO, sede__in=sedi).via("appartenenze")) return super(VolontarioSedeAutocompletamento, self).choices_for_request()