示例#1
0
文件: tests.py 项目: dan-it/jorvik
    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)
示例#2
0
    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)
示例#3
0
    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"
            )
示例#4
0
    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)
示例#5
0
    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})
示例#6
0
    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 &egrave; 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())
示例#7
0
文件: tests.py 项目: dan-it/jorvik
    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)
示例#8
0
    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})
示例#9
0
文件: tests.py 项目: dan-it/jorvik
    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 &egrave; 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())
示例#10
0
    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")
示例#11
0
    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"
        )
示例#12
0
    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"
        )
示例#13
0
    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)
示例#14
0
    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)
示例#15
0
文件: tests.py 项目: dan-it/jorvik
    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")
示例#16
0
    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"
        )
示例#17
0
    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")