Personalizzare i singoli content type
medio
La personalizzazione dei singoli content types ha il vantaggio di essere una modifica meno invasiva della precedente nonché permette di avere un controllo su ogni installazione di Plone qualora coesistessero più siti plone sulla medesima istanza.
Per questa personalizzazione si è scelto di utilizzare il prodotto ATCustomTypes che contiene uno scheletro di base che ci permetterà di risparmiare tempo.
Tralasciando i dettagli di funzionamento di questo prodotto, diciamo solo che ATCustomTypes permette di modificare i content types di default di plone senza intervenire sul codice di ATContentTypes.
All'interno del prodotto ATCustomTypes troviamo la cartella content che contiene le definizioni dei nostri content types tra cui:
-
file.py
-
folder.py
-
image.py
di default questi file non fanno nient'altro che copiare la struttura originale dei content types cui fanno riferimento.
Intervenendo su queste impostazioni possiamo quindi modificare il comportamento dei contenuti che ci interessano.
Per impostare la dimensione massima dei file caricati su plone è sufficiente modificare lo schema del contentype aggiungendo l'attributo maxsize
Apriamo per esempio file.py per modificare il comportamento di ATFile
Per modificare la dimensione massima dei file caricati a 1Mb dobbiamo intervenire sul campo 'file' di questo ContentType.
Aggiungiamo quindi dopo la definizione dello schema:
schema = DefaultSchema.copy()
le seguenti linee di codice
field = schema['file']
field.maxsize = 1.0
field.registerLayer('maxsize', field.maxsize)
La prima riga definisce il campo da modificare, la seconda imposta il valore maxsize in Mb l'ultima riga registra il layer all'interno dello schema.
Per modificare ATImage apriamo il file image.py nella medesima cartella
e aggiungiamo le seguenti linee
field = schema['image']
field.maxsize = 1.0
field.registerLayer('maxsize', field.maxsize)
Allo stesso modo possiamo modificare newsitem.py per limitare l'upload dell'immagine allegata alle news.
Per questi ultimi due content types possiamo inoltre modificare la dimensione massima del ridimensionamento delle immagini caricate, come abbiamo fatto nel precedente esempio, modificando l'attributo max_size:
field = schema['image']
field.max_size = (640,480)
Le immagini caricate dagli utenti del portale che superano le dimensioni qui definite saranno ridimensionate di conseguenza.
Attraverso ATCustomTypes possono essere impostate molte altre modifiche ai contenuti di default di plone di cui si parlerà magari un'altra volta.
Buon lavoro!
