Exemplo n.º 1
0
    def test_corso_pubblico(self):
        """
        Un corso è visibile fino a FORMAZIONE_FINESTRA_CORSI_INIZIATI giorni dal suo inizio
        """
        presidente = crea_persona()
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        oggi = poco_fa()

        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )
        self.assertTrue(CorsoBase.pubblici().exists())
        self.assertFalse(corso.iniziato)
        self.assertFalse(corso.troppo_tardi_per_iscriverti)
        self.assertTrue(corso.possibile_aggiungere_iscritti)
        corso.data_inizio = oggi - timedelta(days=(settings.FORMAZIONE_FINESTRA_CORSI_INIZIATI - 1))
        corso.save()
        self.assertTrue(corso.iniziato)
        self.assertFalse(corso.troppo_tardi_per_iscriverti)
        self.assertTrue(corso.possibile_aggiungere_iscritti)
        self.assertTrue(CorsoBase.pubblici().exists())

        corso.data_inizio = oggi - timedelta(days=settings.FORMAZIONE_FINESTRA_CORSI_INIZIATI)
        corso.save()
        self.assertTrue(corso.iniziato)
        self.assertTrue(corso.troppo_tardi_per_iscriverti)
        self.assertTrue(corso.possibile_aggiungere_iscritti)
        self.assertFalse(CorsoBase.pubblici().exists())
Exemplo n.º 2
0
 def test_dettaglio_articoli_privati(self):
     articolo = Articolo.objects.create(
         titolo='Titolo 1981',
         corpo='Testo random',
         estratto='qualcosa',
         data_inizio_pubblicazione='1981-12-10',
         stato=Articolo.PUBBLICATO
     )
     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()
     sessione_persona = self.sessione_utente(persona=presidente)
     sessione_persona.visit("%s%s" % (
         self.live_server_url, reverse('dettaglio_articolo', kwargs={
             'articolo_slug': articolo.slug
         })
     ))
     self.assertTrue(sessione_persona.is_text_present(articolo.titolo))
Exemplo n.º 3
0
    def test_filtro_con_sede(self):
        volontario_con_sede, sede, appartenenza = crea_persona_sede_appartenenza()
        appartenenza.inizio = now()
        appartenenza.save()

        altra_sede = crea_sede()

        segmento_0 = self._crea_segmento(self.file_1, 'D')
        segmento_1 = self._crea_segmento(self.file_1, 'B', sede=altra_sede)
        segmento_2 = self._crea_segmento(self.file_2, 'B', sede=sede)

        qs = DocumentoSegmento.objects.all()

        documenti = qs.filtra_per_segmenti(volontario_con_sede)
        self.assertEqual(documenti.count(), 1)
        self.assertEqual(set(documenti), set(DocumentoSegmento.objects.filter(pk=segmento_2.pk)))
        oggetti = documenti.oggetti_collegati()
        self.assertEqual(oggetti.count(), 1)
        self.assertEqual(set(oggetti), set(Documento.objects.filter(pk=self.file_2.pk)))

        segmento_3 = self._crea_segmento(self.file_1, 'B')
        documenti = qs.filtra_per_segmenti(volontario_con_sede)
        self.assertEqual(documenti.count(), 2)
        self.assertEqual(set(documenti), set(DocumentoSegmento.objects.filter(pk__in=(segmento_2.pk, segmento_3.pk))))
        oggetti = documenti.oggetti_collegati()
        self.assertEqual(oggetti.count(), 2)
        self.assertEqual(set(oggetti), set(Documento.objects.filter(pk__in=(self.file_1.pk, self.file_2.pk))))
Exemplo n.º 4
0
 def test_dettaglio_articoli_protected(self):
     articolo = Articolo.objects.create(
         titolo='Titolo 1981',
         corpo='Testo random',
         estratto='qualcosa',
         data_inizio_pubblicazione='1981-12-10',
         stato=Articolo.PUBBLICATO
     )
     segmento_presidenti_no_filtri = ArticoloSegmento.objects.create(
         segmento='I',
         articolo=articolo,
     )
     normale = crea_persona()
     normale.save()
     normale, sede, _ = crea_persona_sede_appartenenza(normale)
     delega_us = Delega(
         persona=normale,
         tipo=UFFICIO_SOCI,
         oggetto=sede,
         inizio=datetime.datetime.now() - datetime.timedelta(days=5),
         fine=datetime.datetime.now() + datetime.timedelta(days=5)
     )
     delega_us.save()
     sessione_persona = self.sessione_utente(persona=normale)
     sessione_persona.visit("%s%s" % (
         self.live_server_url, reverse('dettaglio_articolo', kwargs={
             'articolo_slug': articolo.slug
         })
     ))
     self.assertTrue(sessione_persona.is_text_present('Accesso Negato, siamo spiacenti'))
Exemplo n.º 5
0
    def test_filtro_con_titolo(self):
        volontario_con_titolo, sede, appartenenza = crea_persona_sede_appartenenza(
        )
        appartenenza.inizio = now()
        appartenenza.save()
        titolo_personale = TitoloPersonale.objects.create(
            titolo=self.titolo_patenteCRI, persona=volontario_con_titolo)

        segmento_0 = self._crea_segmento(self.file_1, 'D')
        segmento_1 = self._crea_segmento(self.file_1,
                                         'AA',
                                         titolo=self.titolo_altro)
        segmento_2 = self._crea_segmento(self.file_2,
                                         'AA',
                                         titolo=self.titolo_patenteCRI)
        qs = DocumentoSegmento.objects.all()

        documenti = qs.filtra_per_segmenti(volontario_con_titolo)
        self.assertEqual(documenti.count(), 1)
        self.assertEqual(
            set(documenti),
            set(DocumentoSegmento.objects.filter(pk=segmento_2.pk)))
        oggetti = documenti.oggetti_collegati()
        self.assertEqual(oggetti.count(), 1)
        self.assertEqual(set(oggetti),
                         set(Documento.objects.filter(pk=self.file_2.pk)))
Exemplo n.º 6
0
    def test_filtro_semplice(self):
        segmento_1 = self._crea_segmento(self.file_1, 'A')
        segmento_2 = self._crea_segmento(self.file_2, 'D')
        volontario, sede, appartenenza = crea_persona_sede_appartenenza()
        appartenenza.inizio = now()
        appartenenza.save()
        qs = DocumentoSegmento.objects.all()

        documenti = qs.filtra_per_segmenti(volontario)
        self.assertEqual(documenti.count(), 1)
        self.assertEqual(
            set(documenti),
            set(DocumentoSegmento.objects.filter(pk=segmento_1.pk)))
        oggetti = documenti.oggetti_collegati()
        self.assertEqual(oggetti.count(), 1)
        self.assertEqual(set(oggetti),
                         set(Documento.objects.filter(pk=self.file_1.pk)))

        segmento_3 = self._crea_segmento(self.file_2, 'C')

        documenti = qs.filtra_per_segmenti(volontario)
        self.assertEqual(documenti.count(), 2)
        self.assertEqual(
            set(documenti),
            set(
                DocumentoSegmento.objects.filter(pk__in=(segmento_1.pk,
                                                         segmento_3.pk))))
        oggetti = documenti.oggetti_collegati()
        self.assertEqual(oggetti.count(), 2)
        self.assertEqual(
            set(oggetti),
            set(
                Documento.objects.filter(pk__in=(self.file_1.pk,
                                                 self.file_2.pk))))
Exemplo n.º 7
0
    def test_corso_pubblico(self):
        """
        Un corso è visibile fino a FORMAZIONE_FINESTRA_CORSI_INIZIATI giorni dal suo inizio
        """
        presidente = crea_persona()
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        oggi = poco_fa()

        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )
        self.assertTrue(CorsoBase.pubblici().exists())
        self.assertFalse(corso.iniziato)
        self.assertFalse(corso.troppo_tardi_per_iscriverti)
        self.assertTrue(corso.possibile_aggiungere_iscritti)
        corso.data_inizio = oggi - timedelta(days=(settings.FORMAZIONE_FINESTRA_CORSI_INIZIATI - 1))
        corso.save()
        self.assertTrue(corso.iniziato)
        self.assertFalse(corso.troppo_tardi_per_iscriverti)
        self.assertTrue(corso.possibile_aggiungere_iscritti)
        self.assertTrue(CorsoBase.pubblici().exists())

        corso.data_inizio = oggi - timedelta(days=settings.FORMAZIONE_FINESTRA_CORSI_INIZIATI)
        corso.save()
        self.assertTrue(corso.iniziato)
        self.assertTrue(corso.troppo_tardi_per_iscriverti)
        self.assertTrue(corso.possibile_aggiungere_iscritti)
        self.assertFalse(CorsoBase.pubblici().exists())
Exemplo n.º 8
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"
            )
Exemplo n.º 9
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)
Exemplo n.º 10
0
    def test_crea_area(self):

        presidente = crea_persona()
        persona, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)
        if not presidente.volontario:
            crea_appartenenza(presidente, sede)

        sessione_presidente = self.sessione_utente(persona=presidente)
        #sessione_persona = self.sessione_utente(persona=persona)

        # Crea area di intervento
        sessione_presidente.click_link_by_partial_href("/attivita/")
        sessione_presidente.click_link_by_partial_text("Aree di intervento")
        sessione_presidente.click_link_by_partial_text(sede.nome)
        sessione_presidente.fill('nome', "Area 42")
        sessione_presidente.fill('obiettivo', '6')
        sessione_presidente.find_by_xpath("//button[@type='submit']").first.click()

        # Nomina la persona come responsabile
        self.seleziona_delegato(sessione_presidente, persona)

        self.assertTrue(
            sessione_presidente.is_text_present("Area 42"),
            "La nuova area è stata creata con successo",
        )

        self.assertTrue(
            sessione_presidente.is_text_present(persona.nome_completo),
            "La nuova area ha il responsabile assegnato",
        )

        self.assertTrue(
            sessione_presidente.is_text_present("0 attività"),
            "La nuova area non ha alcuna attività",
        )
Exemplo n.º 11
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)
Exemplo n.º 12
0
 def test_dettaglio_articoli_privati(self):
     articolo = Articolo.objects.create(
         titolo='Titolo 1981',
         corpo='Testo random',
         estratto='qualcosa',
         data_inizio_pubblicazione='1981-12-10',
         stato=Articolo.PUBBLICATO
     )
     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()
     sessione_persona = self.sessione_utente(persona=presidente)
     sessione_persona.visit("%s%s" % (
         self.live_server_url, reverse('articoli:dettaglio', kwargs={
             'articolo_slug': articolo.slug
         })
     ))
     self.assertTrue(sessione_persona.is_text_present(articolo.titolo))
Exemplo n.º 13
0
 def test_dettaglio_articoli_protected(self):
     articolo = Articolo.objects.create(
         titolo='Titolo 1981',
         corpo='Testo random',
         estratto='qualcosa',
         data_inizio_pubblicazione='1981-12-10',
         stato=Articolo.PUBBLICATO)
     segmento_presidenti_no_filtri = ArticoloSegmento.objects.create(
         segmento='I',
         articolo=articolo,
     )
     normale = crea_persona()
     normale.save()
     normale, sede, _ = crea_persona_sede_appartenenza(normale)
     delega_us = Delega(
         persona=normale,
         tipo=UFFICIO_SOCI,
         oggetto=sede,
         inizio=datetime.datetime.now() - datetime.timedelta(days=5),
         fine=datetime.datetime.now() + datetime.timedelta(days=5))
     delega_us.save()
     sessione_persona = self.sessione_utente(persona=normale)
     sessione_persona.visit(
         "%s%s" % (self.live_server_url,
                   reverse('dettaglio_articolo',
                           kwargs={'articolo_slug': articolo.slug})))
     self.assertTrue(
         sessione_persona.is_text_present(
             'Accesso Negato, siamo spiacenti'))
