def test_autorizzazioni_automatiche_non_scadute(self): presidente = crea_persona() persona, sede, app = crea_persona_sede_appartenenza(presidente=presidente) ora = timezone.now() area, attivita = crea_area_attivita(sede) domani_inizio = ora + timedelta(days=24) domani_fine = ora + timedelta(days=180) t1 = crea_turno(attivita, inizio=domani_inizio, fine=domani_fine) partecipazione = crea_partecipazione(persona, t1) attivita.centrale_operativa = Attivita.CO_AUTO attivita.save() self.assertEqual(0, Autorizzazione.objects.count()) partecipazione.richiedi() self.assertEqual(0, len(mail.outbox)) self.assertEqual(1, Autorizzazione.objects.count()) autorizzazione = Autorizzazione.objects.first() Autorizzazione.gestisci_automatiche() self.assertEqual(0, len(mail.outbox)) self.assertFalse(partecipazione.automatica) Autorizzazione.gestisci_automatiche() self.assertEqual(0, len(mail.outbox)) self.assertFalse(partecipazione.automatica)
def test_autorizzazioni_automatiche_non_scadute(self): presidente = crea_persona() persona, sede, app = crea_persona_sede_appartenenza( presidente=presidente) ora = timezone.now() area, attivita = crea_area_attivita(sede) domani_inizio = ora + timedelta(days=24) domani_fine = ora + timedelta(days=180) t1 = crea_turno(attivita, inizio=domani_inizio, fine=domani_fine) partecipazione = crea_partecipazione(persona, t1) attivita.centrale_operativa = Attivita.CO_AUTO attivita.save() self.assertEqual(0, Autorizzazione.objects.count()) partecipazione.richiedi() self.assertEqual(0, len(mail.outbox)) self.assertEqual(1, Autorizzazione.objects.count()) autorizzazione = Autorizzazione.objects.first() Autorizzazione.gestisci_automatiche() self.assertEqual(0, len(mail.outbox)) self.assertFalse(partecipazione.automatica) Autorizzazione.gestisci_automatiche() self.assertEqual(0, len(mail.outbox)) self.assertFalse(partecipazione.automatica)
def test_ricerca_posizione(self): presidente = crea_persona() persona, sede, app = crea_persona_sede_appartenenza(presidente=presidente) area, attivita = crea_area_attivita(sede=sede) sessione_presidente = self.sessione_utente(persona=presidente) sessione_presidente.visit("%s%s" % (self.live_server_url, attivita.url_modifica)) with sessione_presidente.get_iframe(0) as iframe: iframe.fill('indirizzo', 'via etnea 353') iframe.fill('comune', 'ct') iframe.fill('provincia', 'ctnia') iframe.find_by_xpath("//button[@type='submit']").first.click() self.assertTrue( iframe.is_text_present("Via Etnea, 353, 95125 Catania CT, Italia"), msg="Indirizzo trovato correttamente" ) iframe.find_by_xpath("//button[@value='Via Etnea, 353, 95125 Catania CT, Italia']").first.click() self.assertTrue( iframe.is_text_present("Via Etnea, 353, 95125 Catania CT, Italia", wait_time=5), msg="Indirizzo salvato correttamente" )
def test_campo_centrale_operativa_disabilitata(self): presidente = crea_persona() referente = crea_persona() volontario, sede, appartenenza = crea_persona_sede_appartenenza() delega = Delega( oggetto=sede, persona=presidente, tipo=PRESIDENTE, inizio="2005-11-15", ) delega.save() delega_2 = Delega( oggetto=sede, persona=referente, tipo=DELEGATO_CO, inizio="2005-11-15", ) delega_2.save() area, attivita = crea_area_attivita(sede=sede) inizio = timezone.now() + timedelta(hours=12) fine = inizio + timedelta(hours=2) turno = crea_turno(attivita, inizio=inizio, fine=fine) attivita.aggiungi_delegato(REFERENTE, volontario) attivita.aggiungi_delegato(REFERENTE, referente) # Crea le sessioni sessione_referente = self.sessione_utente(persona=referente) sessione_volontario = self.sessione_utente(persona=volontario) sessione_presidente = self.sessione_utente(persona=presidente) # Volontario: Apri la pagina dell'attivita' sessione_volontario.visit("%s%smodifica/" % (self.live_server_url, attivita.url)) self.assertIn( 'disabled', sessione_volontario.find_by_id('id_centrale_operativa') [0].outer_html) sessione_presidente.visit("%s%smodifica/" % (self.live_server_url, attivita.url)) self.assertNotIn( 'disabled', sessione_presidente.find_by_id('id_centrale_operativa') [0].outer_html) sessione_referente.visit("%s%smodifica/" % (self.live_server_url, attivita.url)) self.assertNotIn( 'disabled', sessione_referente.find_by_id('id_centrale_operativa') [0].outer_html)
def test_controllo_anni_attivita(self): from anagrafica.costanti import LIMITE_ETA, LIMITE_ANNI_ATTIVITA ora = now() data_limite = ora.today() data_sotto = data_limite.replace(year=data_limite.year - (LIMITE_ETA - 1)) data_sopra = data_limite.replace(year=data_limite.year - (LIMITE_ETA + 1)) data_limite = data_limite.replace(year=data_limite.year - LIMITE_ETA) sede = crea_sede() persona_sotto_limite = crea_persona() persona_sotto_limite.data_nascita = data_sotto persona_sotto_limite.save() crea_appartenenza(persona_sotto_limite, sede) persona_sopra_limite = crea_persona() persona_sopra_limite.data_nascita = data_sopra persona_sopra_limite.save() crea_appartenenza(persona_sopra_limite, sede) persona_al_limite = crea_persona() persona_al_limite.data_nascita = data_limite persona_al_limite.save() crea_appartenenza(persona_al_limite, sede) area, attivita = crea_area_attivita(sede) for anni in range(0, LIMITE_ANNI_ATTIVITA + 3): inizio = ora.replace(year=ora.year - (anni - 1)) fine = ora.replace(year=ora.year - (anni - 1)) + datetime.timedelta(hours=1) t1 = crea_turno(attivita, inizio=inizio, fine=fine) if anni < LIMITE_ANNI_ATTIVITA: for persona in (persona_sotto_limite, persona_sopra_limite, persona_al_limite): crea_partecipazione(persona, t1) elif anni == LIMITE_ANNI_ATTIVITA: for persona in (persona_sopra_limite, persona_al_limite): crea_partecipazione(persona, t1) else: crea_partecipazione(persona_sopra_limite, t1) lista = _calcola_anni_attivita(Persona.objects.all()) self.assertEqual(set(lista), {persona_sotto_limite}) lista = _calcola_anni_attivita(Persona.objects.all(), meno=False) self.assertEqual(set(lista), {persona_al_limite, persona_sopra_limite})
def test_autorizzazioni_automatiche_scadute(self): presidente = crea_persona() persona, sede, app = crea_persona_sede_appartenenza( presidente=presidente) persona.email_contatto = email_fittizzia() persona.save() ora = timezone.now() area, attivita = crea_area_attivita(sede) domani_inizio = ora + timedelta(days=24) domani_fine = ora + timedelta(days=180) t1 = crea_turno(attivita, inizio=domani_inizio, fine=domani_fine) partecipazione = crea_partecipazione(persona, t1) attivita.centrale_operativa = Attivita.CO_AUTO attivita.save() self.assertEqual(0, Autorizzazione.objects.count()) partecipazione.richiedi() self.assertNotIn(partecipazione, Partecipazione.con_esito_ok()) self.assertEqual(0, len(mail.outbox)) self.assertEqual(1, Autorizzazione.objects.count()) autorizzazione = Autorizzazione.objects.first() self.assertNotEqual(autorizzazione.scadenza, None) autorizzazione.scadenza = timezone.now() - timedelta(days=10) autorizzazione.save() self.assertFalse(autorizzazione.concessa) Autorizzazione.gestisci_automatiche() self.assertEqual(1, len(mail.outbox)) messaggio = mail.outbox[0] self.assertTrue( messaggio.subject.find( 'Richiesta di partecipazione attività RESPINTA') > -1) self.assertFalse( messaggio.subject.find( 'Richiesta di partecipazione attività APPROVATA') > -1) self.assertTrue( messaggio.body.find( 'una tua richiesta è rimasta in attesa per 30 giorni e come da policy' ) == -1) self.assertTrue(autorizzazione.oggetto.automatica) Autorizzazione.gestisci_automatiche() self.assertEqual(1, len(mail.outbox)) self.assertEqual(autorizzazione.concessa, None) self.assertIn(partecipazione, Partecipazione.con_esito_no())
def test_campo_centrale_operativa_disabilitata(self): presidente = crea_persona() referente = crea_persona() volontario, sede, appartenenza = crea_persona_sede_appartenenza() delega = Delega( oggetto=sede, persona=presidente, tipo=PRESIDENTE, inizio="2005-11-15", ) delega.save() delega_2 = Delega( oggetto=sede, persona=referente, tipo=DELEGATO_CO, inizio="2005-11-15", ) delega_2.save() area, attivita = crea_area_attivita(sede=sede) inizio = timezone.now() + timedelta(hours=12) fine = inizio + timedelta(hours=2) turno = crea_turno(attivita, inizio=inizio, fine=fine) attivita.aggiungi_delegato(REFERENTE, volontario) attivita.aggiungi_delegato(REFERENTE, referente) # Crea le sessioni sessione_referente = self.sessione_utente(persona=referente) sessione_volontario = self.sessione_utente(persona=volontario) sessione_presidente = self.sessione_utente(persona=presidente) # Volontario: Apri la pagina dell'attivita' sessione_volontario.visit("%s%smodifica/" % (self.live_server_url, attivita.url)) self.assertIn('disabled', sessione_volontario.find_by_id('id_centrale_operativa')[0].outer_html) sessione_presidente.visit("%s%smodifica/" % (self.live_server_url, attivita.url)) self.assertNotIn('disabled', sessione_presidente.find_by_id('id_centrale_operativa')[0].outer_html) sessione_referente.visit("%s%smodifica/" % (self.live_server_url, attivita.url)) self.assertNotIn('disabled', sessione_referente.find_by_id('id_centrale_operativa')[0].outer_html)
def test_autorizzazioni_automatiche_scadute(self): presidente = crea_persona() persona, sede, app = crea_persona_sede_appartenenza(presidente=presidente) persona.email_contatto = email_fittizzia() persona.save() ora = timezone.now() area, attivita = crea_area_attivita(sede) domani_inizio = ora + timedelta(days=24) domani_fine = ora + timedelta(days=180) t1 = crea_turno(attivita, inizio=domani_inizio, fine=domani_fine) partecipazione = crea_partecipazione(persona, t1) attivita.centrale_operativa = Attivita.CO_AUTO attivita.save() self.assertEqual(0, Autorizzazione.objects.count()) partecipazione.richiedi() self.assertNotIn(partecipazione, Partecipazione.con_esito_ok()) self.assertEqual(0, len(mail.outbox)) self.assertEqual(1, Autorizzazione.objects.count()) autorizzazione = Autorizzazione.objects.first() self.assertNotEqual(autorizzazione.scadenza, None) autorizzazione.scadenza = timezone.now() - timedelta(days=10) autorizzazione.save() self.assertFalse(autorizzazione.concessa) Autorizzazione.gestisci_automatiche() self.assertEqual(1, len(mail.outbox)) messaggio = mail.outbox[0] self.assertTrue(messaggio.subject.find('Richiesta di partecipazione attività RESPINTA') > -1) self.assertFalse(messaggio.subject.find('Richiesta di partecipazione attività APPROVATA') > -1) self.assertTrue(messaggio.body.find('una tua richiesta è rimasta in attesa per 30 giorni e come da policy') == -1) self.assertTrue(autorizzazione.oggetto.automatica) Autorizzazione.gestisci_automatiche() self.assertEqual(1, len(mail.outbox)) self.assertEqual(autorizzazione.concessa, None) self.assertIn(partecipazione, Partecipazione.con_esito_no())
def test_richiesta_partecipazione(self): referente = crea_persona() volontario, sede, appartenenza = crea_persona_sede_appartenenza() area, attivita = crea_area_attivita(sede=sede) inizio = timezone.now() + timedelta(hours=12) fine = inizio + timedelta(hours=2) turno = crea_turno(attivita, inizio=inizio, fine=fine) attivita.aggiungi_delegato(REFERENTE, referente) # Crea le sessioni sessione_referente = self.sessione_utente(persona=referente) sessione_volontario = self.sessione_utente(persona=volontario) # Volontario: Apri la pagina dell'attivita' sessione_volontario.visit("%s%s" % (self.live_server_url, attivita.url)) # Volontario: Apri pagina turni sessione_volontario.click_link_by_partial_text("Turni") # Volontario: Chiedi di partecipare sessione_volontario.click_link_by_partial_text("Partecipa") self.assertTrue( sessione_volontario.is_text_present("Richiesta inoltrata"), msg="La richiesta e stata inoltrata") # Volontario: Apri la pagina dell'attivita', pagina turni sessione_volontario.visit("%s%s" % (self.live_server_url, attivita.url)) sessione_volontario.click_link_by_partial_text("Turni") self.assertTrue( sessione_volontario.is_text_present("Hai chiesto di partecipare"), msg="Utente ha feedback sull'aver chiesto di partecipare") # Volontario: Vai allo storico sessione_volontario.click_link_by_partial_text("Miei turni") self.assertTrue(sessione_volontario.is_text_present("In attesa"), msg="Storico mostra stato in attesa della richiesta") # Referente: Trova la richiesta sessione_referente.click_link_by_partial_text("Richieste") self.assertTrue(sessione_referente.is_text_present( volontario.nome_completo), msg="La richiesta mostra il nome del volontario") self.assertTrue(sessione_referente.is_text_present(turno.nome), msg="La richiesta mostra il nome del turno") # Referente: Trova la richiesta sessione_referente.click_link_by_partial_text("Conferma") # Volontario: Vai allo storico sessione_volontario.click_link_by_partial_text("Miei turni") self.assertTrue(sessione_volontario.is_text_present("Approvata"), msg="La richiesta risulta ora approvata") # Volontario: Vai al turno sessione_volontario.click_link_by_partial_text(turno.nome) self.assertTrue( sessione_volontario.is_text_present("Partecipazione confermata"), msg="La partecipazione risulta nel turno")
def test_poteri_temporanei(self): presidente = crea_persona() persona, sede, app = crea_persona_sede_appartenenza( presidente=presidente) ora = timezone.now() area, attivita = crea_area_attivita(sede) self.assertFalse( persona.oggetti_permesso( GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona non ha di persé i permessi di gestione della CO") self.assertTrue( presidente.oggetti_permesso( GESTIONE_CENTRALE_OPERATIVA_SEDE).first() == sede, "Il presidente ha i permessi di gestione della CO", ) domani_inizio = ora + timedelta(hours=24) domani_fine = ora + timedelta(hours=25) t1 = crea_turno(attivita, inizio=domani_inizio, fine=domani_fine) partecipazione = crea_partecipazione(persona, t1) self.assertFalse( persona.oggetti_permesso( GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona non ha ancora i permessi di gestione della CO") attivita.centrale_operativa = Attivita.CO_AUTO attivita.save() self.assertFalse( persona.oggetti_permesso( GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona non ha ancora i permessi di gestione della CO") t1.inizio = ora t1.fine = ora + timedelta(hours=1) t1.save() self.assertTrue( persona.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).first() == sede, "La persona può ora gestire la CO per la Sede") self.assertTrue( persona.oggetti_permesso( GESTIONE_CENTRALE_OPERATIVA_SEDE).count() == 1, "La persona può ora gestire la CO per la Sede solamente (non sotto unità)" ) # Provo che il margine funzioni margine = Attivita.MINUTI_CENTRALE_OPERATIVA - 1 t1.inizio = ora + timedelta(minutes=margine) t1.fine = ora + timedelta(minutes=2 * margine) t1.save() self.assertTrue( persona.oggetti_permesso( GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona può gestire la CO con un margine di %d minuti in anticipo" % margine, ) t1.inizio = ora - timedelta(hours=24) t1.fine = ora - timedelta(minutes=margine) t1.save() self.assertTrue( persona.oggetti_permesso( GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona può gestire la CO con un margine di %d minuti dopo la fine" % margine, ) t1.inizio = ora - timedelta(hours=24) t1.fine = ora - timedelta(minutes=margine + 2) t1.save() self.assertFalse( persona.oggetti_permesso( GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona non puo gestire la CO se è troppo tardi", ) # Se la partecipazione viene richiesta... partecipazione.richiedi() self.assertFalse( persona.oggetti_permesso( GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona non può gestire la CO perché la richiesta non è stata processata" )
def test_centrale_operativa_permessi_attivita(self): delegato = crea_persona() volontario, sede, appartenenza = crea_persona_sede_appartenenza() sede.aggiungi_delegato(DELEGATO_CO, delegato) area, attivita = crea_area_attivita(sede, centrale_operativa=None) turno = crea_turno(attivita) crea_partecipazione(volontario, turno) sessione_delegato = self.sessione_utente(persona=delegato) sessione_volontario = self.sessione_utente(persona=volontario) self.assertFalse( sessione_volontario.is_text_present("CO"), "La centrale operativa non e' disponibile al volontario" ) self.assertTrue( sessione_delegato.is_text_present("CO"), "La centrale operativa e' disponibile al delegato" ) # In modalita' automatica, il volontario e' abilitato immediatamente attivita.centrale_operativa = Attivita.CO_AUTO attivita.save() sessione_volontario.visit("%s/utente/" % self.live_server_url) self.assertTrue( sessione_volontario.is_text_present("CO"), "La centrale operativa e' ora disponibile al volontario" ) sessione_volontario.click_link_by_partial_text("CO") sessione_volontario.click_link_by_partial_text("Turni") sessione_volontario.click_link_by_partial_text("Monta") self.assertTrue( sessione_volontario.is_text_present(attivita.nome), "Il volontario vede propria attivita in CO" ) # In modalita' manuale... attivita.centrale_operativa = Attivita.CO_MANUALE attivita.save() sessione_volontario.click_link_by_partial_text("Smonta") self.assertTrue( sessione_volontario.is_text_present("Accesso Negato"), "Il volontario non può più montare o smontare" ) sessione_delegato.click_link_by_partial_text("CO") sessione_delegato.click_link_by_partial_text("Poteri") self.assertTrue( sessione_delegato.is_text_present(volontario.nome), "Il delegato vede la persona in elenco" ) sessione_delegato.click_link_by_partial_text("Assegna") self.assertTrue( sessione_delegato.is_text_present("Ritira"), "Il delegato ha correttamente abilitato i poteri" ) sessione_volontario.click_link_by_partial_text("Torna") sessione_volontario.click_link_by_partial_text("CO") sessione_volontario.click_link_by_partial_text("Turni") sessione_volontario.click_link_by_partial_text("Smonta") self.assertTrue( sessione_volontario.is_text_present(volontario.nome), "Il volontario ha il suo nome in elenco" )
def test_appartenenza(self): data_corrente = datetime.date.today() anno_corrente = data_corrente.year LIVELLI_DELEGATI = [(DELEGATO_OBIETTIVO_1, 'M'), (DELEGATO_OBIETTIVO_2, 'N'), (DELEGATO_OBIETTIVO_3, 'O'), (DELEGATO_OBIETTIVO_4, 'P'), (DELEGATO_OBIETTIVO_5, 'Q'), (DELEGATO_OBIETTIVO_6, 'R')] LIVELLI_ATTIVITA = ['S', 'T', 'U', 'V', 'W', 'X'] # Notizie di test notizia_1 = NotiziaTest.objects.create(testo="Notizia 1: Testo di prova!") notizia_2 = NotiziaTest.objects.create(testo="Notizia 2: Altro testo di prova!") # SEGMENTI NOTIZIA_1 # Segmento per filtrare tutti gli utenti segmento_tutti_no_filtri = NotiziaTestSegmento.objects.create( segmento='A', notiziatest=notizia_1 ) # Segmento per filtrare tutti i volontari segmento_volontari_no_filtri = NotiziaTestSegmento.objects.create( segmento='B', notiziatest=notizia_1 ) # Segmento per filtrare tutti i volontari con meno di un anno di attivita segmento_volontari_meno_uno_no_filtri = NotiziaTestSegmento.objects.create( segmento='C', notiziatest=notizia_1 ) # Segmento per filtrare tutti i volontari con più di un anno di attivita segmento_volontari_piu_uno_no_filtri = NotiziaTestSegmento.objects.create( segmento='D', notiziatest=notizia_1 ) # Segmento per filtrare tutti i volontari con meno di 35 anni segmento_volontari_meno_35_anni_no_filtri = NotiziaTestSegmento.objects.create( segmento='E', notiziatest=notizia_1 ) # Segmento per filtrare tutti i volontari con meno di 35 anni segmento_volontari_35_anni_o_piu_no_filtri = NotiziaTestSegmento.objects.create( segmento='F', notiziatest=notizia_1 ) # Segmento per filtrare tutti i sostenitori segmento_sostenitori_no_filtri = NotiziaTestSegmento.objects.create( segmento='G', notiziatest=notizia_1 ) # Segmento per filtrare tutti i sostenitori segmento_aspiranti_corsisti_no_filtri = NotiziaTestSegmento.objects.create( segmento='H', notiziatest=notizia_1 ) # Segmento per filtrare tutti i presidenti con delega attiva segmento_presidenti_no_filtri = NotiziaTestSegmento.objects.create( segmento='I', notiziatest=notizia_1 ) # Segmento per filtrare tutti i presidenti di comitati locali con delega attiva segmento_presidenti_comitati_locali_no_filtri = NotiziaTestSegmento.objects.create( segmento='J', notiziatest=notizia_1 ) # Segmento per filtrare tutti i presidenti di comitati regionali con delega attiva segmento_presidenti_comitati_regionali_no_filtri = NotiziaTestSegmento.objects.create( segmento='K', notiziatest=notizia_1 ) # Segmento per filtrare tutti i delegati Ufficio Soci con delega attiva segmento_delegati_US_no_filtri = NotiziaTestSegmento.objects.create( segmento='L', notiziatest=notizia_1 ) # Segmento per filtrare tutti i delegati Autoparco con delega attiva segmento_delegati_autoparco_no_filtri = NotiziaTestSegmento.objects.create( segmento='Y', notiziatest=notizia_1 ) # Segmento per filtrare tutti i delegati Formazione con delega attiva segmento_delegati_formazione_no_filtri = NotiziaTestSegmento.objects.create( segmento='Z', notiziatest=notizia_1 ) # Segmento per filtrare tutti i volontari con titolo titolo_patenteCRI = Titolo.objects.create(tipo='PC', nome='Titolo test') segmento_volontari_con_titolo_no_filtri = NotiziaTestSegmento.objects.create( segmento='AA', notiziatest=notizia_1, titolo=titolo_patenteCRI ) # Utente gaia generico persona = crea_persona() persona.save() # Test appartenenza esito = persona.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = persona.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertFalse(esito) esito = persona.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) # Volontario volontario, _, _ = crea_persona_sede_appartenenza() esito = volontario.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) # Volontario con meno di un anno di attività volontario_meno_uno, _, _ = crea_persona_sede_appartenenza() volontario_meno_uno.creazione = data_corrente - datetime.timedelta(days=5) volontario_meno_uno.save() esito = volontario_meno_uno.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_meno_uno.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_meno_uno.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) # TODO: creare dati di test per verificare il segmento #esito = volontario_meno_uno.appartiene_al_segmento(segmento_volontari_piu_uno_no_filtri) #self.assertFalse(esito) #esito = volontario_meno_uno.appartiene_al_segmento(segmento_volontari_meno_uno_no_filtri) #self.assertTrue(esito) # Volontario con più di un anno di attività volontario_piu_uno, _, _ = crea_persona_sede_appartenenza() volontario_piu_uno.creazione = data_corrente - datetime.timedelta(days=720) volontario_piu_uno.save() esito = volontario_piu_uno.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_piu_uno.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_piu_uno.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) # TODO: creare dati di test per verificare il segmento #esito = volontario_piu_uno.appartiene_al_segmento(segmento_volontari_meno_uno_no_filtri) #self.assertFalse(esito) #esito = volontario_piu_uno.appartiene_al_segmento(segmento_volontari_piu_uno_no_filtri) #self.assertTrue(esito) # Volontario con meno di 35 anni volontario_meno_35_anni, _, _ = crea_persona_sede_appartenenza() esito = volontario_meno_35_anni.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_meno_35_anni.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_meno_35_anni.appartiene_al_segmento(segmento_volontari_meno_35_anni_no_filtri) self.assertTrue(esito) esito = volontario_meno_35_anni.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) # Volontario con 35 anni o più di età volontario_35_anni_o_piu, _, _ = crea_persona_sede_appartenenza() volontario_35_anni_o_piu.data_nascita = "1960-2-5" volontario_35_anni_o_piu.save() esito = volontario_35_anni_o_piu.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_35_anni_o_piu.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_35_anni_o_piu.appartiene_al_segmento(segmento_volontari_meno_35_anni_no_filtri) self.assertFalse(esito) esito = volontario_35_anni_o_piu.appartiene_al_segmento(segmento_volontari_35_anni_o_piu_no_filtri) self.assertTrue(esito) esito = volontario_35_anni_o_piu.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) # Sostenitore sostenitore, _, appartenenza = crea_persona_sede_appartenenza() appartenenza.membro = Appartenenza.SOSTENITORE appartenenza.save() esito = sostenitore.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = sostenitore.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertFalse(esito) esito = sostenitore.appartiene_al_segmento(segmento_sostenitori_no_filtri) self.assertTrue(esito) esito = sostenitore.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) # Presidente presidente = crea_persona() presidente.save() presidente, sede, _ = crea_persona_sede_appartenenza(presidente) delega_presidente_in_corso = Delega( persona=presidente, tipo=PRESIDENTE, oggetto=sede, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5) ) delega_presidente_in_corso.save() esito = presidente.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = presidente.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = presidente.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertTrue(esito) # Presidente comitato locale presidente_comitato_locale = crea_persona() presidente_comitato_locale, sede, appartenenza = crea_persona_sede_appartenenza(presidente_comitato_locale) delega_presidente_comitato_locale_in_corso = Delega( persona=presidente_comitato_locale, tipo=PRESIDENTE, oggetto=sede, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5) ) delega_presidente_comitato_locale_in_corso.save() esito = presidente_comitato_locale.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = presidente_comitato_locale.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = presidente_comitato_locale.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertTrue(esito) esito = presidente_comitato_locale.appartiene_al_segmento(segmento_presidenti_comitati_locali_no_filtri) self.assertTrue(esito) esito = presidente_comitato_locale.appartiene_al_segmento(segmento_presidenti_comitati_regionali_no_filtri) self.assertFalse(esito) # Presidente comitato regionale presidente_comitato_regionale = crea_persona() presidente_comitato_regionale, sede, appartenenza = crea_persona_sede_appartenenza(presidente_comitato_regionale) sede.estensione = REGIONALE sede.save() delega_presidente_comitato_regionale_in_corso = Delega( persona=presidente_comitato_regionale, tipo=PRESIDENTE, oggetto=sede, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5) ) delega_presidente_comitato_regionale_in_corso.save() esito = presidente_comitato_regionale.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = presidente_comitato_regionale.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = presidente_comitato_regionale.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertTrue(esito) esito = presidente_comitato_regionale.appartiene_al_segmento(segmento_presidenti_comitati_locali_no_filtri) self.assertFalse(esito) esito = presidente_comitato_regionale.appartiene_al_segmento(segmento_presidenti_comitati_regionali_no_filtri) self.assertTrue(esito) # Delegato Ufficio Soci delegato_US = crea_persona() sede_delegato_US = crea_sede() appartenenza = crea_appartenenza(delegato_US, sede_delegato_US) delega_ufficio_soci = Delega( persona=delegato_US, tipo=UFFICIO_SOCI, oggetto=sede_delegato_US, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5) ) delega_ufficio_soci.save() esito = delegato_US.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = delegato_US.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = delegato_US.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) esito = delegato_US.appartiene_al_segmento(segmento_delegati_US_no_filtri) self.assertTrue(esito) esito = delegato_US.appartiene_al_segmento(segmento_delegati_autoparco_no_filtri) self.assertFalse(esito) # Delegati Obiettivo for livello_obiettivo in LIVELLI_DELEGATI: delegato = crea_persona() sede_delegato = crea_sede() appartenenza = crea_appartenenza(delegato, sede_delegato) segmento = NotiziaTestSegmento.objects.create( segmento=livello_obiettivo[1], notiziatest=notizia_1 ) delega_obiettivo = Delega( persona=delegato, tipo=livello_obiettivo[0], oggetto=sede_delegato, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5) ) delega_obiettivo.save() esito = delegato.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = delegato.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = delegato.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) esito = delegato.appartiene_al_segmento(segmento) self.assertTrue(esito) esito = delegato.appartiene_al_segmento(segmento_delegati_autoparco_no_filtri) self.assertFalse(esito) # Referenti attività area for idx, livello_attivita in enumerate(LIVELLI_ATTIVITA): referente = crea_persona() sede_referente = crea_sede() appartenenza = crea_appartenenza(referente, sede_referente) segmento = NotiziaTestSegmento.objects.create( segmento=livello_attivita, notiziatest=notizia_1 ) delega_referente = Delega( persona=referente, tipo=REFERENTE, oggetto=sede_referente, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5) ) delega_referente.save() area, attivita = crea_area_attivita(sede=sede_referente) area.obiettivo = idx + 1 area.save() attivita.aggiungi_delegato(REFERENTE, referente) esito = referente.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = referente.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = referente.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) esito = referente.appartiene_al_segmento(segmento) self.assertTrue(esito) esito = referente.appartiene_al_segmento(segmento_delegati_autoparco_no_filtri) self.assertFalse(esito) # Delegato Autoparco delegato_autoparco = crea_persona() sede_delegato_autoparco = crea_sede() appartenenza = crea_appartenenza(delegato_autoparco, sede_delegato_autoparco) delega_autoparco = Delega( persona=delegato_autoparco, tipo=RESPONSABILE_AUTOPARCO, oggetto=sede_delegato_autoparco, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5) ) delega_autoparco.save() esito = delegato_autoparco.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = delegato_autoparco.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = delegato_autoparco.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) esito = delegato_autoparco.appartiene_al_segmento(segmento_delegati_US_no_filtri) self.assertFalse(esito) esito = delegato_autoparco.appartiene_al_segmento(segmento_delegati_autoparco_no_filtri) self.assertTrue(esito) # Delegato Formazione delegato_formazione = crea_persona() sede_delegato_formazione = crea_sede() appartenenza = crea_appartenenza(delegato_formazione, sede_delegato_formazione) delega_formazione = Delega( persona=delegato_formazione, tipo=RESPONSABILE_FORMAZIONE, oggetto=sede_delegato_formazione, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5) ) delega_formazione.save() esito = delegato_formazione.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = delegato_formazione.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = delegato_formazione.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) esito = delegato_formazione.appartiene_al_segmento(segmento_delegati_US_no_filtri) self.assertFalse(esito) esito = delegato_formazione.appartiene_al_segmento(segmento_delegati_autoparco_no_filtri) self.assertFalse(esito) esito = delegato_formazione.appartiene_al_segmento(segmento_delegati_formazione_no_filtri) self.assertTrue(esito) # Aspirante volontario iscritto ad un corso aspirante_corsista = crea_persona() sede = crea_sede() aspirante = Aspirante(persona=aspirante_corsista) aspirante.save() corso = CorsoBase.objects.create( stato='A', sede=sede, data_inizio=datetime.datetime.now() + datetime.timedelta(days=5), data_esame=datetime.datetime.now() + datetime.timedelta(days=25), progressivo=1, anno=anno_corrente ) partecipazione = PartecipazioneCorsoBase( persona=aspirante_corsista, corso=corso ) partecipazione.ammissione = 'AM' partecipazione.save() esito = aspirante_corsista.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = aspirante_corsista.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertFalse(esito) esito = aspirante_corsista.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) esito = aspirante_corsista.appartiene_al_segmento(segmento_delegati_US_no_filtri) self.assertFalse(esito) esito = aspirante_corsista.appartiene_al_segmento(segmento_delegati_autoparco_no_filtri) self.assertFalse(esito) esito = aspirante_corsista.appartiene_al_segmento(segmento_delegati_formazione_no_filtri) self.assertFalse(esito) esito = aspirante_corsista.appartiene_al_segmento(segmento_aspiranti_corsisti_no_filtri) self.assertTrue(esito) # Volontario con titolo volontario_con_titolo, _, _ = crea_persona_sede_appartenenza() titolo_personale = TitoloPersonale.objects.create(titolo=titolo_patenteCRI, persona=volontario_con_titolo) esito = volontario_con_titolo.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_con_titolo.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_con_titolo.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) esito =volontario_con_titolo.appartiene_al_segmento(segmento_volontari_con_titolo_no_filtri) self.assertTrue(esito) # Volontario con titolo di tipo differente dal filtro volontario_con_titolo_differente, _, _ = crea_persona_sede_appartenenza() titolo_patenteCIVILE = Titolo.objects.create(tipo='PP', nome='Titolo test 2') titolo_personale = TitoloPersonale.objects.create(titolo=titolo_patenteCIVILE, persona=volontario_con_titolo_differente) esito = volontario_con_titolo_differente.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_con_titolo_differente.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_con_titolo_differente.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) esito = volontario_con_titolo_differente.appartiene_al_segmento(segmento_volontari_con_titolo_no_filtri) self.assertFalse(esito)
def test_appartenenza(self): data_corrente = datetime.date.today() anno_corrente = data_corrente.year LIVELLI_DELEGATI = [(DELEGATO_OBIETTIVO_1, 'M'), (DELEGATO_OBIETTIVO_2, 'N'), (DELEGATO_OBIETTIVO_3, 'O'), (DELEGATO_OBIETTIVO_4, 'P'), (DELEGATO_OBIETTIVO_5, 'Q'), (DELEGATO_OBIETTIVO_6, 'R')] LIVELLI_ATTIVITA = ['S', 'T', 'U', 'V', 'W', 'X'] # Notizie di test notizia_1 = NotiziaTest.objects.create( testo="Notizia 1: Testo di prova!") notizia_2 = NotiziaTest.objects.create( testo="Notizia 2: Altro testo di prova!") # SEGMENTI NOTIZIA_1 # Segmento per filtrare tutti gli utenti segmento_tutti_no_filtri = NotiziaTestSegmento.objects.create( segmento='A', notiziatest=notizia_1) # Segmento per filtrare tutti i volontari segmento_volontari_no_filtri = NotiziaTestSegmento.objects.create( segmento='B', notiziatest=notizia_1) # Segmento per filtrare tutti i volontari con meno di un anno di attivita segmento_volontari_meno_uno_no_filtri = NotiziaTestSegmento.objects.create( segmento='C', notiziatest=notizia_1) # Segmento per filtrare tutti i volontari con più di un anno di attivita segmento_volontari_piu_uno_no_filtri = NotiziaTestSegmento.objects.create( segmento='D', notiziatest=notizia_1) # Segmento per filtrare tutti i volontari con meno di 35 anni segmento_volontari_meno_35_anni_no_filtri = NotiziaTestSegmento.objects.create( segmento='E', notiziatest=notizia_1) # Segmento per filtrare tutti i volontari con meno di 35 anni segmento_volontari_35_anni_o_piu_no_filtri = NotiziaTestSegmento.objects.create( segmento='F', notiziatest=notizia_1) # Segmento per filtrare tutti i sostenitori segmento_sostenitori_no_filtri = NotiziaTestSegmento.objects.create( segmento='G', notiziatest=notizia_1) # Segmento per filtrare tutti i sostenitori segmento_aspiranti_corsisti_no_filtri = NotiziaTestSegmento.objects.create( segmento='H', notiziatest=notizia_1) # Segmento per filtrare tutti i presidenti con delega attiva segmento_presidenti_no_filtri = NotiziaTestSegmento.objects.create( segmento='I', notiziatest=notizia_1) # Segmento per filtrare tutti i presidenti di comitati locali con delega attiva segmento_presidenti_comitati_locali_no_filtri = NotiziaTestSegmento.objects.create( segmento='J', notiziatest=notizia_1) # Segmento per filtrare tutti i presidenti di comitati regionali con delega attiva segmento_presidenti_comitati_regionali_no_filtri = NotiziaTestSegmento.objects.create( segmento='K', notiziatest=notizia_1) # Segmento per filtrare tutti i delegati Ufficio Soci con delega attiva segmento_delegati_US_no_filtri = NotiziaTestSegmento.objects.create( segmento='L', notiziatest=notizia_1) # Segmento per filtrare tutti i delegati Autoparco con delega attiva segmento_delegati_autoparco_no_filtri = NotiziaTestSegmento.objects.create( segmento='Y', notiziatest=notizia_1) # Segmento per filtrare tutti i delegati Formazione con delega attiva segmento_delegati_formazione_no_filtri = NotiziaTestSegmento.objects.create( segmento='Z', notiziatest=notizia_1) # Segmento per filtrare tutti i volontari con titolo titolo_patenteCRI = Titolo.objects.create(tipo='PC', nome='Titolo test') segmento_volontari_con_titolo_no_filtri = NotiziaTestSegmento.objects.create( segmento='AA', notiziatest=notizia_1, titolo=titolo_patenteCRI) # Utente gaia generico persona = crea_persona() persona.save() # Test appartenenza esito = persona.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = persona.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertFalse(esito) esito = persona.appartiene_al_segmento(segmento_presidenti_no_filtri) self.assertFalse(esito) # Volontario volontario, _, _ = crea_persona_sede_appartenenza() esito = volontario.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) # Volontario con meno di un anno di attività volontario_meno_uno, _, _ = crea_persona_sede_appartenenza() volontario_meno_uno.creazione = data_corrente - datetime.timedelta( days=5) volontario_meno_uno.save() esito = volontario_meno_uno.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_meno_uno.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_meno_uno.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) # TODO: creare dati di test per verificare il segmento #esito = volontario_meno_uno.appartiene_al_segmento(segmento_volontari_piu_uno_no_filtri) #self.assertFalse(esito) #esito = volontario_meno_uno.appartiene_al_segmento(segmento_volontari_meno_uno_no_filtri) #self.assertTrue(esito) # Volontario con più di un anno di attività volontario_piu_uno, _, _ = crea_persona_sede_appartenenza() volontario_piu_uno.creazione = data_corrente - datetime.timedelta( days=720) volontario_piu_uno.save() esito = volontario_piu_uno.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_piu_uno.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_piu_uno.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) # TODO: creare dati di test per verificare il segmento #esito = volontario_piu_uno.appartiene_al_segmento(segmento_volontari_meno_uno_no_filtri) #self.assertFalse(esito) #esito = volontario_piu_uno.appartiene_al_segmento(segmento_volontari_piu_uno_no_filtri) #self.assertTrue(esito) # Volontario con meno di 35 anni volontario_meno_35_anni, _, _ = crea_persona_sede_appartenenza() esito = volontario_meno_35_anni.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_meno_35_anni.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_meno_35_anni.appartiene_al_segmento( segmento_volontari_meno_35_anni_no_filtri) self.assertTrue(esito) esito = volontario_meno_35_anni.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) # Volontario con 35 anni o più di età volontario_35_anni_o_piu, _, _ = crea_persona_sede_appartenenza() volontario_35_anni_o_piu.data_nascita = "1960-2-5" volontario_35_anni_o_piu.save() esito = volontario_35_anni_o_piu.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_35_anni_o_piu.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_35_anni_o_piu.appartiene_al_segmento( segmento_volontari_meno_35_anni_no_filtri) self.assertFalse(esito) esito = volontario_35_anni_o_piu.appartiene_al_segmento( segmento_volontari_35_anni_o_piu_no_filtri) self.assertTrue(esito) esito = volontario_35_anni_o_piu.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) # Sostenitore sostenitore, _, appartenenza = crea_persona_sede_appartenenza() appartenenza.membro = Appartenenza.SOSTENITORE appartenenza.save() esito = sostenitore.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = sostenitore.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertFalse(esito) esito = sostenitore.appartiene_al_segmento( segmento_sostenitori_no_filtri) self.assertTrue(esito) esito = sostenitore.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) # Presidente presidente = crea_persona() presidente.save() presidente, sede, _ = crea_persona_sede_appartenenza(presidente) delega_presidente_in_corso = Delega( persona=presidente, tipo=PRESIDENTE, oggetto=sede, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5)) delega_presidente_in_corso.save() esito = presidente.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = presidente.appartiene_al_segmento(segmento_volontari_no_filtri) self.assertTrue(esito) esito = presidente.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertTrue(esito) # Presidente comitato locale presidente_comitato_locale = crea_persona() presidente_comitato_locale, sede, appartenenza = crea_persona_sede_appartenenza( presidente_comitato_locale) delega_presidente_comitato_locale_in_corso = Delega( persona=presidente_comitato_locale, tipo=PRESIDENTE, oggetto=sede, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5)) delega_presidente_comitato_locale_in_corso.save() esito = presidente_comitato_locale.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = presidente_comitato_locale.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = presidente_comitato_locale.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertTrue(esito) esito = presidente_comitato_locale.appartiene_al_segmento( segmento_presidenti_comitati_locali_no_filtri) self.assertTrue(esito) esito = presidente_comitato_locale.appartiene_al_segmento( segmento_presidenti_comitati_regionali_no_filtri) self.assertFalse(esito) # Presidente comitato regionale presidente_comitato_regionale = crea_persona() presidente_comitato_regionale, sede, appartenenza = crea_persona_sede_appartenenza( presidente_comitato_regionale) sede.estensione = REGIONALE sede.save() delega_presidente_comitato_regionale_in_corso = Delega( persona=presidente_comitato_regionale, tipo=PRESIDENTE, oggetto=sede, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5)) delega_presidente_comitato_regionale_in_corso.save() esito = presidente_comitato_regionale.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = presidente_comitato_regionale.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = presidente_comitato_regionale.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertTrue(esito) esito = presidente_comitato_regionale.appartiene_al_segmento( segmento_presidenti_comitati_locali_no_filtri) self.assertFalse(esito) esito = presidente_comitato_regionale.appartiene_al_segmento( segmento_presidenti_comitati_regionali_no_filtri) self.assertTrue(esito) # Delegato Ufficio Soci delegato_US = crea_persona() sede_delegato_US = crea_sede() appartenenza = crea_appartenenza(delegato_US, sede_delegato_US) delega_ufficio_soci = Delega( persona=delegato_US, tipo=UFFICIO_SOCI, oggetto=sede_delegato_US, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5)) delega_ufficio_soci.save() esito = delegato_US.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = delegato_US.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = delegato_US.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) esito = delegato_US.appartiene_al_segmento( segmento_delegati_US_no_filtri) self.assertTrue(esito) esito = delegato_US.appartiene_al_segmento( segmento_delegati_autoparco_no_filtri) self.assertFalse(esito) # Delegati Obiettivo for livello_obiettivo in LIVELLI_DELEGATI: delegato = crea_persona() sede_delegato = crea_sede() appartenenza = crea_appartenenza(delegato, sede_delegato) segmento = NotiziaTestSegmento.objects.create( segmento=livello_obiettivo[1], notiziatest=notizia_1) delega_obiettivo = Delega( persona=delegato, tipo=livello_obiettivo[0], oggetto=sede_delegato, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5)) delega_obiettivo.save() esito = delegato.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = delegato.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = delegato.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) esito = delegato.appartiene_al_segmento(segmento) self.assertTrue(esito) esito = delegato.appartiene_al_segmento( segmento_delegati_autoparco_no_filtri) self.assertFalse(esito) # Referenti attività area for idx, livello_attivita in enumerate(LIVELLI_ATTIVITA): referente = crea_persona() sede_referente = crea_sede() appartenenza = crea_appartenenza(referente, sede_referente) segmento = NotiziaTestSegmento.objects.create( segmento=livello_attivita, notiziatest=notizia_1) delega_referente = Delega( persona=referente, tipo=REFERENTE, oggetto=sede_referente, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5)) delega_referente.save() area, attivita = crea_area_attivita(sede=sede_referente) area.obiettivo = idx + 1 area.save() attivita.aggiungi_delegato(REFERENTE, referente) esito = referente.appartiene_al_segmento(segmento_tutti_no_filtri) self.assertTrue(esito) esito = referente.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = referente.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) esito = referente.appartiene_al_segmento(segmento) self.assertTrue(esito) esito = referente.appartiene_al_segmento( segmento_delegati_autoparco_no_filtri) self.assertFalse(esito) # Delegato Autoparco delegato_autoparco = crea_persona() sede_delegato_autoparco = crea_sede() appartenenza = crea_appartenenza(delegato_autoparco, sede_delegato_autoparco) delega_autoparco = Delega( persona=delegato_autoparco, tipo=RESPONSABILE_AUTOPARCO, oggetto=sede_delegato_autoparco, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5)) delega_autoparco.save() esito = delegato_autoparco.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = delegato_autoparco.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = delegato_autoparco.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) esito = delegato_autoparco.appartiene_al_segmento( segmento_delegati_US_no_filtri) self.assertFalse(esito) esito = delegato_autoparco.appartiene_al_segmento( segmento_delegati_autoparco_no_filtri) self.assertTrue(esito) # Delegato Formazione delegato_formazione = crea_persona() sede_delegato_formazione = crea_sede() appartenenza = crea_appartenenza(delegato_formazione, sede_delegato_formazione) delega_formazione = Delega( persona=delegato_formazione, tipo=RESPONSABILE_FORMAZIONE, oggetto=sede_delegato_formazione, inizio=datetime.datetime.now() - datetime.timedelta(days=5), fine=datetime.datetime.now() + datetime.timedelta(days=5)) delega_formazione.save() esito = delegato_formazione.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = delegato_formazione.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = delegato_formazione.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) esito = delegato_formazione.appartiene_al_segmento( segmento_delegati_US_no_filtri) self.assertFalse(esito) esito = delegato_formazione.appartiene_al_segmento( segmento_delegati_autoparco_no_filtri) self.assertFalse(esito) esito = delegato_formazione.appartiene_al_segmento( segmento_delegati_formazione_no_filtri) self.assertTrue(esito) # Aspirante volontario iscritto ad un corso aspirante_corsista = crea_persona() sede = crea_sede() aspirante = Aspirante(persona=aspirante_corsista) aspirante.save() corso = CorsoBase.objects.create( stato='A', sede=sede, data_inizio=datetime.datetime.now() + datetime.timedelta(days=5), data_esame=datetime.datetime.now() + datetime.timedelta(days=25), progressivo=1, anno=anno_corrente) partecipazione = PartecipazioneCorsoBase(persona=aspirante_corsista, corso=corso) partecipazione.ammissione = 'AM' partecipazione.save() esito = aspirante_corsista.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = aspirante_corsista.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertFalse(esito) esito = aspirante_corsista.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) esito = aspirante_corsista.appartiene_al_segmento( segmento_delegati_US_no_filtri) self.assertFalse(esito) esito = aspirante_corsista.appartiene_al_segmento( segmento_delegati_autoparco_no_filtri) self.assertFalse(esito) esito = aspirante_corsista.appartiene_al_segmento( segmento_delegati_formazione_no_filtri) self.assertFalse(esito) esito = aspirante_corsista.appartiene_al_segmento( segmento_aspiranti_corsisti_no_filtri) self.assertTrue(esito) # Volontario con titolo volontario_con_titolo, _, _ = crea_persona_sede_appartenenza() titolo_personale = TitoloPersonale.objects.create( titolo=titolo_patenteCRI, persona=volontario_con_titolo) esito = volontario_con_titolo.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_con_titolo.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_con_titolo.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) esito = volontario_con_titolo.appartiene_al_segmento( segmento_volontari_con_titolo_no_filtri) self.assertTrue(esito) # Volontario con titolo di tipo differente dal filtro volontario_con_titolo_differente, _, _ = crea_persona_sede_appartenenza( ) titolo_patenteCIVILE = Titolo.objects.create(tipo='PP', nome='Titolo test 2') titolo_personale = TitoloPersonale.objects.create( titolo=titolo_patenteCIVILE, persona=volontario_con_titolo_differente) esito = volontario_con_titolo_differente.appartiene_al_segmento( segmento_tutti_no_filtri) self.assertTrue(esito) esito = volontario_con_titolo_differente.appartiene_al_segmento( segmento_volontari_no_filtri) self.assertTrue(esito) esito = volontario_con_titolo_differente.appartiene_al_segmento( segmento_presidenti_no_filtri) self.assertFalse(esito) esito = volontario_con_titolo_differente.appartiene_al_segmento( segmento_volontari_con_titolo_no_filtri) self.assertFalse(esito)
def test_richiesta_partecipazione(self): referente = crea_persona() volontario, sede, appartenenza = crea_persona_sede_appartenenza() area, attivita = crea_area_attivita(sede=sede) inizio = timezone.now() + timedelta(hours=12) fine = inizio + timedelta(hours=2) turno = crea_turno(attivita, inizio=inizio, fine=fine) attivita.aggiungi_delegato(REFERENTE, referente) # Crea le sessioni sessione_referente = self.sessione_utente(persona=referente) sessione_volontario = self.sessione_utente(persona=volontario) # Volontario: Apri la pagina dell'attivita' sessione_volontario.visit("%s%s" % (self.live_server_url, attivita.url)) # Volontario: Apri pagina turni sessione_volontario.click_link_by_partial_text("Turni") # Volontario: Chiedi di partecipare sessione_volontario.click_link_by_partial_text("Partecipa") self.assertTrue(sessione_volontario.is_text_present("Richiesta inoltrata"), msg="La richiesta e stata inoltrata") # Volontario: Apri la pagina dell'attivita', pagina turni sessione_volontario.visit("%s%s" % (self.live_server_url, attivita.url)) sessione_volontario.click_link_by_partial_text("Turni") self.assertTrue(sessione_volontario.is_text_present("Hai chiesto di partecipare"), msg="Utente ha feedback sull'aver chiesto di partecipare") # Volontario: Vai allo storico sessione_volontario.click_link_by_partial_text("Miei turni") self.assertTrue(sessione_volontario.is_text_present("In attesa"), msg="Storico mostra stato in attesa della richiesta") # Referente: Trova la richiesta sessione_referente.click_link_by_partial_text("Richieste") self.assertTrue(sessione_referente.is_text_present(volontario.nome_completo), msg="La richiesta mostra il nome del volontario") self.assertTrue(sessione_referente.is_text_present(turno.nome), msg="La richiesta mostra il nome del turno") # Referente: Trova la richiesta sessione_referente.click_link_by_partial_text("Conferma") # Volontario: Vai allo storico sessione_volontario.click_link_by_partial_text("Miei turni") self.assertTrue(sessione_volontario.is_text_present("Approvata"), msg="La richiesta risulta ora approvata") # Volontario: Vai al turno sessione_volontario.click_link_by_partial_text(turno.nome) self.assertTrue(sessione_volontario.is_text_present("Partecipazione confermata"), msg="La partecipazione risulta nel turno")
def test_poteri_temporanei(self): presidente = crea_persona() persona, sede, app = crea_persona_sede_appartenenza(presidente=presidente) ora = timezone.now() area, attivita = crea_area_attivita(sede) self.assertFalse( persona.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona non ha di persé i permessi di gestione della CO" ) self.assertTrue( presidente.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).first() == sede, "Il presidente ha i permessi di gestione della CO", ) domani_inizio = ora + timedelta(hours=24) domani_fine = ora + timedelta(hours=25) t1 = crea_turno(attivita, inizio=domani_inizio, fine=domani_fine) partecipazione = crea_partecipazione(persona, t1) self.assertFalse( persona.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona non ha ancora i permessi di gestione della CO" ) attivita.centrale_operativa = Attivita.CO_AUTO attivita.save() self.assertFalse( persona.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona non ha ancora i permessi di gestione della CO" ) t1.inizio = ora t1.fine = ora + timedelta(hours=1) t1.save() self.assertTrue( persona.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).first() == sede, "La persona può ora gestire la CO per la Sede" ) self.assertTrue( persona.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).count() == 1, "La persona può ora gestire la CO per la Sede solamente (non sotto unità)" ) # Provo che il margine funzioni margine = Attivita.MINUTI_CENTRALE_OPERATIVA - 1 t1.inizio = ora + timedelta(minutes=margine) t1.fine = ora + timedelta(minutes=2*margine) t1.save() self.assertTrue( persona.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona può gestire la CO con un margine di %d minuti in anticipo" % margine, ) t1.inizio = ora - timedelta(hours=24) t1.fine = ora - timedelta(minutes=margine) t1.save() self.assertTrue( persona.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona può gestire la CO con un margine di %d minuti dopo la fine" % margine, ) t1.inizio = ora - timedelta(hours=24) t1.fine = ora - timedelta(minutes=margine+2) t1.save() self.assertFalse( persona.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona non puo gestire la CO se è troppo tardi", ) # Se la partecipazione viene richiesta... partecipazione.richiedi() self.assertFalse( persona.oggetti_permesso(GESTIONE_CENTRALE_OPERATIVA_SEDE).exists(), "La persona non può gestire la CO perché la richiesta non è stata processata" )
def test_centrale_operativa_permessi_attivita(self): delegato = crea_persona() volontario, sede, appartenenza = crea_persona_sede_appartenenza() sede.aggiungi_delegato(DELEGATO_CO, delegato) area, attivita = crea_area_attivita(sede, centrale_operativa=None) turno = crea_turno(attivita) crea_partecipazione(volontario, turno) sessione_delegato = self.sessione_utente(persona=delegato) sessione_volontario = self.sessione_utente(persona=volontario) self.assertFalse( sessione_volontario.is_text_present("CO"), "La centrale operativa non e' disponibile al volontario") self.assertTrue(sessione_delegato.is_text_present("CO"), "La centrale operativa e' disponibile al delegato") # In modalita' automatica, il volontario e' abilitato immediatamente attivita.centrale_operativa = Attivita.CO_AUTO attivita.save() sessione_volontario.visit("%s/utente/" % self.live_server_url) self.assertTrue( sessione_volontario.is_text_present("CO"), "La centrale operativa e' ora disponibile al volontario") sessione_volontario.click_link_by_partial_text("CO") sessione_volontario.click_link_by_partial_text("Turni") sessione_volontario.click_link_by_partial_text("Monta") self.assertTrue(sessione_volontario.is_text_present(attivita.nome), "Il volontario vede propria attivita in CO") # In modalita' manuale... attivita.centrale_operativa = Attivita.CO_MANUALE attivita.save() sessione_volontario.click_link_by_partial_text("Smonta") self.assertTrue(sessione_volontario.is_text_present("Accesso Negato"), "Il volontario non può più montare o smontare") sessione_delegato.click_link_by_partial_text("CO") sessione_delegato.click_link_by_partial_text("Poteri") self.assertTrue(sessione_delegato.is_text_present(volontario.nome), "Il delegato vede la persona in elenco") sessione_delegato.click_link_by_partial_text("Assegna") self.assertTrue(sessione_delegato.is_text_present("Ritira"), "Il delegato ha correttamente abilitato i poteri") sessione_volontario.click_link_by_partial_text("Torna") sessione_volontario.click_link_by_partial_text("CO") sessione_volontario.click_link_by_partial_text("Turni") sessione_volontario.click_link_by_partial_text("Smonta") self.assertTrue(sessione_volontario.is_text_present(volontario.nome), "Il volontario ha il suo nome in elenco")