Skip to content
Alfio Emanuele edited this page Nov 28, 2015 · 4 revisions

Questa pagina serve per illustrare il funzionamento della libreria PDF in Jorvik.

Classe PDF (da base.files)

  • Costruttore. La classe PDF estende Allegato. Per scelta di progettazione, ogni Allegato deve essere associato ad un oggetto qualsiasi (un qualsiasi modello).
    • Se il file non ha motivo di permanere o non e' correlato a nessun oggetto, e' possibile associarlo all'utente che ha creato il file. es. z = PDF(oggetto=me).
    • Se il file e' un allegato ad un oggetto, esempio un oggetto Attivita di nome att, si puo' usarere p = PDF(oggetto=att) per un allegato a una attivita'. Questo sara' automaticamente ottenibile da att.allegati.
  • PDF.genera_e_salva(nome, scadenza, corpo, modello, orientamento, formato) genera il PDF e salva il documento come Allegato.
    • nome e' il nome del document PDF (per uso come allegato). Se non specificato, File.pdf.
    • scadenza e' un timestamp per la scadenza del file. Se non specificato, domani() viene usato.
    • corpo e' un dizionario che contiene le sostituzioni da fare nel template del PDF.
    • modello e' il modello PDF da utilizzare.
    • orientamento e' uno tra PDF.ORIENTAMENTO_ORIZZONTALE e PDF_ORIENTAMENTO_VERTICALE.
  • PDF.download_url, una volta salvato il file, conterra' l'URL completo per il download del documento.
    • Questo puo' essere utile in una vista per ritornare un redirect allo scaricamento del file, es. return redirect(z.download_url).

Esempio

base/templates/pdf_utente_estensione.html:

{% extends 'pdf_standard.html' %}

{% block corpo %}
  <p>Il volontario {{ estensione.persona.nome_completo }} ha richiesto una estensione
     presso {{ estensione.destinazione.nome }} il giorno {{ estensione.creazione }}.</p>

{% endblock %}
@pagina_privata
def utente_estensione_pdf(request, me, pk=None):

    estensione = get_object_or_404(Estensione, pk=pk)  # Ottengo l'estensione

    pdf = PDF(oggetto=estensione)  # Associo un oggetto al PDF

    pdf.genera_e_salva(
      nome="Estensione %s.pdf" % (estensione.persona.nome_completo, ),
      corpo={
        "estensione": estensione
      },
      modello="pdf_utente_estensione.html",
    )

    return redirect(pdf.download_url)  # Redirect (download immediato)