Exemplo n.º 14
0
    def test_registrazione_quota_socio_senza_fine_chiuso(self):

        # Crea oggetti e nomina il delegato US
        delegato = crea_persona()
        utente = crea_utenza(delegato, email="*****@*****.**", password="******")
        volontario, sede, appartenenza = crea_persona_sede_appartenenza()
        sede.aggiungi_delegato(UFFICIO_SOCI, delegato)

        oggi = poco_fa()
        inizio_anno = oggi.replace(month=1, day=1)

        Tesseramento.objects.create(
            stato=Tesseramento.CHIUSO, inizio=inizio_anno,
            anno=inizio_anno.year, quota_attivo=8, quota_ordinario=8,
            quota_benemerito=8, quota_aspirante=8, quota_sostenitore=8
        )

        sede.telefono = '+3902020202'
        sede.email = '*****@*****.**'
        sede.codice_fiscale = '01234567891'
        sede.partita_iva = '01234567891'
        sede.locazione = crea_locazione()
        sede.save()

        data = {
            'volontario': volontario.pk,
            'importo': 8,
            'data_versamento': (oggi - datetime.timedelta(days=60)).strftime('%d/%m/%Y')
        }
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.post('{}{}'.format(self.live_server_url, reverse('us_quote_nuova')), data=data)
        # tesseramento chiuso, quota non registrata
        self.assertEqual(response.status_code, 200)
        self.assertContains(response, 'tesseramento {} è chiuso'.format(oggi.year))
Exemplo n.º 15
0
 def setUp(self):
     persona, sede, appartenenza = crea_persona_sede_appartenenza()
     self.persona = persona
     self.persona.email_contatto = email_fittizzia()
     self.persona.save()
     self.utenza = crea_utenza(persona=self.persona,
                               email=email_fittizzia())
Exemplo n.º 16
0
    def test_recupero_password_persona_non_utente(self, mocked):

        presidente = crea_persona()
        persona, sede, app = crea_persona_sede_appartenenza(presidente=presidente)
        sessione = self.sessione_anonimo()

        # test con codice fiscale non associato ad utenza per persona associata a sede
        sessione.visit("%s%s" % (self.live_server_url, reverse('recupera_password')))

        sessione.fill('codice_fiscale', persona.codice_fiscale)
        sessione.fill('email', '*****@*****.**')
        sessione.find_by_css('.btn.btn-block.btn-primary').first.click()

        self.assertTrue(sessione.is_text_present('Nessuna utenza'))
        self.assertTrue(sessione.is_text_present('Chiedi al tuo Ufficio Soci'))
        self.assertTrue(sessione.is_text_present('{} (Presidente)'.format(presidente.nome_completo)))

        # test con codice fiscale non associato ad utenza per persona non associata a sede
        persona_senza_sede = crea_persona()
        sessione.visit("%s%s" % (self.live_server_url, reverse('recupera_password')))

        sessione.fill('codice_fiscale', persona_senza_sede.codice_fiscale)
        sessione.fill('email', '*****@*****.**')
        sessione.find_by_css('.btn.btn-block.btn-primary').first.click()

        sessione.screenshot()

        self.assertTrue(sessione.is_text_present('Nessuna utenza'))
        self.assertTrue(sessione.is_text_present('Supporto di Gaia'))
Exemplo n.º 17
0
    def test_apertura_elenchi(self):

        # Crea oggetti e nomina il delegato US
        delegato = crea_persona()
        volontario, sede, appartenenza = crea_persona_sede_appartenenza()
        sede.aggiungi_delegato(UFFICIO_SOCI, delegato)

        # Inizia la sessione
        sessione = self.sessione_utente(persona=delegato)

        elenchi = ['volontari', 'giovani', 'estesi', 'ivcm', 'riserva',
                   'soci', 'sostenitori', 'dipendenti', 'dimessi',
                   'trasferiti', 'elettorato']

        # Vai al pannello soci
        sessione.click_link_by_partial_text("Soci")

        for elenco in elenchi:  # Per ogni elenco

            sessione.visit("%s/us/elenchi/%s/" % (self.live_server_url, elenco))

            # Genera con impostazioni di default (clicca due volte su "Genera")
            sessione.find_by_xpath("//button[@type='submit']").first.click()

            with sessione.get_iframe(0) as iframe:  # Dentro la finestra

                if iframe.is_text_present("Genera elenco"):
                    iframe.find_by_xpath("//button[@type='submit']").first.click()

                self.assertTrue(
                    iframe.is_text_present("Invia messaggio", wait_time=5),
                    msg="Elenco %s apribile da web" % elenco,
                )
Exemplo n.º 18
0
    def test_reclama_ordinario(self):

        # Crea oggetti e nomina i delegati US regionali e Locali
        us_regionale = crea_persona()
        us_locale = crea_persona()

        ordinario, regionale, appartenenza = crea_persona_sede_appartenenza(presidente=us_regionale)
        appartenenza.membro = Appartenenza.ORDINARIO
        appartenenza.save()
        regionale.estensione = REGIONALE
        regionale.save()

        locale = crea_sede(presidente=us_locale, genitore=regionale)

        sessione_regionale = self.sessione_utente(persona=us_regionale)
        sessione_locale = self.sessione_utente(persona=us_locale)

        # Prima di tutto, assicurati che il socio ordinario risulti correttamente
        # nell'elenco del regionale.

        sessione_regionale.click_link_by_partial_text("Soci")
        sessione_regionale.click_link_by_partial_text("Ordinari")

        self.assertTrue(self.presente_in_elenco(sessione_regionale, persona=ordinario),
                        msg="Il socio ordinario è in elenco al regionale")

        # Poi, vai alla procedura di reclamo per il locale e completa.
        sessione_locale.click_link_by_partial_text("Soci")
        sessione_locale.click_link_by_partial_text("Reclama Persona")
        sessione_locale.fill('codice_fiscale', ordinario.codice_fiscale)
        sessione_locale.find_by_xpath("//button[@type='submit']").first.click()

        # Completa dati di inizio appartenenza - data nel passato!
        sessione_locale.fill('app-inizio', "1/1/1910")
        sessione_locale.select('app-membro', Appartenenza.SOSTENITORE)
        sessione_locale.select('quota-registra_quota', ModuloReclamaQuota.NO)
        sessione_locale.find_by_xpath("//button[@type='submit']").first.click()

        self.assertTrue(sessione_locale.is_text_present("1. Appartenenza al Comitato"),
                        msg="Non e possibile reclamare ordinario nel passato")

        # Compila con la data di oggi.
        sessione_locale.fill('app-inizio', timezone.now().strftime("%d/%m/%Y"))
        sessione_locale.find_by_xpath("//button[@type='submit']").first.click()

        # Controlla elenco dei sostenitori.
        sessione_locale.visit("%s/utente/" % self.live_server_url)
        sessione_locale.click_link_by_partial_text("Soci")
        sessione_locale.click_link_by_partial_text("Sostenitori")
        self.assertTrue(
            self.presente_in_elenco(sessione_locale, persona=ordinario),
            msg="L'ex ordinario è stato reclamato con successo")

        # Controlla la rimozione corretta dagli ordinari.
        sessione_regionale.click_link_by_partial_text("Ordinari")
        self.assertFalse(
            self.presente_in_elenco(sessione_regionale, persona=ordinario),
            msg="L'ex ordinario non è più in elenco al regionale"
        )
Exemplo n.º 19
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)
Exemplo n.º 20
0
 def test_lista_articoli_vuota(self):
     persona = crea_persona()
     persona, sede, app = crea_persona_sede_appartenenza()
     sessione_persona = self.sessione_utente(persona=persona)
     sessione_persona.visit(
         "%s%s" % (self.live_server_url, reverse('lista_articoli')))
     self.assertTrue(
         sessione_persona.is_text_present(
             'Non è stato trovato alcun articolo'))
Exemplo n.º 21
0
    def test_invito_aspirante(self):
        presidente = crea_persona()
        presidente.email_contatto = email_fittizzia()
        presidente.save()
        crea_utenza(presidente, presidente.email_contatto)
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        aspirante1.save()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()

        oggi = poco_fa()
        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )
        self.assertFalse(aspirante1.autorizzazioni_in_attesa().exists())

        p = InvitoCorsoBase(persona=aspirante1, corso=corso, invitante=presidente)
        p.save()
        p.richiedi()
        self.assertEqual(len(mail.outbox), 1)
        email = mail.outbox[0]
        self.assertTrue(email.subject.find("Richiesta di iscrizione a Corso Base da {}".format(presidente.nome_completo)) > -1)
        self.assertEqual(len(email.to), 1)
        self.assertIn(aspirante1.email_contatto, email.to)

        self.assertEqual(aspirante1.autorizzazioni_in_attesa().count(), 1)
        aspirante1.autorizzazioni_in_attesa()[0].concedi()
        self.assertEqual(len(mail.outbox), 3)
        email_aspirante = False
        email_presidente = False
        for email in mail.outbox[1:]:
            if aspirante1.email_contatto in email.to:
                email_aspirante = True
                self.assertTrue(email.subject.find('Iscrizione a Corso Base') > -1)
            elif presidente.email_contatto in email.to:
                email_presidente = True
                self.assertTrue(email.subject.find('Richiesta di iscrizione a Corso Base APPROVATA') > -1)
            else:
                raise AssertionError('Email a destinatario sconosciuto {}'.format(email.to))
        self.assertTrue(email_aspirante)
        self.assertTrue(email_presidente)

        self.assertFalse(aspirante1.autorizzazioni_in_attesa().exists())
        self.assertFalse(corso.inviti.exists())
        self.assertEqual(corso.partecipazioni.count(), 1)
Exemplo n.º 22
0
    def test_lista_documenti(self):
        extra_headers = {}
        self.assertEqual(Documento.objects.count(), 0)
        folder_radice = Folder.objects.create(name='radice')
        folder_figlia = Folder.objects.create(name='sottocartella',
                                              parent=folder_radice)
        file_obj = django.core.files.File(open(self.doc_filename, 'rb'))
        url = reverse('admin:filer-ajax_upload',
                      kwargs={'folder_id': folder_figlia.pk})
        post_data = {
            'Filename': self.doc_name,
            'Filedata': file_obj,
            'jsessionid': self.client.session.session_key
        }
        self.client.post(url, post_data, **extra_headers)
        self.assertEqual(Documento.objects.count(), 1)
        uploaded_file = Documento.objects.all()[0]
        self.assertEqual(uploaded_file.original_filename, self.doc_name)

        url = reverse('admin:gestione_file_documento_add'
                      ) + '?parent_id={}'.format(folder_radice.pk)
        post_data = {
            'url_documento': 'http://www.example.com',
            'segmenti-TOTAL_FORMS': 0,
            'segmenti-INITIAL_FORMS': 0,
            'segmenti-MIN_NUM_FORMS': 0,
            'segmenti-MAX_NUM_FORMS': 0,
            'data_pubblicazione_0': '2016-01-01',
            'data_pubblicazione_1': '22:22:22',
        }
        response = self.client.post(url, post_data, **extra_headers)
        self.assertEqual(Documento.objects.count(), 2)
        uploaded_file = Documento.objects.all()[1]
        self.assertEqual(uploaded_file.folder, folder_radice)
        self.assertEqual(uploaded_file.original_filename, 'www.example.com')

        persona = crea_persona()
        persona, sede, app = crea_persona_sede_appartenenza()
        sessione_persona = self.sessione_utente(persona=persona)
        sessione_persona.visit(
            "%s%s" %
            (self.live_server_url, reverse('documenti:lista_documenti')))
        self.assertTrue(sessione_persona.is_text_present('Nome del documento'))
        self.assertTrue(sessione_persona.is_text_present('Pubblicato il'))
        self.assertTrue(sessione_persona.is_text_present('Peso'))
        self.assertTrue(sessione_persona.is_text_present('Accessi'))
        self.assertEqual(
            1, len(sessione_persona.find_by_tag('tbody').find_by_tag('tr')))
        sessione_persona.find_link_by_text('radice').first.click()
        self.assertTrue(sessione_persona.is_text_present('www.example.com'))
        sessione_persona.find_link_by_text('sottocartella').first.click()
        self.assertTrue(sessione_persona.is_text_present(self.doc_name))
        sessione_persona.fill('q', 'example')
        sessione_persona.find_by_xpath(
            '//button[@type="submit"]').first.click()
        self.assertTrue(sessione_persona.is_text_present('www.example.com'))
