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