problema con i valori nulli

3 messages Options
Embed this post
Permalink
jack1973

problema con i valori nulli

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
 
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


_______________________________________________
Plone-IT mailing list
[hidden email]
http://lists.plone.org/mailman/listinfo/plone-it
http://www.nabble.com/Plone---Italy-f21728.html
Yuri-11

Re: problema con i valori nulli

Reply Threaded More More options
Print post
Permalink
Giacomo Zanobini ha scritto:

>  
> 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?
la condizione viene valutata cmq, darà sempre errore. Quindi devi
mettere un tal:condition e fare due blocchi. Oppure calcolare in quale
caso sei e segnarlo in una variabile, e usare il test con quella.

>
>
> Giacomo
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Plone-IT mailing list
> [hidden email]
> http://lists.plone.org/mailman/listinfo/plone-it
> http://www.nabble.com/Plone---Italy-f21728.html


_______________________________________________
Plone-IT mailing list
[hidden email]
http://lists.plone.org/mailman/listinfo/plone-it
http://www.nabble.com/Plone---Italy-f21728.html
Riccardo Lemmi

Re: problema con i valori nulli

Reply Threaded More More options
Print post
Permalink
In reply to this post by jack1973
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:   [hidden email]
Reflab S.r.l. - Plone Design, Development and Consulting
Phone: +39 349 4620820                         http://www.reflab.it


_______________________________________________
Plone-IT mailing list
[hidden email]
http://lists.plone.org/mailman/listinfo/plone-it
http://www.nabble.com/Plone---Italy-f21728.html

signature.asc (196 bytes) Download Attachment