Exemplo n.º 23
0
    def test_registrazione_quota_socio_inizio_anno(self):

        # Crea oggetti e nomina il delegato US
        delegato = crea_persona()
        utente = crea_utenza(delegato, email="*****@*****.**", password="******")
        volontario, sede, appartenenza = crea_persona_sede_appartenenza()
        sede.aggiungi_delegato(UFFICIO_SOCI, delegato)

        oggi = poco_fa()
        inizio_anno = oggi.replace(month=1, day=1)
        fine_soci = inizio_anno.replace(month=3) - datetime.timedelta(days=1)
        post_fine_soci = fine_soci + datetime.timedelta(days=2)

        Tesseramento.objects.create(
            stato=Tesseramento.APERTO, inizio=inizio_anno, fine_soci=fine_soci,
            anno=inizio_anno.year, quota_attivo=8, quota_ordinario=8, quota_benemerito=8,
            quota_aspirante=8, quota_sostenitore=8
        )

        data = {
            'volontario': volontario.pk,
            'importo': 8,
            'data_versamento': post_fine_soci.strftime('%d/%m/%Y')
        }
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.post('{}{}'.format(self.live_server_url, reverse('us_quote_nuova')), data=data)
        self.assertEqual(response.status_code, 200)
        self.assertContains(response, 'non può essere nel futuro')

        data = {
            'volontario': volontario.pk,
            'importo': 8,
            'data_versamento': oggi.strftime('%d/%m/%Y')
        }
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.post('{}{}'.format(self.live_server_url, reverse('us_quote_nuova')), data=data)
        self.assertEqual(response.status_code, 200)
        self.assertContains(response, 'Necessario impostare indirizzo del Comitato')

        sede.telefono = '+3902020202'
        sede.email = '*****@*****.**'
        sede.codice_fiscale = '01234567891'
        sede.partita_iva = '01234567891'
        sede.locazione = crea_locazione()
        sede.save()

        data = {
            'volontario': volontario.pk,
            'importo': 8,
            'data_versamento': oggi.strftime('%d/%m/%Y')
        }
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.post('{}{}'.format(self.live_server_url, reverse('us_quote_nuova')), data=data)
        # quota registrata con successo
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['location'].find('?appena_registrata='))
Exemplo n.º 24
0
    def test_invito_aspirante(self):
        presidente = crea_persona()
        presidente.email_contatto = email_fittizzia()
        presidente.save()
        crea_utenza(presidente, presidente.email_contatto)
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        aspirante1.save()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()

        oggi = poco_fa()
        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )
        self.assertFalse(aspirante1.autorizzazioni_in_attesa().exists())

        p = InvitoCorsoBase(persona=aspirante1, corso=corso, invitante=presidente)
        p.save()
        p.richiedi()
        self.assertEqual(len(mail.outbox), 1)
        email = mail.outbox[0]
        self.assertTrue(email.subject.find("Richiesta di iscrizione a Corso Base da {}".format(presidente.nome_completo)) > -1)
        self.assertEqual(len(email.to), 1)
        self.assertIn(aspirante1.email_contatto, email.to)

        self.assertEqual(aspirante1.autorizzazioni_in_attesa().count(), 1)
        aspirante1.autorizzazioni_in_attesa()[0].concedi()
        self.assertEqual(len(mail.outbox), 3)
        email_aspirante = False
        email_presidente = False
        for email in mail.outbox[1:]:
            if aspirante1.email_contatto in email.to:
                email_aspirante = True
                self.assertTrue(email.subject.find('Iscrizione a Corso Base') > -1)
            elif presidente.email_contatto in email.to:
                email_presidente = True
                self.assertTrue(email.subject.find('Richiesta di iscrizione a Corso Base APPROVATA') > -1)
            else:
                raise AssertionError('Email a destinatario sconosciuto {}'.format(email.to))
        self.assertTrue(email_aspirante)
        self.assertTrue(email_presidente)

        self.assertFalse(aspirante1.autorizzazioni_in_attesa().exists())
        self.assertFalse(corso.inviti.exists())
        self.assertEqual(corso.partecipazioni.count(), 1)
Exemplo n.º 25
0
 def test_lista_documenti_vuota(self):
     persona = crea_persona()
     persona, sede, app = crea_persona_sede_appartenenza()
     sessione_persona = self.sessione_utente(persona=persona)
     sessione_persona.visit("%s%s" % (self.live_server_url, reverse('lista_documenti')))
     self.assertTrue(sessione_persona.is_text_present('Nome del documento'))
     self.assertTrue(sessione_persona.is_text_present('Pubblicato il'))
     self.assertTrue(sessione_persona.is_text_present('Peso'))
     self.assertTrue(sessione_persona.is_text_present('Accessi'))
     self.assertEqual(1, len(sessione_persona.find_by_tag('tbody').find_by_css('tr.warning')))
Exemplo n.º 26
0
 def test_messaggio_con_destinatario_vuoto(self, mock_smtp):
     persona, sede, appartenenza = crea_persona_sede_appartenenza()
     persona.save()
     messaggio = Messaggio.costruisci_e_accoda(
         destinatari=[persona],
         oggetto="Email contatto",
         modello="email.html",
     )
     messaggio._smaltisci_coda()
     self.assertEqual(Messaggio.in_coda().count(), 0)
Exemplo n.º 27
0
 def test_messaggio_con_destinatario_vuoto(self, mock_smtp):
     persona, sede, appartenenza = crea_persona_sede_appartenenza()
     persona.save()
     messaggio = Messaggio.costruisci_e_accoda(
         destinatari=[persona],
         oggetto="Email contatto",
         modello="email.html",
     )
     messaggio.smaltisci_coda()
     self.assertEqual(Messaggio.in_coda().count(), 0)
Exemplo n.º 28
0
    def test_autocomplete_sostentitore_aspirante(self):
        direttore, sede, appartenenza = crea_persona_sede_appartenenza()
        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()
        aspirante1.save()

        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante1.codice_fiscale[:3]))
        self.assertContains(response, aspirante1.nome_completo)

        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante1.nome_completo))
        self.assertNotContains(response, aspirante1.nome_completo)

        # Creiamo aspirante
        aspirante2 = crea_persona()
        aspirante2.email_contatto = email_fittizzia()
        aspirante2.codice_fiscale = codice_fiscale()
        a = Aspirante(persona=aspirante2)
        a.locazione = sede.locazione
        a.save()
        aspirante2.save()

        # Se è solo aspirante viene selezionato
        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante1.codice_fiscale[:3]))
        self.assertContains(response, aspirante1.nome_completo)

        Appartenenza.objects.create(
            persona=aspirante2,
            sede=sede,
            membro=Appartenenza.VOLONTARIO,
            inizio="1980-12-10",
        )

        # Con un appartenenza come volontario non è più selezionabile
        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante2.codice_fiscale[:3]))
        self.assertNotContains(response, aspirante2.nome_completo)

        # Dimettiamolo
        aspirante2.espelli()
        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante2.codice_fiscale[:3]))
        self.assertContains(response, aspirante2.nome_completo)

        # Reintegriamolo
        Appartenenza.objects.create(
            persona=aspirante2,
            sede=sede,
            membro=Appartenenza.VOLONTARIO,
            inizio=poco_fa(),
        )
        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante2.codice_fiscale[:3]))
        self.assertNotContains(response, aspirante2.nome_completo)
Exemplo n.º 29
0
    def test_autocomplete_sostentitore_aspirante(self):
        direttore, sede, appartenenza = crea_persona_sede_appartenenza()
        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()
        aspirante1.save()

        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante1.codice_fiscale[:3]))
        self.assertContains(response, aspirante1.nome_completo)

        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante1.nome_completo))
        self.assertNotContains(response, aspirante1.nome_completo)

        # Creiamo aspirante
        aspirante2 = crea_persona()
        aspirante2.email_contatto = email_fittizzia()
        aspirante2.codice_fiscale = codice_fiscale()
        a = Aspirante(persona=aspirante2)
        a.locazione = sede.locazione
        a.save()
        aspirante2.save()

        # Se è solo aspirante viene selezionato
        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante1.codice_fiscale[:3]))
        self.assertContains(response, aspirante1.nome_completo)

        Appartenenza.objects.create(
            persona=aspirante2,
            sede=sede,
            membro=Appartenenza.VOLONTARIO,
            inizio="1980-12-10",
        )

        # Con un appartenenza come volontario non è più selezionabile
        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante2.codice_fiscale[:3]))
        self.assertNotContains(response, aspirante2.nome_completo)

        # Dimettiamolo
        aspirante2.espelli()
        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante2.codice_fiscale[:3]))
        self.assertContains(response, aspirante2.nome_completo)

        # Reintegriamolo
        Appartenenza.objects.create(
            persona=aspirante2,
            sede=sede,
            membro=Appartenenza.VOLONTARIO,
            inizio=poco_fa(),
        )
        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante2.codice_fiscale[:3]))
        self.assertNotContains(response, aspirante2.nome_completo)
Exemplo n.º 30
0
    def test_recupero_password_corretto(self, mocked):
        presidente = crea_persona()
        persona, sede, app = crea_persona_sede_appartenenza(presidente=presidente)
        persona_in_sede = crea_persona()
        utenza_persona_in_sede = crea_utenza(persona_in_sede)
        appartenenza_persona_in_sede = crea_appartenenza(persona, sede)
        sessione = self.sessione_anonimo()

        sessione.visit("%s%s" % (self.live_server_url, reverse('recupera_password')))
        sessione.fill('codice_fiscale', persona_in_sede.codice_fiscale)
        sessione.fill('email', utenza_persona_in_sede.email)
        sessione.find_by_css('.btn.btn-block.btn-primary').first.click()
        self.assertTrue(sessione.is_text_present('Ti abbiamo inviato le istruzioni per cambiare la tua password tramite e-mail'))
Exemplo n.º 31
0
    def test_us_cambio_credenziali(self):

        VECCHIA_EMAIL = email_fittizzia()
        NUOVA_EMAIL = email_fittizzia()

        presidente = crea_persona()
        persona, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)
        utenza = crea_utenza(persona=persona, email=VECCHIA_EMAIL)

        sessione_presidente = self.sessione_utente(persona=presidente)
        sessione_presidente.visit("%s%s" % (self.live_server_url, persona.url_profilo_credenziali))
        sessione_presidente.fill('email', NUOVA_EMAIL)
        sessione_presidente.check('ok_1')
        sessione_presidente.check('ok_3')
        sessione_presidente.check('ok_4')
        sessione_presidente.find_by_xpath("//button[@type='submit']").first.click()

        # Ottieni e-mail inviata
        msg = Messaggio.objects.filter(oggetto__icontains="credenziali",
                                       oggetti_destinatario__persona=persona)

        self.assertTrue(
            msg.exists(),
            msg="Email di avviso con nuove credenziali inviata"
        )

        msg_body = msg.first().corpo

        self.assertTrue(
            VECCHIA_EMAIL in msg_body,
            msg="Il messaggio contiene la vecchia e-mail"
        )

        self.assertTrue(
            NUOVA_EMAIL in msg_body,
            msg="Il messaggio contiene la nuova e-mail"
        )

        utenza = persona.utenza
        utenza.refresh_from_db()

        self.assertTrue(
            utenza.email == NUOVA_EMAIL,
            msg="E-mail di accesso cambiata correttamente"
        )

        sessione_persona = self.sessione_utente(utente=utenza)
        self.assertTrue(
            True,
            msg="Login effettuato con nuove credenziali"
        )
Exemplo n.º 32
0
    def test_aggiungi_aspirante_multiplo(self):
        presidente = crea_persona()
        presidente.email_contatto = email_fittizzia()
        presidente.save()
        crea_utenza(presidente, presidente.email_contatto)
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        aspirante1.save()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()

        oggi = poco_fa()
        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )

        self.client.login(username=presidente.email_contatto, password='******')

        # Iscrizione aspirante
        iscritto = {
            'persone': [aspirante1.pk]
        }
        response = self.client.post('/aspirante/corso-base/{}/iscritti/aggiungi/'.format(corso.pk), data=iscritto)
        self.assertEqual(corso.partecipazioni.count(), 0)
        self.assertEqual(corso.inviti.count(), 1)
        self.assertContains(response, aspirante1.nome_completo)
        self.assertContains(response, 'In attesa')
        # Correttezza email di invito
        self.assertEqual(len(mail.outbox), 1)
        email = mail.outbox[0]
        self.assertTrue(
            email.subject.find("Richiesta di iscrizione a Corso Base da {}".format(presidente.nome_completo)) > -1)
        self.assertEqual(len(email.to), 1)
        self.assertIn(aspirante1.email_contatto, email.to)

        iscritto = {
            'persone': [aspirante1.pk]
        }
        response = self.client.post('/aspirante/corso-base/{}/iscritti/aggiungi/'.format(corso.pk), data=iscritto)
        self.assertContains(response, 'Già invitato')
