On Tuesday 03 November 2009, Giacomo Zanobini wrote:
> accanto ai contenuti, vorrei visualizzare la data di pubblicazione (se è
> già stato pubblicato, altrimenti la scritta "mai pubblicato") tra
> parentesi quadre
>
> /<tal:block tal:define="data_di_pubblicazione
> python:DateTime(item.EffectiveDate).strftime('[%d/%m/%Y]');/
>
>
> questo codice funziona se l'oggetto è stato pubblicato, ma causa un
> errore se l'oggetto non è mai stato pubblicato, perché non esiste
> l'attributo EffectiveDate.
>
> allora pensavo di fare così:
> /<tal:block tal:define="data_di_pubblicazione
> python:test(item.EffectiveDate,
> DateTime(item.EffectiveDate).strftime('[%d/%m/%Y]'), '[mai pubblicato]');/
> ma questo dà errore negli stessi casi del precedente
>
>
>
> oppure così:
> / <tal:block tal:define="data_di_pubblicazione
> python:test(item.EffectiveDate != None,
> DateTime(item.EffectiveDate).strftime('[%d/%m/%Y]'), '[mai pubblicato]');/
> questo ancora peggio: mi dice "Unable to parse ('None',), {}"
>
>
> dove sto sbagliando?
>
>
> Giacomo
Stai cercando di fare una cosa che è bene fare in uno script python (si passa
item come parametro):
1.
try:
return DateTime(item.EffectiveDate).strftime('[%d/%m/%Y]')
except:
return 'mai pubblicato'
2.
if item.EffectiveDate is not None:
return DateTime(item.EffectiveDate).strftime('[%d/%m/%Y]')
else:
return 'mai pubblicato'
il secondo codice è migliore perchè la gestione dell'eccezione è comunque
computazionalmente più pesante, da controllare la condizione, potrebbe
essere:
hasattr(item, 'EffectiveDate')
oppure
item.EffectiveDate != ''
Se il template è una browser view si mette il codice come metodo.
--
Riccardo Lemmi Email: [email protected]
Reflab S.r.l. - Plone Design, Development and Consulting
Phone: +39 349 4620820 http://www.reflab.it
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Plone-IT mailing list [email protected] http://lists.plone.org/mailman/listinfo/plone-it http://www.nabble.com/Plone---Italy-f21728.html
