def test_elettorato_attivo_dimissione_anzianita_soddisfatta(self): x = Appartenenza( persona=self.p, sede=self.s, inizio=self.due_anni_e_mezo_fa, fine=self.un_anno_fa, terminazione=Appartenenza.DIMISSIONE, ) x.save() self.a.inizio = self.sei_mesi_fa self.a.fine = None self.a.precedente = x self.a.save() self.assertFalse( self._elettorato_contiene(tipo="attivo", persona=self.p), "Elettorato attivo NON contiene volontari con doppia appartenenza valida (DIMISSIONE)" ) x.inizio = self.un_anno_e_mezzo_fa x.save() self.assertFalse( self._elettorato_contiene(tipo="attivo", persona=self.p), "Elettorato attivo non contiene volontari con doppia appartenenza invalida (DIMISSIONE)" ) self.a.precedente = None self.a.save() x.delete()
def import_import_volontari(risultato): i = 0 for p in risultato: if _ha_errore(p): continue dati = _ottieni_dati(p) dati_persona = { x: y for x, y in dati.items() if x in [ "nome", "cognome", "codice_fiscale", "data_nascita", "comune_nascita", "provincia_nascita", "stato_nascita", "stato_residenza", "cap_residenza", "indirizzo_residenza", "comune_residenza", "email_contatto" ] } try: persona = Persona.objects.get( codice_fiscale__iexact=dati_persona['codice_fiscale']) except Persona.DoesNotExist: persona = Persona(**dati_persona) persona.save() if dati['telefono']: persona.aggiungi_numero_telefono(dati['telefono'], servizio=False) if dati['telefono_servizio']: persona.aggiungi_numero_telefono(dati['telefono_servizio'], servizio=True) for app in persona.appartenenze_attuali(): app.fine = poco_fa() app.save() # Cancella aspirante associato Aspirante.objects.filter(persona=persona).delete() app = Appartenenza( persona=persona, sede=dati['sede'], inizio=dati['data_ingresso'], membro=Appartenenza.VOLONTARIO, ) app.save() if dati['email'] and not Utenza.objects.filter( persona=persona).exists(): # Non ha utenza if not Utenza.objects.filter(email__iexact=dati['email']): # Non esiste, prova a creare u = Utenza(persona=persona, email=dati['email']) u.save() u.genera_credenziali() i += 1 return i
def test_elettorato_passivo_trasferimento_anzianita_soddisfatta(self): x = Appartenenza( persona=self.p, sede=self.s, inizio=self.due_anni_e_mezo_fa, fine=self.un_anno_fa, terminazione=Appartenenza.TRASFERIMENTO, ) x.save() self.a.inizio = self.un_anno_fa self.a.fine = None self.a.precedente = x self.a.save() self.assertTrue( self._elettorato_contiene(tipo="passivo", persona=self.p), "Elettorato passivo contiene volontari con doppia appartenenza valida (trasf.)" ) x.inizio = self.un_anno_e_mezzo_fa x.save() self.assertFalse( self._elettorato_contiene(tipo="passivo", persona=self.p), "Elettorato attivo non contiene volontari con doppia appartenenza invalida (trasf.)" ) self.a.precedente = None self.a.save() x.delete()
def crea_appartenenza(persona, sede): app = Appartenenza( persona=persona, sede=sede, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app.save() return app
def import_import_volontari(risultato): i = 0 for p in risultato: if _ha_errore(p): continue dati = _ottieni_dati(p) dati_persona = {x: y for x, y in dati.items() if x in [ "nome", "cognome", "codice_fiscale", "data_nascita", "comune_nascita", "provincia_nascita", "stato_nascita", "stato_residenza", "cap_residenza", "indirizzo_residenza", "comune_residenza", "email_contatto" ]} try: persona = Persona.objects.get(codice_fiscale__iexact=dati_persona['codice_fiscale']) except Persona.DoesNotExist: persona = Persona(**dati_persona) persona.save() if dati['telefono']: persona.aggiungi_numero_telefono(dati['telefono'], servizio=False) if dati['telefono_servizio']: persona.aggiungi_numero_telefono(dati['telefono_servizio'], servizio=True) for app in persona.appartenenze_attuali(): app.fine = poco_fa() app.save() # Cancella aspirante associato Aspirante.objects.filter(persona=persona).delete() app = Appartenenza( persona=persona, sede=dati['sede'], inizio=dati['data_ingresso'], membro=Appartenenza.VOLONTARIO, ) app.save() if dati['email'] and not Utenza.objects.filter(persona=persona).exists(): # Non ha utenza if not Utenza.objects.filter(email__iexact=dati['email']): # Non esiste, prova a creare u = Utenza(persona=persona, email=dati['email']) u.save() u.genera_credenziali() i += 1 return i
def test_dimissione_passaggio_sostenitore(self): c = crea_sede(estensione=PROVINCIALE) c.save() p = crea_persona() p.save() a = Appartenenza( persona=p, sede=c, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", confermata=True ) a.save() d = Dimissione( persona=p, sede=c, appartenenza=a ) d.save() self.assertTrue( a.attuale(), msg="L'appartenenza risulta quella attuale." ) d.applica(trasforma_in_sostenitore=True) self.assertFalse( a.attuale(), msg="L'appartenenza risulta non più attuale." ) appartenenze_attuali = p.appartenenze_attuali() self.assertTrue( appartenenze_attuali.count() == 1, msg="Esiste solo una appartenenza attuale come sostenitore." )
def test_dimissione(self): c = crea_sede(estensione=PROVINCIALE) c.save() p = crea_persona() p.save() a = Appartenenza( persona=p, sede=c, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", confermata=True ) a.save() d = Dimissione( persona=p, sede=c, appartenenza=a ) d.save() self.assertTrue( a.attuale(), msg="L'appartenenza risulta quella attuale." ) d.applica() self.assertFalse( a.attuale(), msg="L'appartenenza risulta non più attuale." ) appartenenze_attuali = p.appartenenze_attuali() self.assertTrue( appartenenze_attuali.count() == 0, msg="Non esiste alcuna appartenenza attuale per dimissioni normali." )
def test_permessi_attivita(self): fiumefreddo = Sede( nome="Comitato Locale di Fiumefreddo di Sicilia", tipo=Sede.COMITATO, estensione=LOCALE, ) fiumefreddo.save() mascali = Sede( nome="Comitato Locale di Mascali", tipo=Sede.COMITATO, estensione=LOCALE, ) mascali.save() area = Area( nome="6", obiettivo=6, sede=fiumefreddo, ) area.save() a = Attivita( stato=Attivita.VISIBILE, nome="Att 1", apertura=Attivita.APERTA, area=area, descrizione="1", sede=mascali, ) a.save() p = Persona( nome="Mario", cognome="Rossi", codice_fiscale="FRSSAKJNOKAJMI", data_nascita="1994-2-5" ) p.save() app = Appartenenza( persona=p, sede=fiumefreddo, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app.save() t = Turno( attivita=a, prenotazione=datetime.datetime(2015, 11, 10), inizio=datetime.datetime(2015, 11, 10), fine=datetime.datetime(2015, 11, 30), minimo=1, massimo=6, ) t.save() delega = Delega( oggetto=a, persona=p, tipo=REFERENTE, inizio="2015-11-15", ) delega.save() self.assertTrue( p.calendario_turni(datetime.date(2015, 11, 1), datetime.date(2015, 11, 30)).filter(pk=t.pk).exists(), msg="Il turno viene trovato nel calendario - attivita' creata dalla sede del volontario" )
def test_attivita_estesa(self): sicilia = Sede( nome="Comitato Regionale di Sicilia", tipo=Sede.COMITATO, estensione=LOCALE, ) sicilia.save() fiumefreddo = Sede( nome="Comitato Locale di Fiumefreddo di Sicilia", tipo=Sede.COMITATO, estensione=LOCALE, genitore=sicilia, ) fiumefreddo.save() mascali = Sede( nome="Comitato Locale di Mascali", tipo=Sede.COMITATO, estensione=LOCALE, genitore=sicilia, ) mascali.save() calabria = Sede( nome="Comitato Regionale di Calabria", tipo=Sede.COMITATO, estensione=LOCALE, ) calabria.save() area = Area( nome="6", obiettivo=6, sede=sicilia, ) area.save() a = Attivita( stato=Attivita.VISIBILE, nome="Att 1", apertura=Attivita.APERTA, area=area, descrizione="1", sede=sicilia, estensione=sicilia, ) a.save() a1 = Attivita( stato=Attivita.VISIBILE, nome="Att 1", apertura=Attivita.APERTA, area=area, descrizione="1", sede=fiumefreddo, estensione=sicilia, ) a1.save() t = Turno( attivita=a, prenotazione=datetime.datetime(2015, 11, 10), inizio=datetime.datetime(2015, 11, 10), fine=datetime.datetime(2015, 11, 30), minimo=1, massimo=6, ) t.save() t1 = Turno( attivita=a, prenotazione=datetime.datetime(2015, 11, 10), inizio=datetime.datetime(2015, 10, 10), fine=datetime.datetime(2015, 10, 30) ) t1.save() t2 = Turno( attivita=a1, prenotazione=datetime.datetime(2015, 11, 10), inizio=datetime.datetime(2015, 11, 10), fine=datetime.datetime(2015, 11, 30) ) t2.save() p = Persona( nome="Mario", cognome="Rossi", codice_fiscale="FRSSAKJSIKAJDO", data_nascita="1994-2-5" ) p.save() p1 = Persona( nome="Mario", cognome="Rossi", codice_fiscale="FRSSAKJSIRAJDO", data_nascita="1994-2-5" ) p1.save() p2 = Persona( nome="Mario", cognome="Rossi", codice_fiscale="FRSSAKJNOKAJDO", data_nascita="1994-2-5" ) p2.save() p3 = Persona( nome="Mario", cognome="Rossi", codice_fiscale="FRSSAKJNOKAJMI", data_nascita="1994-2-5" ) p3.save() app = Appartenenza( persona=p, sede=sicilia, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app.save() app1 = Appartenenza( persona=p1, sede=fiumefreddo, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app1.save() app2 = Appartenenza( persona=p2, sede=mascali, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app2.save() app3 = Appartenenza( persona=p3, sede=calabria, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app3.save() self.assertTrue( p2.calendario_turni(datetime.date(2015, 11, 1), datetime.date(2015, 11, 30)).filter(pk=t2.pk).exists(), msg="Il turno viene trovato nel calendario - attivita' estesa al volontario" ) self.assertFalse( p3.calendario_turni(datetime.date(2015, 11, 1), datetime.date(2015, 11, 30)).filter(pk=t2.pk).exists(), msg="Il turno non viene trovato nel calendario - attivita' estesa al volontario" )
def test_permessi_attivita(self): fiumefreddo = Sede( nome="Comitato Locale di Fiumefreddo di Sicilia", tipo=Sede.COMITATO, estensione=LOCALE, ) fiumefreddo.save() mascali = Sede( nome="Comitato Locale di Mascali", tipo=Sede.COMITATO, estensione=LOCALE, ) mascali.save() area = Area( nome="6", obiettivo=6, sede=fiumefreddo, ) area.save() a = Attivita( stato=Attivita.VISIBILE, nome="Att 1", apertura=Attivita.APERTA, area=area, descrizione="1", sede=mascali, ) a.save() p = Persona(nome="Mario", cognome="Rossi", codice_fiscale="FRSSAKJNOKAJMI", data_nascita="1994-2-5") p.save() app = Appartenenza( persona=p, sede=fiumefreddo, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app.save() t = Turno( attivita=a, prenotazione=datetime.datetime(2015, 11, 10), inizio=datetime.datetime(2015, 11, 10), fine=datetime.datetime(2015, 11, 30), minimo=1, massimo=6, ) t.save() delega = Delega( oggetto=a, persona=p, tipo=REFERENTE, inizio="2015-11-15", ) delega.save() self.assertTrue( p.calendario_turni(datetime.date(2015, 11, 1), datetime.date(2015, 11, 30)).filter(pk=t.pk).exists(), msg= "Il turno viene trovato nel calendario - attivita' creata dalla sede del volontario" )
def test_attivita_estesa(self): sicilia = Sede( nome="Comitato Regionale di Sicilia", tipo=Sede.COMITATO, estensione=LOCALE, ) sicilia.save() fiumefreddo = Sede( nome="Comitato Locale di Fiumefreddo di Sicilia", tipo=Sede.COMITATO, estensione=LOCALE, genitore=sicilia, ) fiumefreddo.save() mascali = Sede( nome="Comitato Locale di Mascali", tipo=Sede.COMITATO, estensione=LOCALE, genitore=sicilia, ) mascali.save() calabria = Sede( nome="Comitato Regionale di Calabria", tipo=Sede.COMITATO, estensione=LOCALE, ) calabria.save() area = Area( nome="6", obiettivo=6, sede=sicilia, ) area.save() a = Attivita( stato=Attivita.VISIBILE, nome="Att 1", apertura=Attivita.APERTA, area=area, descrizione="1", sede=sicilia, estensione=sicilia, ) a.save() a1 = Attivita( stato=Attivita.VISIBILE, nome="Att 1", apertura=Attivita.APERTA, area=area, descrizione="1", sede=fiumefreddo, estensione=sicilia, ) a1.save() t = Turno( attivita=a, prenotazione=datetime.datetime(2015, 11, 10), inizio=datetime.datetime(2015, 11, 10), fine=datetime.datetime(2015, 11, 30), minimo=1, massimo=6, ) t.save() t1 = Turno(attivita=a, prenotazione=datetime.datetime(2015, 11, 10), inizio=datetime.datetime(2015, 10, 10), fine=datetime.datetime(2015, 10, 30)) t1.save() t2 = Turno(attivita=a1, prenotazione=datetime.datetime(2015, 11, 10), inizio=datetime.datetime(2015, 11, 10), fine=datetime.datetime(2015, 11, 30)) t2.save() p = Persona(nome="Mario", cognome="Rossi", codice_fiscale="FRSSAKJSIKAJDO", data_nascita="1994-2-5") p.save() p1 = Persona(nome="Mario", cognome="Rossi", codice_fiscale="FRSSAKJSIRAJDO", data_nascita="1994-2-5") p1.save() p2 = Persona(nome="Mario", cognome="Rossi", codice_fiscale="FRSSAKJNOKAJDO", data_nascita="1994-2-5") p2.save() p3 = Persona(nome="Mario", cognome="Rossi", codice_fiscale="FRSSAKJNOKAJMI", data_nascita="1994-2-5") p3.save() app = Appartenenza( persona=p, sede=sicilia, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app.save() app1 = Appartenenza( persona=p1, sede=fiumefreddo, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app1.save() app2 = Appartenenza( persona=p2, sede=mascali, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app2.save() app3 = Appartenenza( persona=p3, sede=calabria, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", ) app3.save() self.assertTrue( p2.calendario_turni(datetime.date(2015, 11, 1), datetime.date(2015, 11, 30)).filter(pk=t2.pk).exists(), msg= "Il turno viene trovato nel calendario - attivita' estesa al volontario" ) self.assertFalse( p3.calendario_turni(datetime.date(2015, 11, 1), datetime.date(2015, 11, 30)).filter(pk=t2.pk).exists(), msg= "Il turno non viene trovato nel calendario - attivita' estesa al volontario" )
def test_permessi(self): c = crea_sede(estensione=PROVINCIALE) c.save() c2 = crea_sede(estensione=TERRITORIALE, genitore=c) c2.save() p = crea_persona() p.save() v = crea_persona() v.save() a = Appartenenza( persona=v, sede=c, membro=Appartenenza.VOLONTARIO, inizio="1980-12-10", confermata=True ) a.save() self.assertFalse( p.permessi_almeno(c, MODIFICA), msg="Questa persona non ha delega di presidenza" ) self.assertFalse( p.permessi_almeno(v, MODIFICA), msg="Questa persona non ha delega di Ufficio Soci" ) d1 = Delega( persona=p, tipo=UFFICIO_SOCI, oggetto=c, inizio="1980-12-10", fine="1990-12-10", ) d1.save() self.assertFalse( p.permessi_almeno(v, MODIFICA), msg="La delega e' passata, non vale." ) d2 = Delega( persona=p, tipo=UFFICIO_SOCI, oggetto=c, inizio="2020-12-10", fine="2025-12-10", ) d2.save() self.assertFalse( p.permessi_almeno(v, MODIFICA), msg="La delega e' futura, non vale." ) d3 = Delega( persona=p, tipo=UFFICIO_SOCI, oggetto=c, inizio="2020-12-10", fine=None, ) d3.save() self.assertFalse( p.permessi_almeno(v, MODIFICA), msg="La delega e' futura, non vale." ) self.assertFalse( p.oggetti_permesso(ELENCHI_SOCI).exists(), msg="Non ho permesso di Elenchi soci da nessuna parte" ) d4 = Delega( persona=p, tipo=UFFICIO_SOCI, oggetto=c, inizio="2000-12-10", fine="2099-12-10", ) d4.save() self.assertTrue( p.permessi_almeno(v, MODIFICA), msg="La persona ha diritti di US sulla scheda." ) d4.delete() d5 = Delega( persona=p, tipo=UFFICIO_SOCI, oggetto=c, inizio="2000-12-10", fine=None, ) d5.save() self.assertTrue( p.permessi_almeno(v, MODIFICA), msg="La persona ha diritti di US sulla scheda." ) self.assertTrue( p.oggetti_permesso(ELENCHI_SOCI).count() == 2, msg="Ho permesso di elenchi su due comitati" ) self.assertFalse( p.permessi_almeno(c, MODIFICA), msg="Questa persona non ha delega di presidenza" ) d6 = Delega( persona=p, tipo=PRESIDENTE, oggetto=c, inizio="2000-12-10", fine=None, ) d6.save() self.assertTrue( p.permessi_almeno(v, MODIFICA), msg="La persona ha diritti di US sulla scheda." ) self.assertTrue( p.permessi_almeno(c, MODIFICA), msg="Questa persona ha delega di presidenza" ) self.assertTrue( p.permessi_almeno(c2, MODIFICA), msg="Questa persona ha delega di presidenza, e puo' quindi modificare comitati sottostanti" ) d5.delete() self.assertTrue( p.permessi_almeno(v, MODIFICA), msg="La persona ha ancora, tramite presidenza, diritti di US sulla scheda." ) self.assertTrue( p.permessi_almeno(c, MODIFICA), msg="Questa persona ha delega di presidenza" ) d6.fine = "2010-12-10" d6.save() self.assertFalse( p.permessi_almeno(v, MODIFICA), msg="La persona non ha piu, tramite presidenza, diritti di US sulla scheda." ) self.assertFalse( p.permessi_almeno(c, MODIFICA), msg="Questa persona non ha piu delega di presidenza" ) d6.delete()
def test_storia_volontario(self): presidente1 = crea_persona() presidente2 = crea_persona() persona = crea_persona() persona.save() persona, sede1, app1 = crea_persona_sede_appartenenza(presidente1) sede2 = crea_sede(presidente2) sede2.save() sede3 = crea_sede(presidente2) sede3.save() # Appena diventato volontario a = Appartenenza( persona=persona, sede=sede1, membro=Appartenenza.VOLONTARIO, inizio=poco_fa(), confermata=True ) a.save() self.assertTrue(persona.volontario_da_meno_di_un_anno) # data vecchia nel passato a.inizio = "1980-12-10" a.save() self.assertFalse(persona.volontario_da_meno_di_un_anno) # trasferiscilo ad altro comitato modulo = ModuloCreazioneEstensione() est = modulo.save(commit=False) est.richiedente = persona est.persona = persona est.destinazione = sede2 est.save() est.richiedi() aut = presidente1.autorizzazioni_in_attesa().first() modulo = est.autorizzazione_concedi_modulo()({ "protocollo_numero": 31, "protocollo_data": datetime.date.today() }) aut.concedi(presidente1, modulo=modulo) est.refresh_from_db() # il trasferimento non cambia l'anzianità self.assertFalse(persona.volontario_da_meno_di_un_anno) # impostiamo una data recente a.inizio = datetime.date.today() a.save() self.assertTrue(persona.volontario_da_meno_di_un_anno) # trasferimento fallito ad altro comitato modulo = ModuloCreazioneEstensione() est = modulo.save(commit=False) est.richiedente = persona est.persona = persona est.destinazione = sede3 est.save() est.richiedi() aut = presidente1.autorizzazioni_in_attesa().first() modulo = est.autorizzazione_concedi_modulo()({ "protocollo_numero": 32, "protocollo_data": datetime.date.today() }) aut.nega(presidente1, modulo=modulo) est.refresh_from_db() # lo stato non è cambiato self.assertTrue(persona.volontario_da_meno_di_un_anno) # data vecchia nel passato a.inizio = "1980-12-10" a.save() self.assertFalse(persona.volontario_da_meno_di_un_anno) # un espulso non è più un volontario, quindi deve fallire a.inizio = datetime.date.today() a.save() persona.espelli() self.assertFalse(persona.volontario_da_meno_di_un_anno) # reintegriamo l'utente a = Aspirante(persona=persona) a.locazione = sede1.locazione a.save() # l'aspirante non è volontario self.assertFalse(persona.volontario_da_meno_di_un_anno) # promosso a volontario persona.da_aspirante_a_volontario(sede2) # è appena tornato volontario self.assertTrue(persona.volontario_da_meno_di_un_anno) # dimettiamolo for app in persona.appartenenze_attuali(): d = Dimissione( persona=persona, sede=sede2, appartenenza=app ) d.save() d.applica() self.assertFalse(persona.volontario_da_meno_di_un_anno) # reintegriamo l'utente a = Aspirante(persona=persona) a.locazione = sede1.locazione a.save() # l'aspirante non è volontario self.assertFalse(persona.volontario_da_meno_di_un_anno) # promosso a volontario persona.da_aspirante_a_volontario(sede2) # è appena tornato volontario self.assertTrue(persona.volontario_da_meno_di_un_anno) attuale = persona.appartenenze_attuali().get(membro=Appartenenza.VOLONTARIO) # data vecchia nel passato attuale.inizio = "1980-12-10" attuale.save() self.assertFalse(persona.volontario_da_meno_di_un_anno)
s1 = Sede(nome="York", genitore=c, estensione=TERRITORIALE) s1.save() s2 = Sede(nome="Bergamo", genitore=c, estensione=TERRITORIALE) s2.save() s3 = Sede(nome="Catania", genitore=c, estensione=TERRITORIALE) s3.save() a1 = Autoparco(nome="Autorimessa Principato", sede=s3) a1.save() print("Genero dei membri della Sede a caso...") for sede in [c, s1, s2, s3]: # Per ogni Sede for membro in [Appartenenza.VOLONTARIO, Appartenenza.SOSTENITORE]: for i in range(0, 20): # Creo 20 volontari p = crea_persona() a = Appartenenza(persona=p, sede=sede, inizio=poco_fa(), membro=membro) a.save() print("Ne creo un presidente...") # Creo il presidente presidente = crea_persona() presidente.nome = "Douglas" presidente.cognome = "Adams" presidente.save() a = Appartenenza(persona=presidente, sede=s1, inizio=poco_fa(), membro=Appartenenza.VOLONTARIO) a.save() # Assegno una utenza print(" - Creo credenziali...") utenza = Utenza(persona=presidente, email="*****@*****.**", password='******')