Exemplo n.º 33
0
    def test_aggiungi_aspirante_multiplo(self):
        presidente = crea_persona()
        presidente.email_contatto = email_fittizzia()
        presidente.save()
        crea_utenza(presidente, presidente.email_contatto)
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        aspirante1.save()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()

        oggi = poco_fa()
        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )

        self.client.login(username=presidente.email_contatto, password='******')

        # Iscrizione aspirante
        iscritto = {
            'persone': [aspirante1.pk]
        }
        response = self.client.post('/aspirante/corso-base/{}/iscritti/aggiungi/'.format(corso.pk), data=iscritto)
        self.assertEqual(corso.partecipazioni.count(), 0)
        self.assertEqual(corso.inviti.count(), 1)
        self.assertContains(response, aspirante1.nome_completo)
        self.assertContains(response, 'In attesa')
        # Correttezza email di invito
        self.assertEqual(len(mail.outbox), 1)
        email = mail.outbox[0]
        self.assertTrue(
            email.subject.find("Richiesta di iscrizione a Corso Base da {}".format(presidente.nome_completo)) > -1)
        self.assertEqual(len(email.to), 1)
        self.assertIn(aspirante1.email_contatto, email.to)

        iscritto = {
            'persone': [aspirante1.pk]
        }
        response = self.client.post('/aspirante/corso-base/{}/iscritti/aggiungi/'.format(corso.pk), data=iscritto)
        self.assertContains(response, 'Già invitato')
Exemplo n.º 34
0
    def test_lista_documenti(self):
        extra_headers = {}
        self.assertEqual(Documento.objects.count(), 0)
        folder_radice = Folder.objects.create(name='radice')
        folder_figlia = Folder.objects.create(name='sottocartella', parent=folder_radice)
        file_obj = django.core.files.File(open(self.doc_filename, 'rb'))
        url = reverse('admin:filer-ajax_upload', kwargs={'folder_id': folder_figlia.pk})
        post_data = {
            'Filename': self.doc_name,
            'Filedata': file_obj,
            'jsessionid': self.client.session.session_key
        }
        self.client.post(url, post_data, **extra_headers)
        self.assertEqual(Documento.objects.count(), 1)
        uploaded_file = Documento.objects.all()[0]
        self.assertEqual(uploaded_file.original_filename, self.doc_name)

        url = reverse('admin:gestione_file_documento_add') + '?parent_id={}'.format(folder_radice.pk)
        post_data = {
            'url_documento': 'http://www.example.com',
            'segmenti-TOTAL_FORMS': 0,
            'segmenti-INITIAL_FORMS': 0,
            'segmenti-MIN_NUM_FORMS': 0,
            'segmenti-MAX_NUM_FORMS': 0,
            'data_pubblicazione_0': '2016-01-01',
            'data_pubblicazione_1': '22:22:22',
        }
        response = self.client.post(url, post_data, **extra_headers)
        self.assertEqual(Documento.objects.count(), 2)
        uploaded_file = Documento.objects.all()[1]
        self.assertEqual(uploaded_file.folder, folder_radice)
        self.assertEqual(uploaded_file.original_filename, 'www.example.com')

        persona = crea_persona()
        persona, sede, app = crea_persona_sede_appartenenza()
        sessione_persona = self.sessione_utente(persona=persona)
        sessione_persona.visit("%s%s" % (self.live_server_url, reverse('lista_documenti')))
        self.assertTrue(sessione_persona.is_text_present('Nome del documento'))
        self.assertTrue(sessione_persona.is_text_present('Pubblicato il'))
        self.assertTrue(sessione_persona.is_text_present('Peso'))
        self.assertTrue(sessione_persona.is_text_present('Accessi'))
        self.assertEqual(1, len(sessione_persona.find_by_tag('tbody').find_by_tag('tr')))
        sessione_persona.find_link_by_text('radice').first.click()
        self.assertTrue(sessione_persona.is_text_present('www.example.com'))
        sessione_persona.find_link_by_text('sottocartella').first.click()
        self.assertTrue(sessione_persona.is_text_present(self.doc_name))
        sessione_persona.fill('q', 'example')
        sessione_persona.find_by_xpath('//button[@type="submit"]').first.click()
        self.assertTrue(sessione_persona.is_text_present('www.example.com'))
Exemplo n.º 35
0
 def test_lista_documenti_vuota(self):
     persona = crea_persona()
     persona, sede, app = crea_persona_sede_appartenenza()
     sessione_persona = self.sessione_utente(persona=persona)
     sessione_persona.visit(
         "%s%s" % (self.live_server_url, reverse('lista_documenti')))
     self.assertTrue(sessione_persona.is_text_present('Nome del documento'))
     self.assertTrue(sessione_persona.is_text_present('Pubblicato il'))
     self.assertTrue(sessione_persona.is_text_present('Peso'))
     self.assertTrue(sessione_persona.is_text_present('Accessi'))
     self.assertEqual(
         1,
         len(
             sessione_persona.find_by_tag('tbody').find_by_css(
                 'tr.warning')))
Exemplo n.º 36
0
    def test_recupero_password_email_errata(self, mocked):
        presidente = crea_persona()
        persona, sede, app = crea_persona_sede_appartenenza(presidente=presidente)
        persona_in_sede = crea_persona()
        utenza_persona_in_sede = crea_utenza(persona_in_sede)
        appartenenza_persona_in_sede = crea_appartenenza(persona, sede)
        sessione = self.sessione_anonimo()

        sessione.visit("%s%s" % (self.live_server_url, reverse('recupera_password')))

        sessione.fill('codice_fiscale', persona_in_sede.codice_fiscale)
        sessione.fill('email', '*****@*****.**')
        sessione.find_by_css('.btn.btn-block.btn-primary').first.click()
        self.assertTrue(sessione.is_text_present('ma NON con questo indirizzo e-mail ([email protected])'))
        self.assertTrue(sessione.is_text_present('Supporto di Gaia'))
Exemplo n.º 37
0
    def test_us_attivazione_credenziali(self):

        EMAIL_UTENZA = email_fittizzia()

        presidente = crea_persona()
        persona, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        sessione_presidente = self.sessione_utente(persona=presidente)

        sessione_presidente.visit("%s%s" % (self.live_server_url, persona.url_profilo_credenziali))
        sessione_presidente.fill('email', EMAIL_UTENZA)
        sessione_presidente.find_by_xpath("//button[@type='submit']").first.click()

        self.assertTrue(
            Utenza.objects.filter(persona=persona).exists(),
            msg="L'utenza e' stata creata correttamente"
        )

        self.assertTrue(
            Utenza.objects.get(persona=persona).email == EMAIL_UTENZA,
            msg="L'email e' stata correttamente creata"
        )

        # Ottieni e-mail inviata
        msg = Messaggio.objects.filter(oggetto__icontains="credenziali",
                                       oggetti_destinatario__persona=persona)

        self.assertTrue(
            msg.exists(),
            msg="Email delle credenziali spedita"
        )

        corpo_msg = msg.first().corpo

        self.assertTrue(
            EMAIL_UTENZA in corpo_msg,
            msg="L'email contiene il nuovo indirizzo e-mail"
        )

        doc = html.document_fromstring(corpo_msg)
        nuova_pwd = doc.xpath("//*[@id='nuova-password']")[0].text.strip()

        utenza = persona.utenza
        utenza.password_testing = nuova_pwd  # Password per accesso

        # Prova accesso con nuova utenza.
        sessione_persona = self.sessione_utente(utente=utenza)
Exemplo n.º 38
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 è 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())
Exemplo n.º 39
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)
Exemplo n.º 40
0
    def test_segmento_anzianita(self):

        meno_di_tre_anni_fa = poco_fa() - timedelta(days=360*3)
        meno_di_due_anni_fa = poco_fa() - timedelta(days=360*2)
        meno_di_un_anno_fa = poco_fa() - timedelta(days=360)

        presidente = crea_persona()
        persona_1 = crea_persona()
        persona_2 = crea_persona()
        persona_3 = crea_persona()
        presidente, sede, _ = crea_persona_sede_appartenenza(presidente)

        Appartenenza.objects.create(
            persona=persona_1,
            sede=sede,
            membro=Appartenenza.VOLONTARIO,
            inizio=meno_di_tre_anni_fa,
            confermata=True
        )

        Appartenenza.objects.create(
            persona=persona_2,
            sede=sede,
            membro=Appartenenza.VOLONTARIO,
            inizio=meno_di_due_anni_fa,
            confermata=True
        )

        Appartenenza.objects.create(
            persona=persona_3,
            sede=sede,
            membro=Appartenenza.VOLONTARIO,
            inizio=meno_di_un_anno_fa,
            confermata=True
        )

        meno_di_un_anno = volontari_meno_un_anno(Persona.objects.all())
        self.assertEqual(meno_di_un_anno.count(), 1)
        self.assertEqual(meno_di_un_anno.get(), persona_3)

        meno_di_due_anni = volontari_piu_un_anno(Persona.objects.all())
        self.assertEqual(meno_di_due_anni.count(), 3)
        self.assertTrue(presidente in meno_di_due_anni)
        self.assertTrue(persona_1 in meno_di_due_anni)
        self.assertTrue(persona_2 in meno_di_due_anni)
Exemplo n.º 41
0
    def test_invito_aspirante_automatico(self):
        presidente = crea_persona()
        presidente.email_contatto = email_fittizzia()
        presidente.save()
        crea_utenza(presidente, presidente.email_contatto)
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        aspirante1.save()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()

        oggi = poco_fa()
        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )
        self.assertFalse(aspirante1.autorizzazioni_in_attesa().exists())

        partecipazione = InvitoCorsoBase(persona=aspirante1, corso=corso, invitante=presidente)
        partecipazione.save()
        partecipazione.richiedi()

        self.assertFalse(InvitoCorsoBase.con_esito_no().exists())
        autorizzazione = presidente.autorizzazioni_richieste.first()
        autorizzazione.scadenza = timezone.now() - timedelta(days=10)
        autorizzazione.save()
        self.assertFalse(autorizzazione.concessa)
        Autorizzazione.gestisci_automatiche()
        self.assertEqual(len(mail.outbox), 2)
        messaggio = mail.outbox[1]
        self.assertTrue(messaggio.subject.find('Richiesta di iscrizione a Corso Base RESPINTA') > -1)
        self.assertFalse(messaggio.subject.find('Richiesta di iscrizione a Corso Base APPROVATA') > -1)
        self.assertTrue(messaggio.body.find('una tua richiesta è rimasta in attesa per 30 giorni e come da policy') == -1)
        self.assertEqual(autorizzazione.concessa, None)
        self.assertTrue(InvitoCorsoBase.con_esito_no().exists())
Exemplo n.º 42
0
    def test_invito_aspirante_automatico(self):
        presidente = crea_persona()
        presidente.email_contatto = email_fittizzia()
        presidente.save()
        crea_utenza(presidente, presidente.email_contatto)
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        aspirante1.save()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()

        oggi = poco_fa()
        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )
        self.assertFalse(aspirante1.autorizzazioni_in_attesa().exists())

        partecipazione = InvitoCorsoBase(persona=aspirante1, corso=corso, invitante=presidente)
        partecipazione.save()
        partecipazione.richiedi()

        self.assertFalse(InvitoCorsoBase.con_esito_no().exists())
        autorizzazione = presidente.autorizzazioni_richieste.first()
        autorizzazione.scadenza = timezone.now() - timedelta(days=10)
        autorizzazione.save()
        self.assertFalse(autorizzazione.concessa)
        Autorizzazione.gestisci_automatiche()
        self.assertEqual(len(mail.outbox), 2)
        messaggio = mail.outbox[1]
        self.assertTrue(messaggio.subject.find('Richiesta di iscrizione a Corso Base RESPINTA') > -1)
        self.assertFalse(messaggio.subject.find('Richiesta di iscrizione a Corso Base APPROVATA') > -1)
        self.assertTrue(messaggio.body.find('una tua richiesta è rimasta in attesa per 30 giorni e come da policy') == -1)
        self.assertEqual(autorizzazione.concessa, None)
        self.assertTrue(InvitoCorsoBase.con_esito_no().exists())
