Skip to content
Alfio Emanuele edited this page Jul 17, 2015 · 3 revisions

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

Classe Zip (da base.files)

  • Costruttore. La classe Zip 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 = Zip(oggetto=me).
    • Se il file e' un allegato ad un oggetto, esempio un oggetto Attivita di nome att, si puo' usarere z = Zip(oggetto=att) per un allegato a una attivita'. Questo sara' automaticamente ottenibile da att.allegati.
  • Zip.aggiungi_file(file_path, nome_file) mette un file in coda per la compressione nello ZIP.
    • file_path e' il percorso completo al file da aggiungere (es. /tmp/file.txt). Se non esiste, una eccezione FileNotFound viene lanciata.
    • nome_file e' il nome che il file assumera' all'interno dell'archivio, una volta compresso. Se non specificato, il nome del file originale viene preservato.
  • Zip.comprimi_e_salva(nome, scadenza) comprime i file in coda e salva l'archivio come Allegato.
    • nome e' il nome dell'archivio (per uso come allegato). Se non specificato, Archivio.zip.
    • scadenza e' un timestamp per la scadenza del file. Se non specificato, domani() viene usato.
  • Zip.download_url, una volta salvato il file, conterra' l'URL completo per il download dell'archivio.
    • Questo puo' essere utile in una vista per ritornare un redirect allo scaricamento del file, es. return redirect(z.download_url).

Esempio

@pagina_privata
def utente_pagina_zip(request, me):

    z = Zip(oggetto=me)  # Creo un archivio associato a me

    for d in me.documenti.all():  # Per ogni mio documento
        z.aggiungi_file(d.file.path)  # Aggiungo il file allo ZIP

    z.comprimi_e_salva(nome='Documenti.zip')  # Comprimo il file
    return redirect(z.download_url)  # Redirect (download immediato)