Пример #1
0
 def genera_pdf(self):
     z = Zip(oggetto=self)
     z.aggiungi_file(self.genera_scheda_valutazione().file.path)
     if self.idoneo:
         z.aggiungi_file(self.genera_attestato().file.path)
     z.comprimi_e_salva("%s.zip" % self.persona.codice_fiscale)
     return z
Пример #2
0
    def genera_pdf_firme(self):
        """
        Genera il fogli firme delle lezioni del corso.
        """
        def key_cognome(elem):
            return elem.cognome

        iscritti = [
            partecipazione.persona
            for partecipazione in self.partecipazioni_confermate()
        ]

        archivio = Zip(oggetto=self)
        for lezione in self.lezioni.all():

            pdf = PDF(oggetto=self)
            pdf.genera_e_salva(
                nome="Firme lezione %s.pdf" % lezione.nome,
                corpo={
                    "corso": self,
                    "iscritti": sorted(iscritti, key=key_cognome),
                    "lezione": lezione,
                    "data": lezione.inizio,
                },
                modello="pdf_firme_lezione.html",
            )
            archivio.aggiungi_file(file_path=pdf.file.path, nome_file=pdf.nome)

        archivio.comprimi_e_salva(nome="Fogli firme %s.zip" % self.nome)

        return archivio
Пример #3
0
    def download(self):
        """ Returns a HTTP response """

        self.archive = Zip(oggetto=self.corso)

        if self.request.GET.get('download_single_attestato'):
            return self._download_single_attestato()
        else:
            self._generate()
            self.archive.comprimi_e_salva(
                nome="Corso %d-%d.zip" %
                (self.corso.progressivo, self.corso.anno))
            return redirect(self.archive.download_url)
Пример #4
0
def aspirante_corso_base_report_schede(request, me, pk):
    corso = get_object_or_404(CorsoBase, pk=pk)
    if not me.permessi_almeno(corso, MODIFICA):
        return redirect(ERRORE_PERMESSI)

    archivio = Zip(oggetto=corso)
    for p in corso.partecipazioni_confermate():

        # Genera la scheda di valutazione.
        scheda = p.genera_scheda_valutazione()
        archivio.aggiungi_file(
            scheda.file.path,
            "%s - Scheda di Valutazione.pdf" % p.persona.nome_completo)

        # Se idoneo, genera l'attestato.
        if p.idoneo:
            attestato = p.genera_attestato()
            archivio.aggiungi_file(
                attestato.file.path,
                "%s - Attestato.pdf" % p.persona.nome_completo)

    archivio.comprimi_e_salva(nome="Corso %d-%d.zip" %
                              (corso.progressivo, corso.anno))
    return redirect(archivio.download_url)
Пример #5
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)