Exemplo n.º 43
0
    def test_filtro_con_titolo(self):
        volontario_con_titolo, sede, appartenenza = crea_persona_sede_appartenenza()
        appartenenza.inizio = now()
        appartenenza.save()
        titolo_personale = TitoloPersonale.objects.create(
            titolo=self.titolo_patenteCRI, persona=volontario_con_titolo
        )

        segmento_0 = self._crea_segmento(self.file_1, 'D')
        segmento_1 = self._crea_segmento(self.file_1, 'AA', titolo=self.titolo_altro)
        segmento_2 = self._crea_segmento(self.file_2, 'AA', titolo=self.titolo_patenteCRI)
        qs = DocumentoSegmento.objects.all()

        documenti = qs.filtra_per_segmenti(volontario_con_titolo)
        self.assertEqual(documenti.count(), 1)
        self.assertEqual(set(documenti), set(DocumentoSegmento.objects.filter(pk=segmento_2.pk)))
        oggetti = documenti.oggetti_collegati()
        self.assertEqual(oggetti.count(), 1)
        self.assertEqual(set(oggetti), set(Documento.objects.filter(pk=self.file_2.pk)))
Exemplo n.º 44
0
 def test_recupero_password_link_valido(self):
     presidente = crea_persona()
     persona, sede, app = crea_persona_sede_appartenenza(presidente=presidente)
     persona_in_sede = crea_persona()
     utenza_persona_in_sede = crea_utenza(persona_in_sede)
     appartenenza_persona_in_sede = crea_appartenenza(persona, sede)
     uid = urlsafe_base64_encode(force_bytes(utenza_persona_in_sede.pk))
     reset_pw_link = default_token_generator.make_token(utenza_persona_in_sede)
     sessione = self.sessione_anonimo()
     sessione.visit("%s%s" % (self.live_server_url, reverse('recupera_password_conferma',  kwargs={ 'uidb64': uid, 'token': reset_pw_link})))
     sessione.fill('new_password1', 'new_password')
     sessione.fill('new_password2', 'new_password')
     sessione.find_by_css('.btn.btn-block.btn-primary').first.click()
     self.assertTrue(sessione.is_text_present('La tua nuova password è stata impostata'))
     sessione.visit("%s%s" % (self.live_server_url, '/login/'))
     sessione.fill('auth-username', utenza_persona_in_sede.email)
     sessione.fill('auth-password', 'new_password')
     sessione.find_by_css('.btn.btn-block.btn-primary').first.click()
     testo_personalizzato = 'Ciao, {0}'.format(persona_in_sede.nome)
     self.assertTrue(sessione.is_text_present(testo_personalizzato))
Exemplo n.º 45
0
    def test_registrazione_doppio_click_email(self):
        """
        Effettua la registrazione come aspirante, il presidente
        del Comitato organizza un corso, avvisa tutti, l'aspirante trova
        un corso e vi ci si iscrive.
        """

        presidente = crea_persona()
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        sessione_iniziale = self.sessione_anonimo()

        sessione_iniziale.click_link_by_partial_text("Iscriviti al prossimo corso base")

        sessione_iniziale.fill('codice_fiscale', 'MRARSS42A01C351F')
        sessione_iniziale.find_by_xpath('//button[@type="submit"]').first.click()

        email = email_fittizzia()
        sessione_iniziale.fill('email', email)
        sessione_iniziale.fill('password', 'ciao12345')
        sessione_iniziale.fill('ripeti_password', 'ciao12345')
        sessione_iniziale.find_by_xpath('//button[@type="submit"]').first.click()

        self.assertTrue(sessione_iniziale.is_text_present('è necessario cliccare sul link'),
                        msg="Invio email attivazione")
        self.sessione_termina(sessione_iniziale)

        # Estrazione della chiave di conferma
        self.assertEqual(len(mail.outbox), 1)
        body = mail.outbox[0].alternatives[0][0]
        url_conferma = re.findall('/registrati/aspirante/anagrafica/\?code=\w+&registration=\w+', body)[0]
        sessione_aspirante = self.sessione_anonimo()
        sessione_secondo = self.sessione_anonimo()
        sessione_aspirante.visit("%s%s" % (self.live_server_url, url_conferma))
        self.assertTrue(sessione_aspirante.is_text_present('Parlaci un po\' di te'),
                        msg="Link accettato")

        sessione_secondo.visit("%s%s" % (self.live_server_url, url_conferma))
        self.assertEqual(len(mail.outbox), 1)
        self.assertTrue(sessione_secondo.is_text_present('Errore nel processo di registrazione.'),
                        msg="Errore link")
Exemplo n.º 46
0
    def test_registrazione_doppio_click_email(self):
        """
        Effettua la registrazione come aspirante, il presidente
        del Comitato organizza un corso, avvisa tutti, l'aspirante trova
        un corso e vi ci si iscrive.
        """

        presidente = crea_persona()
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        sessione_iniziale = self.sessione_anonimo()

        sessione_iniziale.click_link_by_partial_text("Iscriviti al prossimo corso base")

        sessione_iniziale.fill('codice_fiscale', 'MRARSS42A01C351F')
        sessione_iniziale.find_by_xpath('//button[@type="submit"]').first.click()

        email = email_fittizzia()
        sessione_iniziale.fill('email', email)
        sessione_iniziale.fill('password', 'ciao12345')
        sessione_iniziale.fill('ripeti_password', 'ciao12345')
        sessione_iniziale.find_by_xpath('//button[@type="submit"]').first.click()

        self.assertTrue(sessione_iniziale.is_text_present('è necessario cliccare sul link'),
                        msg="Invio email attivazione")
        self.sessione_termina(sessione_iniziale)

        # Estrazione della chiave di conferma
        self.assertEqual(len(mail.outbox), 1)
        body = mail.outbox[0].alternatives[0][0]
        url_conferma = re.findall('/registrati/aspirante/anagrafica/\?code=\w+&registration=\w+', body)[0]
        sessione_aspirante = self.sessione_anonimo()
        sessione_secondo = self.sessione_anonimo()
        sessione_aspirante.visit("%s%s" % (self.live_server_url, url_conferma))
        self.assertTrue(sessione_aspirante.is_text_present('Parlaci un po\' di te'),
                        msg="Link accettato")

        sessione_secondo.visit("%s%s" % (self.live_server_url, url_conferma))
        self.assertEqual(len(mail.outbox), 1)
        self.assertTrue(sessione_secondo.is_text_present('Errore nel processo di registrazione.'),
                        msg="Errore link")
Exemplo n.º 47
0
    def pagamento_quota_nuovo_volontario(self):
        """
        Testa che un nuovo volontario sia in grado di registarare
        la quota nell'anno in cui è diventato volontario
        """
        delegato = crea_persona()
        utente = crea_utenza(delegato, email="*****@*****.**", password="******")
        volontario, sede, appartenenza = crea_persona_sede_appartenenza()

        sede.aggiungi_delegato(UFFICIO_SOCI, delegato)
        sede.telefono = '+3902020202'
        sede.email = '*****@*****.**'
        sede.codice_fiscale = '01234567891'
        sede.partita_iva = '01234567891'
        sede.locazione = crea_locazione()
        sede.save()

        appartenenza.inizio = poco_fa().replace(month=8)
        appartenenza.save()

        oggi = poco_fa().replace(month=9)
        inizio_anno = oggi.replace(month=1, day=1)
        fine_soci = inizio_anno.replace(month=3) - datetime.timedelta(days=1)
        fine_anno = inizio_anno.replace(month=12) - datetime.timedelta(days=31)

        Tesseramento.objects.create(
            stato=Tesseramento.APERTO, inizio=inizio_anno, fine_soci=fine_soci,
            anno=inizio_anno.year, quota_attivo=8, quota_ordinario=8, quota_benemerito=8,
            quota_aspirante=8, quota_sostenitore=8, fine_soci_nv=fine_anno
        )

        data = {
            'volontario': volontario.pk,
            'importo': 8,
            'data_versamento': oggi.strftime('%d/%m/%Y')
        }
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.post('{}{}'.format(self.live_server_url, reverse('us_quote_nuova')), data=data)
        # quota registrata con successo
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['location'].find('?appena_registrata='))
Exemplo n.º 48
0
    def setUp(self):
        """ Create users """
        ### Presidente ###
        self.presidente, self.presidente_utenza = create_persona()
        self.direttore, self.sede, self.appartenenza = crea_persona_sede_appartenenza(
            presidente=self.presidente)

        ### Aspirante ###
        self.aspirante1 = create_aspirante(sede=self.sede)
        self.aspirante2 = create_aspirante(sede=self.sede)

        ### Volontario ###
        self.volontario = None
        """ Create a new courses tipo CORSO_NUOVO """
        data_inizio = datetime.datetime.now() + timedelta(days=14)
        self.c1 = create_course(data_inizio, self.sede)  # corso_1_ext_mia_sede
        self.c2 = create_course(data_inizio,
                                self.sede,
                                extension_type=CorsoBase.EXT_LVL_REGIONALE
                                )  # corso_2_ext_a_livello_regionale
        self.c3 = create_course(data_inizio, self.sede, tipo=Corso.BASE)
        """ Create titles """
        """ Create extensions """
Exemplo n.º 49
0
    def test_crea_area(self):

        presidente = crea_persona()
        persona, sede, appartenenza = crea_persona_sede_appartenenza(
            presidente=presidente)
        if not presidente.volontario:
            crea_appartenenza(presidente, sede)

        sessione_presidente = self.sessione_utente(persona=presidente)
        #sessione_persona = self.sessione_utente(persona=persona)

        # Crea area di intervento
        sessione_presidente.click_link_by_partial_href("/attivita/")
        sessione_presidente.click_link_by_partial_text("Aree di intervento")
        sessione_presidente.click_link_by_partial_text(sede.nome)
        sessione_presidente.fill('nome', "Area 42")
        sessione_presidente.fill('obiettivo', '6')
        sessione_presidente.find_by_xpath(
            "//button[@type='submit']").first.click()

        # Nomina la persona come responsabile
        self.seleziona_delegato(sessione_presidente, persona)

        self.assertTrue(
            sessione_presidente.is_text_present("Area 42"),
            "La nuova area è stata creata con successo",
        )

        self.assertTrue(
            sessione_presidente.is_text_present(persona.nome_completo),
            "La nuova area ha il responsabile assegnato",
        )

        self.assertTrue(
            sessione_presidente.is_text_present("0 attività"),
            "La nuova area non ha alcuna attività",
        )
Exemplo n.º 50
0
    def test_aggiungi_sostenitore_aspirante(self):
        presidente = crea_persona()
        presidente.email_contatto = email_fittizzia()
        presidente.save()
        crea_utenza(presidente, presidente.email_contatto)
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        sostenitore = crea_persona()
        sostenitore.email_contatto = email_fittizzia()
        sostenitore.codice_fiscale = codice_fiscale()
        sostenitore.save()
        Appartenenza.objects.create(
            persona=sostenitore,
            sede=sede,
            membro=Appartenenza.SOSTENITORE,
            inizio="1980-12-10",
        )

        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        aspirante1.save()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()

        aspirante2 = crea_persona()
        aspirante2.email_contatto = email_fittizzia()
        aspirante2.codice_fiscale = codice_fiscale()
        aspirante2.save()
        a = Aspirante(persona=aspirante2)
        a.locazione = sede.locazione
        a.save()

        oggi = poco_fa()
        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )

        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante1.codice_fiscale[:3]))
        self.assertContains(response, aspirante1.nome_completo)

        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(aspirante2.codice_fiscale[:3]))
        self.assertContains(response, aspirante2.nome_completo)

        response = self.client.get('/autocomplete/IscrivibiliCorsiAutocompletamento/?q={}'.format(sostenitore.codice_fiscale[:3]))
        self.assertContains(response, sostenitore.nome_completo)

        self.client.login(username=presidente.email_contatto, password='******')

        # Iscrizione aspirante
        iscritto = {
            'persone': [aspirante1.pk]
        }
        response = self.client.post('/aspirante/corso-base/{}/iscritti/aggiungi/'.format(corso.pk), data=iscritto)
        self.assertEqual(corso.partecipazioni.count(), 0)
        self.assertEqual(corso.inviti.count(), 1)
        self.assertContains(response, aspirante1.nome_completo)
        self.assertContains(response, 'In attesa')
        # Correttezza email di invito
        self.assertEqual(len(mail.outbox), 1)
        email = mail.outbox[0]
        self.assertTrue(email.subject.find("Richiesta di iscrizione a Corso Base da {}".format(presidente.nome_completo)) > -1)
        self.assertEqual(len(email.to), 1)
        self.assertIn(aspirante1.email_contatto, email.to)

        # Iscrizione aspirante
        iscritto = {
            'persone': [aspirante2.pk]
        }
        self.client.post('/aspirante/corso-base/{}/iscritti/aggiungi/'.format(corso.pk), data=iscritto)
        self.assertEqual(corso.inviti.count(), 2)
        # Correttezza email di invito
        self.assertEqual(len(mail.outbox), 2)
        email = mail.outbox[0]
        self.assertTrue(email.subject.find("Richiesta di iscrizione a Corso Base da {}".format(presidente.nome_completo)) > -1)
        self.assertEqual(len(email.to), 1)
        self.assertIn(aspirante1.email_contatto, email.to)

        # Iscrizione sostenitore
        iscritto = {
            'persone': [sostenitore.pk]
        }
        response = self.client.post('/aspirante/corso-base/{}/iscritti/aggiungi/'.format(corso.pk), data=iscritto)
        self.assertEqual(corso.partecipazioni.count(), 1)
        self.assertContains(response, 'Sì')
        self.assertContains(response, sostenitore.nome_completo)
        # Correttezza email di iscrizione
        self.assertEqual(len(mail.outbox), 3)
        email = mail.outbox[2]
        self.assertTrue(email.subject.find("Iscrizione a Corso Base") > -1)
        self.assertEqual(len(email.to), 1)
        self.assertIn(sostenitore.email_contatto, email.to)

        # Un aspirante approva
        self.assertEqual(corso.partecipazioni.count(), 1)
        self.assertEqual(aspirante1.autorizzazioni_in_attesa().count(), 1)
        aspirante1.autorizzazioni_in_attesa()[0].concedi()
        self.assertEqual(len(mail.outbox), 5)
        email_aspirante = False
        email_presidente = False
        for email in mail.outbox[3:]:
            if aspirante1.email_contatto in email.to:
                email_aspirante = True
                self.assertTrue(email.subject.find('Iscrizione a Corso Base') > -1)
            elif presidente.email_contatto in email.to:
                email_presidente = True
                self.assertTrue(email.subject.find('Richiesta di iscrizione a Corso Base APPROVATA') > -1)
            else:
                raise AssertionError('Email a destinatario sconosciuto')
        self.assertTrue(email_aspirante)
        self.assertTrue(email_presidente)
        self.assertFalse(aspirante1.autorizzazioni_in_attesa().exists())
        self.assertEqual(corso.inviti.count(), 1)
        self.assertEqual(corso.partecipazioni.count(), 2)

        # Un aspirante declina
        self.assertEqual(aspirante2.autorizzazioni_in_attesa().count(), 1)
        aspirante2.autorizzazioni_in_attesa()[0].nega()
        self.assertEqual(len(mail.outbox), 6)
        email = mail.outbox[5]
        self.assertIn(presidente.email_contatto, email.to)
        self.assertTrue(email.subject.find('Richiesta di iscrizione a Corso Base RESPINTA') > -1)
        self.assertFalse(aspirante2.autorizzazioni_in_attesa().exists())
        self.assertFalse(corso.inviti.exists())
        self.assertEqual(corso.partecipazioni.count(), 2)
Exemplo n.º 51
0
    def test_crea_attivita(self):

        presidente = crea_persona()
        persona, sede, appartenenza = crea_persona_sede_appartenenza(
            presidente=presidente)
        if not presidente.volontario:
            crea_appartenenza(presidente, sede)

        area = Area(sede=sede, nome="Area 42", obiettivo=6)
        area.save()

        # Crea le sessioni
        sessione_presidente = self.sessione_utente(persona=presidente)
        sessione_persona = self.sessione_utente(persona=persona)

        # Presidente: Vai a organizza attivita
        sessione_presidente.click_link_by_partial_href("/attivita/")
        sessione_presidente.click_link_by_partial_text("Organizza attività")

        # Presidente: Riempi dettagli attivita
        sessione_presidente.fill('nome', "Fine del mondo")
        sessione_presidente.select('area', area.pk)
        sessione_presidente.select('scelta',
                                   ModuloOrganizzaAttivitaReferente.SONO_IO)

        # Presidente: Invia il modulo
        sessione_presidente.find_by_xpath(
            "//button[@type='submit']").first.click()

        # Presidente: Torna all'elenco attività, naviga fino a nuovo turno.
        sessione_presidente.click_link_by_partial_text("Gestione turni")
        sessione_presidente.click_link_by_partial_text("Crea nuovo turno")

        inizio = (timezone.now()).strftime("%d/%m/%Y %H:%m")
        fine = (timezone.now() +
                timedelta(hours=30)).strftime("%d/%m/%Y %H:%m")

        # Presidente: Riempi i dettagli del nuovo turno
        sessione_presidente.fill('nome', "Vedetta")
        sessione_presidente.fill('inizio', inizio)
        sessione_presidente.fill('fine', fine)
        sessione_presidente.fill('minimo', 1)
        sessione_presidente.fill('massimo', 5)
        sessione_presidente.fill('prenotazione', inizio)

        sessione_presidente.execute_script(
            'window.scrollTo(0, document.body.scrollHeight)')

        # Presidente: Invia il modulo
        sessione_presidente.find_by_css("button.btn-primary").first.click()

        # Volontario: Vai in attività
        sessione_persona.click_link_by_partial_text("Attività")

        self.assertFalse(sessione_persona.is_text_present("Vedetta"),
                         msg="L'attività non è visibile.")

        # Presidente: Modifica attività
        sessione_presidente.click_link_by_partial_text("Elenco attività")
        sessione_presidente.click_link_by_partial_text("modifica info")
        sessione_presidente.click_link_by_partial_text("Gestione attività")

        # Presidente: Imposta stato come VISIBILE
        sessione_presidente.select('stato', Attivita.VISIBILE)

        # Presidente: Invia il modulo
        sessione_presidente.find_by_xpath(
            "//button[@type='submit']").first.click()

        # Volontario: Vai in attività
        sessione_persona.click_link_by_partial_text("Attività")

        self.assertTrue(sessione_persona.is_text_present("Vedetta"),
                        msg="L'attività è ora visibile.")

        # Volontario: Clicca sul turno
        sessione_persona.click_link_by_partial_text("Vedetta")

        self.assertTrue(sessione_persona.is_text_present("Scoperto!"),
                        msg="Viene mostrata correttamente come scoperta.")
Exemplo n.º 52
0
    def test_gestione_inviti(self):

        presidente = crea_persona()
        presidente.email_contatto = email_fittizzia()
        presidente.save()
        crea_utenza(presidente, presidente.email_contatto)
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        sostenitore = crea_persona()
        sostenitore.email_contatto = email_fittizzia()
        sostenitore.codice_fiscale = codice_fiscale()
        sostenitore.save()
        Appartenenza.objects.create(
            persona=sostenitore,
            sede=sede,
            membro=Appartenenza.SOSTENITORE,
            inizio="1980-12-10",
        )

        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        aspirante1.save()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()
        crea_utenza(aspirante1, aspirante1.email_contatto)

        aspirante2 = crea_persona()
        aspirante2.email_contatto = email_fittizzia()
        aspirante2.codice_fiscale = codice_fiscale()
        aspirante2.save()
        a = Aspirante(persona=aspirante2)
        a.locazione = sede.locazione
        a.save()
        crea_utenza(aspirante2, aspirante2.email_contatto)

        # Attività degli aspiranti
        sessione_aspirante1 = self.sessione_utente(persona=aspirante1)
        sessione_aspirante2 = self.sessione_utente(persona=aspirante2)
        sessione_aspirante1.click_link_by_partial_text("Richieste")
        self.assertTrue(sessione_aspirante1.is_text_present("Non ci sono richieste in attesa."), msg="Nessun invito")

        # setup dei dati
        oggi = poco_fa()
        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )
        self.client.login(username=presidente.email_contatto, password='******')
        iscritti = {
            'persone': [aspirante1.pk]
        }
        self.client.post('/aspirante/corso-base/{}/iscritti/aggiungi/'.format(corso.pk), data=iscritti)
        iscritti = {
            'persone': [aspirante2.pk]
        }
        self.client.post('/aspirante/corso-base/{}/iscritti/aggiungi/'.format(corso.pk), data=iscritti)
        self.assertEqual(corso.inviti.count(), 2)

        sessione_aspirante1.click_link_by_partial_text("Richieste")
        self.assertTrue(sessione_aspirante1.is_text_present(corso.nome), msg="Invito disponibile")
        sessione_aspirante1.click_link_by_partial_text("Conferma")
        self.assertTrue(sessione_aspirante1.is_text_present("Richiesta autorizzata."), msg="Richiesta autorizzata")

        self.assertEqual(corso.inviti.count(), 1)
        self.assertEqual(corso.partecipazioni.count(), 1)
        self.assertEqual(aspirante2.inviti_corsi.count(), 1)
        sessione_aspirante2.click_link_by_partial_text("Richieste")
        self.assertTrue(sessione_aspirante2.is_text_present(corso.nome), msg="Invito disponibile")
        sessione_aspirante2.click_link_by_partial_text("Nega")
        sessione_aspirante2.fill('motivo', 'Test')
        sessione_aspirante2.find_by_css(".btn-danger").first.click()
        self.assertTrue(sessione_aspirante2.is_text_present("Richiesta negata."), msg="Richiesta negata")
        self.assertEqual(corso.inviti.count(), 0)
        self.assertEqual(corso.partecipazioni.count(), 1)
        self.assertEqual(aspirante2.inviti_corsi.count(), 0)
Exemplo n.º 53
0
    def test_registrazione_aspirante(self):
        """
        Effettua la registrazione come aspirante, il presidente
        del Comitato organizza un corso, avvisa tutti, l'aspirante trova
        un corso e vi ci si iscrive.
        """

        presidente = crea_persona()
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        sessione_iniziale = self.sessione_anonimo()

        sessione_iniziale.click_link_by_partial_text("Iscriviti al prossimo corso base")

        sessione_iniziale.fill('codice_fiscale', 'MRARSS42A01C351F')
        sessione_iniziale.find_by_xpath('//button[@type="submit"]').first.click()

        email = email_fittizzia()
        sessione_iniziale.fill('email', email)
        sessione_iniziale.fill('password', 'ciao12345')
        sessione_iniziale.fill('ripeti_password', 'ciao12345')
        sessione_iniziale.find_by_xpath('//button[@type="submit"]').first.click()

        self.assertTrue(sessione_iniziale.is_text_present('è necessario cliccare sul link'),
                        msg="Invio email attivazione")
        self.sessione_termina(sessione_iniziale)

        # Estrazione della chiave di conferma
        self.assertEqual(len(mail.outbox), 1)
        body = mail.outbox[0].alternatives[0][0]
        url_conferma = re.findall('/registrati/aspirante/anagrafica/\?code=\w+&registration=\w+', body)[0]
        sessione_aspirante = self.sessione_anonimo()
        sessione_aspirante.visit("%s%s" % (self.live_server_url, url_conferma))
        self.assertEqual(len(mail.outbox), 1)

        sessione_aspirante.fill('nome', 'Mario')
        sessione_aspirante.fill('cognome', 'Rossi Accènto')
        sessione_aspirante.fill('data_nascita', '1/1/1942')
        sessione_aspirante.fill('comune_nascita', 'Catania')
        sessione_aspirante.fill('provincia_nascita', 'CT')
        sessione_aspirante.fill('indirizzo_residenza', 'Via Etnea 353')
        sessione_aspirante.fill('comune_residenza', 'Catania')
        sessione_aspirante.fill('provincia_residenza', 'CT')
        sessione_aspirante.fill('cap_residenza', '95128')
        sessione_aspirante.find_by_xpath('//button[@type="submit"]').first.click()

        self.assertTrue(sessione_aspirante.is_text_present("acconsenti al trattamento "
                                                           "dei tuoi dati personali"),
                        msg="Presente clausola di accettazione trattamento dei dati personali")

        sessione_aspirante.find_by_xpath('//button[@type="submit"]').first.click()

        self.assertTrue(sessione_aspirante.is_text_present("Ciao, Mario"),
                        msg="Login effettuato automaticamente")

        self.assertTrue(sessione_aspirante.is_text_present(email),
                        msg="Indirizzo e-mail visibile e mostrato correttamente")

        sede.locazione = Locazione.objects.filter(comune="Catania").first()
        sede.save()

        sessione_presidente = self.sessione_utente(persona=presidente)
        sessione_presidente.click_link_by_partial_text("Formazione")
        sessione_presidente.click_link_by_partial_text("Domanda formativa")

        self.assertTrue(sessione_presidente.is_text_present("1 aspiranti"),
                        msg="Aspirante correttamente considerato in domanda formativa")

        sessione_presidente.click_link_by_partial_text("Elenco Corsi Base")
        sessione_presidente.click_link_by_partial_text("Pianifica nuovo")

        sessione_presidente.select('sede', sede.pk)
        sessione_presidente.find_by_xpath('//button[@type="submit"]').first.click()
        self.sessione_conferma(sessione_presidente, accetta=True)

        self.seleziona_delegato(sessione_presidente, direttore)

        self.assertTrue(sessione_presidente.is_text_present("Corso Base pianificato"),
                        msg="Conferma che il corso base e' stato creato")

        self.assertTrue(sessione_presidente.is_text_present(direttore.nome_completo),
                        msg="Il nome completo del direttore viene mostrato")

        self.sessione_termina(sessione_presidente)  # Non abbiamo piu' bisogno del presidente

        sessione_direttore = self.sessione_utente(persona=direttore)
        sessione_direttore.click_link_by_partial_text("Formazione")
        sessione_direttore.click_link_by_partial_text("Elenco Corsi Base")

        self.assertTrue(sessione_direttore.is_text_present("Corso Base"),
                        msg="Corso base in lista")

        self.assertTrue(sessione_direttore.is_text_present("In preparazione"),
                        msg="Il corso appare con lo stato corretto")

        sessione_direttore.click_link_by_partial_text("Corso Base")

        self.assertTrue(sessione_direttore.is_text_present("Non c'è tempo da perdere"),
                        msg="Visibile promemoria corso che sta per iniziare a breve")

        self.assertTrue(sessione_direttore.is_text_present("1 aspiranti"),
                        msg="Visibile numero di aspiranti nelle vicinanze")

        sessione_direttore.click_link_by_partial_text("Gestione corso")
        self.scrivi_tinymce(sessione_direttore, "descrizione", "Sarà un corso bellissimo")
        sessione_direttore.find_by_xpath('//button[@type="submit"]').first.click()

        sessione_direttore.click_link_by_partial_text("Attiva il corso e informa gli aspiranti")

        self.assertTrue(sessione_direttore.is_text_present("Anteprima messaggio"),
                        msg="Anteprima del messaggio visibile")

        self.assertTrue(sessione_direttore.is_text_present("Sarà un corso bellissimo"),
                        msg="La descrizione del corso e' nell'anteprima del messaggio")
        sessione_direttore.find_by_xpath('//button[@type="submit"]').first.click()

        self.sessione_conferma(sessione_direttore, accetta=True)

        self.assertTrue(sessione_direttore.is_text_present("Corso attivato con successo"),
                        msg="Messaggio di conferma attivazione corso")

        if os.environ.get('TRAVIS', 'false') == 'true':
            self.skipTest('Questo test fallisce su travis senza motivo apparente')
        sessione_aspirante.click_link_by_partial_text("Posta")
        self.assertTrue(sessione_aspirante.is_text_present("Nuovo Corso per Volontari CRI"),
                        msg="E-mail di attivazione corso ricevuta")
        sessione_aspirante.click_link_by_partial_text("Nuovo Corso per Volontari CRI")
        self.assertTrue(sessione_aspirante.is_text_present("Sarà un corso bellissimo"),
                        msg="La descrizione del corso è stata comunicata per e-mail")
        sessione_aspirante.visit("%s/utente/" % self.live_server_url)

        sessione_aspirante.click_link_by_partial_text("Aspirante")
        sessione_aspirante.click_link_by_partial_text("Elenco dei corsi nelle vicinanze")

        self.assertTrue(sessione_aspirante.is_text_present(direttore.nome_completo),
                        msg="Il nome completo del Direttore e' visibile in elenco")

        sessione_aspirante.click_link_by_partial_text("Corso Base")
        sessione_aspirante.click_link_by_partial_text("Voglio iscrivermi a questo corso")

        self.assertTrue(sessione_aspirante.is_text_present("Abbiamo inoltrato la tua richiesta"),
                        msg="Conferma data all'aspirante")

        sessione_direttore.visit("%s/utente/" % self.live_server_url)
        sessione_direttore.click_link_by_partial_text("Richieste")
        self.assertTrue(sessione_direttore.is_text_present("chiede di essere contattato"),
                        msg="Esplicitare che l'aspirante vuole essere contattato")

        self.assertTrue(sessione_direttore.is_text_present("Corso non ancora iniziato, impossibile processare la richiesta."),
                        msg="Corso non ancora iniziato, impossibile processare la richiesta.")

        for corso in sede.corsobase_set.all():
            corso.data_inizio = poco_fa()
            corso.save()

        sessione_direttore.click_link_by_partial_text("Richieste")
        sessione_direttore.click_link_by_partial_text("Conferma")
        sessione_direttore.check('conferma_1')
        sessione_direttore.check('conferma_2')
        sessione_direttore.find_by_xpath('//button[@type="submit"]').first.click()

        sessione_aspirante.visit("%s/utente/" % self.live_server_url)
        sessione_aspirante.click_link_by_partial_text("Aspirante")
        self.assertTrue(sessione_aspirante.is_text_present("Sei iscritt"),
                        msg="Conferma di iscrizione")

        sessione_aspirante.click_link_by_partial_text("Vai alla pagina del Corso Base")
        self.assertTrue(sessione_aspirante.is_text_present("Presentati alle lezioni del corso"),
                        msg="Invita l'aspirante a presentarsi alle lezioni del corso")
Exemplo n.º 54
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")
Exemplo n.º 55
0
    def test_articolo(self):

        CONTENUTO_1 = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n"
        NOME_1 = 'Test1.txt'
        CONTENUTO_2 = "Donec tempus nisi eu enim consequat, non scelerisque nisi accumsan.\n"
        NOME_2 = 'Test/Test2.txt'

        volontario, _, _ = crea_persona_sede_appartenenza()
        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()

        articolo = Articolo.objects.create(
            titolo='Titolo 1',
            corpo=parola_casuale(3000),
            data_inizio_pubblicazione=datetime.datetime.now() -
            datetime.timedelta(days=5),
        )

        self.assertEqual(articolo.corpo[:Articolo.DIMENSIONE_ESTRATTO],
                         articolo.estratto)
        self.assertFalse(articolo.termina)

        articolo2 = Articolo.objects.create(
            titolo='Titolo 2',
            corpo='Testo random',
            estratto='estratto qualsiasi',
            data_inizio_pubblicazione=datetime.datetime.now() -
            datetime.timedelta(days=5),
            data_fine_pubblicazione=datetime.datetime.now() +
            datetime.timedelta(days=5),
            stato=Articolo.PUBBLICATO)

        segmento_presidenti_no_filtri = ArticoloSegmento.objects.create(
            segmento='I',
            articolo=articolo2,
        )

        self.assertNotEqual(articolo2.corpo, articolo2.estratto)
        self.assertEqual(articolo2.estratto, 'estratto qualsiasi')
        self.assertTrue(articolo2.termina)

        articolo3 = Articolo.objects.create(
            titolo='Titolo 3',
            corpo='Testo qualsiasi',
            estratto='estratto random',
            data_inizio_pubblicazione=datetime.datetime.now() -
            datetime.timedelta(days=5),
            stato=Articolo.PUBBLICATO)

        segmento_volontari_no_filtri = ArticoloSegmento.objects.create(
            segmento='B', articolo=articolo3)

        z = Zip(oggetto=articolo3)
        f1 = NamedTemporaryFile(delete=False, mode='wt')
        f1.write(CONTENUTO_1)
        f1.close()
        z.aggiungi_file(f1.name, NOME_1)
        z.comprimi_e_salva(nome='TestZip.zip')

        self.assertEqual(1, articolo3.allegati.all().count())
        self.assertIn(z, articolo3.allegati.all())

        articolo4 = Articolo.objects.create(
            titolo='Titolo 4',
            corpo='Testo qualsiasi 2',
            estratto='estratto random 2',
            data_inizio_pubblicazione=datetime.datetime.now() -
            datetime.timedelta(days=5),
            data_fine_pubblicazione=datetime.datetime.now() -
            datetime.timedelta(days=2),
            stato=Articolo.PUBBLICATO)

        pubblicati = Articolo.objects.pubblicati()
        bozze = Articolo.objects.bozze()
        self.assertEqual(pubblicati.count(), 2)
        self.assertEqual(bozze.count(), 1)
        self.assertIn(articolo, bozze)
        self.assertNotIn(articolo, pubblicati)
        self.assertNotIn(articolo2, bozze)
        self.assertIn(articolo2, pubblicati)
        self.assertNotIn(articolo3, bozze)
        self.assertIn(articolo3, pubblicati)
        self.assertNotIn(articolo4, bozze)
        self.assertNotIn(articolo4, pubblicati)

        segmenti_volontario = ArticoloSegmento.objects.all(
        ).filtra_per_segmenti(volontario)
        articoli_volontario = segmenti_volontario.oggetti_collegati()
        self.assertNotIn(articolo2, articoli_volontario)
        self.assertIn(articolo3, articoli_volontario)

        segmenti_presidente = ArticoloSegmento.objects.all(
        ).filtra_per_segmenti(presidente)
        articoli_presidente = segmenti_presidente.oggetti_collegati()
        self.assertIn(articolo2, articoli_presidente)
        self.assertIn(articolo3, articoli_presidente)
Exemplo n.º 56
0
 def test_lista_articoli(self):
     articolo = Articolo.objects.create(
         titolo='Titolo 1981',
         corpo='Testo random 1',
         estratto='qualcosa',
         data_inizio_pubblicazione='1981-12-10',
         stato=Articolo.PUBBLICATO)
     articolo2 = Articolo.objects.create(
         titolo='Titolo primo 1980',
         corpo='Testo random 2',
         estratto='un pezzo',
         data_inizio_pubblicazione='1980-06-10',
         stato=Articolo.PUBBLICATO)
     articolo3 = Articolo.objects.create(
         titolo='Titolo secondo 1980',
         corpo='Testo random 3',
         estratto='una parte',
         data_inizio_pubblicazione='1980-12-10',
         stato=Articolo.PUBBLICATO)
     persona = crea_persona()
     persona, sede, app = crea_persona_sede_appartenenza()
     sessione_persona = self.sessione_utente(persona=persona)
     sessione_persona.visit(
         "%s%s" % (self.live_server_url, reverse('lista_articoli')))
     self.assertFalse(
         sessione_persona.is_text_present(
             'Non è stato trovato alcun articolo'))
     self.assertTrue(sessione_persona.is_text_present(articolo.titolo))
     self.assertTrue(sessione_persona.is_text_present(articolo.estratto))
     self.assertTrue(sessione_persona.is_text_present(articolo2.titolo))
     self.assertTrue(sessione_persona.is_text_present(articolo2.estratto))
     self.assertTrue(sessione_persona.is_text_present(articolo3.titolo))
     self.assertTrue(sessione_persona.is_text_present(articolo3.estratto))
     self.assertEqual(
         3, len(sessione_persona.find_by_css('.panel.panel-primary')))
     sessione_persona.fill('q', 'primo')
     sessione_persona.find_by_xpath(
         '//button[@type="submit"]').first.click()
     self.assertEqual(
         1, len(sessione_persona.find_by_css('.panel.panel-primary')))
     self.assertFalse(sessione_persona.is_text_present(articolo.titolo))
     self.assertFalse(sessione_persona.is_text_present(articolo.estratto))
     self.assertTrue(sessione_persona.is_text_present(articolo2.titolo))
     self.assertTrue(sessione_persona.is_text_present(articolo2.estratto))
     self.assertFalse(sessione_persona.is_text_present(articolo3.titolo))
     self.assertFalse(sessione_persona.is_text_present(articolo3.estratto))
     sessione_persona.find_by_xpath(
         '//select[@name="anno"]//option[@value="1980"]').first.click()
     sessione_persona.find_by_xpath(
         '//button[@type="submit"]').first.click()
     self.assertEqual(
         1, len(sessione_persona.find_by_css('.panel.panel-primary')))
     self.assertFalse(sessione_persona.is_text_present(articolo.titolo))
     self.assertFalse(sessione_persona.is_text_present(articolo.estratto))
     self.assertTrue(sessione_persona.is_text_present(articolo2.titolo))
     self.assertTrue(sessione_persona.is_text_present(articolo2.estratto))
     self.assertFalse(sessione_persona.is_text_present(articolo3.titolo))
     self.assertFalse(sessione_persona.is_text_present(articolo3.estratto))
     sessione_persona.fill('q', '')
     sessione_persona.find_by_xpath(
         '//select[@name="anno"]//option[@value="1980"]').first.click()
     sessione_persona.find_by_xpath(
         '//button[@type="submit"]').first.click()
     self.assertEqual(
         2, len(sessione_persona.find_by_css('.panel.panel-primary')))
     self.assertFalse(sessione_persona.is_text_present(articolo.titolo))
     self.assertFalse(sessione_persona.is_text_present(articolo.estratto))
     self.assertTrue(sessione_persona.is_text_present(articolo2.titolo))
     self.assertTrue(sessione_persona.is_text_present(articolo2.estratto))
     self.assertTrue(sessione_persona.is_text_present(articolo3.titolo))
     self.assertTrue(sessione_persona.is_text_present(articolo3.estratto))
     sessione_persona.find_by_xpath(
         '//select[@name="anno"]//option[@value="1980"]').first.click()
     sessione_persona.find_by_xpath(
         '//select[@name="mese"]//option[@value=6]').first.click()
     sessione_persona.find_by_xpath(
         '//button[@type="submit"]').first.click()
     self.assertEqual(
         1, len(sessione_persona.find_by_css('.panel.panel-primary')))
     self.assertFalse(sessione_persona.is_text_present(articolo.titolo))
     self.assertFalse(sessione_persona.is_text_present(articolo.estratto))
     self.assertTrue(sessione_persona.is_text_present(articolo2.titolo))
     self.assertTrue(sessione_persona.is_text_present(articolo2.estratto))
     self.assertFalse(sessione_persona.is_text_present(articolo3.titolo))
     self.assertFalse(sessione_persona.is_text_present(articolo3.estratto))
     sessione_persona.find_link_by_partial_text(
         'Continua a leggere').first.click()
     self.assertFalse(sessione_persona.is_text_present(articolo.titolo))
     self.assertFalse(sessione_persona.is_text_present(articolo.corpo))
     self.assertTrue(sessione_persona.is_text_present(articolo2.titolo))
     self.assertTrue(sessione_persona.is_text_present(articolo2.corpo))
     self.assertFalse(sessione_persona.is_text_present(articolo3.titolo))
     self.assertFalse(sessione_persona.is_text_present(articolo3.corpo))
     self.assertTrue(sessione_persona.is_text_present('Letture'))
Exemplo n.º 57
0
    def test_list_segmenti(self):
        volontario_con_titolo, _, _ = crea_persona_sede_appartenenza()

        # 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)

        qs = NotiziaTestSegmento.objects.all()
        risultato = qs.filtra_per_segmenti(volontario_con_titolo)
        attesi = [
            segmento_tutti_no_filtri, segmento_volontari_no_filtri,
            segmento_volontari_meno_uno_no_filtri,
            segmento_volontari_meno_35_anni_no_filtri
        ]
        self.assertEqual(set(risultato), set(attesi))
Exemplo n.º 58
0
    def test_cancellazione_partecipante(self):
        presidente = crea_persona()
        presidente.email_contatto = email_fittizzia()
        presidente.save()
        crea_utenza(presidente, presidente.email_contatto)
        direttore, sede, appartenenza = crea_persona_sede_appartenenza(presidente=presidente)

        sostenitore = crea_persona()
        sostenitore.email_contatto = email_fittizzia()
        sostenitore.save()
        Appartenenza.objects.create(persona=sostenitore, sede=sede, membro=Appartenenza.SOSTENITORE, inizio=poco_fa())

        altro = crea_persona()

        aspirante1 = crea_persona()
        aspirante1.email_contatto = email_fittizzia()
        aspirante1.codice_fiscale = codice_fiscale()
        aspirante1.save()
        a = Aspirante(persona=aspirante1)
        a.locazione = sede.locazione
        a.save()

        aspirante2 = crea_persona()
        aspirante2.email_contatto = email_fittizzia()
        aspirante2.codice_fiscale = codice_fiscale()
        aspirante2.save()
        a = Aspirante(persona=aspirante2)
        a.locazione = sede.locazione
        a.save()

        aspirante3 = crea_persona()
        aspirante3.email_contatto = email_fittizzia()
        aspirante3.codice_fiscale = codice_fiscale()
        aspirante3.save()
        a = Aspirante(persona=aspirante3)
        a.locazione = sede.locazione
        a.save()

        oggi = poco_fa()
        corso = CorsoBase.objects.create(
            stato=CorsoBase.ATTIVO,
            sede=sede,
            data_inizio=oggi + timedelta(days=7),
            data_esame=oggi + timedelta(days=14),
            progressivo=1,
            anno=oggi.year,
            descrizione='Un corso',
        )

        partecipazione1 = InvitoCorsoBase.objects.create(persona=aspirante1, corso=corso, invitante=presidente)
        partecipazione1.richiedi()
        partecipazione2 = InvitoCorsoBase.objects.create(persona=aspirante2, corso=corso, invitante=presidente)
        partecipazione2.richiedi()
        partecipazione3 = PartecipazioneCorsoBase.objects.create(persona=aspirante3, corso=corso)
        partecipazione3.richiedi()
        partecipazione4 = PartecipazioneCorsoBase.objects.create(persona=sostenitore, corso=corso)
        partecipazione4.richiedi()

        for autorizzazione in partecipazione1.autorizzazioni:
            autorizzazione.concedi(firmatario=presidente, modulo=None)
        for autorizzazione in partecipazione4.autorizzazioni:
            autorizzazione.concedi(firmatario=presidente, modulo=None)

        mail.outbox = []

        self.assertEqual(corso.partecipazioni_confermate_o_in_attesa().count(), 3)
        self.assertEqual(corso.inviti_confermati_o_in_attesa().count(), 1)
        self.assertEqual(corso.numero_partecipazioni_in_attesa_e_inviti(), 2)

        self.client.login(username=presidente.email_contatto, password='******')

        # Test del controllo di cancellazione nei 4 stati del corso
        corso.stato = CorsoBase.TERMINATO
        corso.save()
        response = self.client.get(reverse('aspirante:formazione_iscritti_cancella', args=(corso.pk, sostenitore.pk)))
        self.assertContains(response, "stadio della vita del corso base")

        corso.stato = CorsoBase.ANNULLATO
        corso.save()
        response = self.client.get(reverse('aspirante:formazione_iscritti_cancella', args=(corso.pk, sostenitore.pk)))
        self.assertContains(response, "stadio della vita del corso base")

        corso.stato = CorsoBase.PREPARAZIONE
        corso.save()
        response = self.client.get(reverse('aspirante:formazione_iscritti_cancella', args=(corso.pk, sostenitore.pk)))
        self.assertContains(response, "Conferma cancellazione")

        corso.stato = CorsoBase.ATTIVO
        corso.save()
        response = self.client.get(reverse('aspirante:formazione_iscritti_cancella', args=(corso.pk, sostenitore.pk)))
        self.assertContains(response, "Conferma cancellazione")

        # GET chiede conferma
        response = self.client.get(reverse('aspirante:formazione_iscritti_cancella', args=(corso.pk, sostenitore.pk)))
        self.assertContains(response, "Conferma cancellazione")
        self.assertContains(response, force_text(sostenitore))
        # POST cancella
        response = self.client.post(reverse('aspirante:formazione_iscritti_cancella', args=(corso.pk, sostenitore.pk)))
        self.assertContains(response, "Iscritto cancellato")

        self.assertEqual(corso.partecipazioni_confermate_o_in_attesa().count(), 2)
        self.assertEqual(corso.inviti_confermati_o_in_attesa().count(), 1)
        self.assertEqual(corso.numero_partecipazioni_in_attesa_e_inviti(), 2)
        self.assertEqual(len(mail.outbox), 2)
        self.assertEqual(mail.outbox[0].subject, "Disiscrizione dal Corso Base: %s" % corso)
        self.assertTrue(force_text(corso.sede) in mail.outbox[0].body)
        self.assertTrue(presidente.nome_completo in mail.outbox[0].body)
        self.assertFalse(sostenitore.nome_completo in mail.outbox[0].body)
        self.assertTrue(sostenitore.nome in mail.outbox[0].body)
        self.assertTrue(sostenitore.email_contatto in mail.outbox[0].to)
        self.assertTrue(presidente.email_contatto in mail.outbox[1].to)
        self.assertFalse(presidente.nome_completo in mail.outbox[1].body)
        self.assertTrue(presidente.nome in mail.outbox[1].body)
        self.assertTrue(sostenitore.nome_completo in mail.outbox[1].body)
        mail.outbox = []

        # Cancellare utente non esistente ritorna errore
        response = self.client.post(reverse('aspirante:formazione_iscritti_cancella', args=(corso.pk, altro.pk + 10000)))
        self.assertContains(response, "La persona cercata non è iscritta")

        # Cancellare utente non associato al corso non ritorna errore -per evitare information leak- ma non cambia
        # i dati
        response = self.client.post(reverse('aspirante:formazione_iscritti_cancella', args=(corso.pk, altro.pk)))
        self.assertContains(response, "Iscritto cancellato")

        self.assertEqual(corso.partecipazioni_confermate_o_in_attesa().count(), 2)
        self.assertEqual(corso.inviti_confermati_o_in_attesa().count(), 1)
        self.assertEqual(corso.numero_partecipazioni_in_attesa_e_inviti(), 2)
        self.assertEqual(len(mail.outbox), 0)

        # Cancellare invitato confermato
        response = self.client.post(reverse('aspirante:formazione_iscritti_cancella', args=(corso.pk, aspirante1.pk)))
        self.assertContains(response, "Iscritto cancellato")

        self.assertEqual(corso.partecipazioni_confermate_o_in_attesa().count(), 1)
        self.assertEqual(corso.inviti_confermati_o_in_attesa().count(), 1)
        self.assertEqual(corso.numero_partecipazioni_in_attesa_e_inviti(), 2)
        self.assertEqual(len(mail.outbox), 2)
        self.assertEqual(mail.outbox[0].subject, "Disiscrizione dal Corso Base: %s" % corso)
        self.assertTrue(force_text(corso.sede) in mail.outbox[0].body)
        self.assertTrue(presidente.nome_completo in mail.outbox[0].body)
        self.assertFalse(aspirante1.nome_completo in mail.outbox[0].body)
        self.assertTrue(aspirante1.nome in mail.outbox[0].body)
        self.assertTrue(aspirante1.email_contatto in mail.outbox[0].to)
        self.assertTrue(presidente.email_contatto in mail.outbox[1].to)
        self.assertFalse(presidente.nome_completo in mail.outbox[1].body)
        self.assertTrue(presidente.nome in mail.outbox[1].body)
        self.assertTrue(aspirante1.nome_completo in mail.outbox[1].body)
        mail.outbox = []

        # Cancellare invitato in attesa
        response = self.client.post(reverse('aspirante:formazione_iscritti_cancella', args=(corso.pk, aspirante2.pk)))
        self.assertContains(response, "Iscritto cancellato")

        self.assertEqual(corso.partecipazioni_confermate_o_in_attesa().count(), 1)
        self.assertEqual(corso.inviti_confermati_o_in_attesa().count(), 0)
        self.assertEqual(corso.numero_partecipazioni_in_attesa_e_inviti(), 1)
        self.assertEqual(len(mail.outbox), 2)
        self.assertEqual(mail.outbox[0].subject, "Annullamento invito al Corso Base: %s" % corso)
        self.assertTrue(force_text(corso.sede) in mail.outbox[0].body)
        self.assertTrue(aspirante2.email_contatto in mail.outbox[0].to)
        self.assertTrue(presidente.email_contatto in mail.outbox[1].to)
        mail.outbox = []

        # Cancellare partecipante in attesa
        response = self.client.post(reverse(
            'aspirante:formazione_iscritti_cancella', args=(corso.pk,
                                                        aspirante3.pk)))
        self.assertContains(response, "Iscritto cancellato")

        self.assertEqual(corso.partecipazioni_confermate_o_in_attesa().count(), 0)
        self.assertEqual(corso.inviti_confermati_o_in_attesa().count(), 0)
        self.assertEqual(corso.numero_partecipazioni_in_attesa_e_inviti(), 0)
        self.assertEqual(len(mail.outbox), 2)
        self.assertEqual(mail.outbox[0].subject, "Disiscrizione dal Corso Base: %s" % corso)
        self.assertTrue(force_text(corso.sede) in mail.outbox[0].body)
        self.assertTrue(aspirante3.email_contatto in mail.outbox[0].to)
        self.assertTrue(presidente.email_contatto in mail.outbox[1].to)
        mail.outbox = []