[Plone-IT] cachare un risultato

Yuri yurj a alfa.it
Gio 28 Gen 2010 11:23:28 UTC


oppure seguire questa strada:

http://plone.org/documentation/manual/developer-manual/archetypes/appendix-practicals/b-org-creating-content-types-the-plone-2.5-way/annotations

(dovrebbe funzionare anche in plone 3, no?)


Yuri ha scritto:
> Luca ha scritto:
>> 2010/1/28 Yuri <yurj a alfa.it>:
>>  
>>> Salve,
>>>
>>> ho un content type con un campo con un metodo ridefinito da me per fare
>>> alcune operazioni, connettersi da qualche parte e produrre un 
>>> risultato.
>>>
>>> Siccome è *molto* raro che il risultato cambi, come posso comportarmi?
>>>
>>> Ho visto che molte egg salvano il risultato in un attributo 
>>> (permanente ?)
>>> all'interno della classe, per poi riutilizzarlo se delle condizioni si
>>> verificano. Quello che mi viene in mente è:
>>>
>>> - se il valore in cache è nullo, calcola
>>> - se c'è un valore, mostralo
>>> - se è cambiata la data di modifica del contenuto, ricalcola il valore.
>>> - possibilità di annullare "tutti" i valori, in modo che su tutti i
>>> contenuti venga ricalcolato.
>>>
>>> Avete qualche esempio da mostrarmi? Avete suggerimenti?
>>>
>>>     
>>
>> Ciao,
>>
>> ho usato molte volte con successo il prodotto plone.memoize; a parte
>> il noto decoratore @memoize che si vede un po' ovunque in giro per
>> Plone, ha tante altre funzionalità interessanti proprio per casi come
>> questi (ramcache ad esempio).
>>
>>   
>
> Vero, ma se riavvio il server, perdo tutto, no? :)
>
> Stavo pensando di utilizzare il campo stesso. il campo si chiama dc ed 
> è definito così:
>
>    dc = atapi.ATFieldProperty('dc')
>
> poi ho fatto una funzione
>
> def getDc(self):
>
> * fa dei calcoli e ritorna dell'html *
>
> in questo modo, il mio contenuto stampa l'html che volevo
>
> (Ovviamente mi direte: ma perché non hai usato un template apposta? 
> Siccome i calcoli sono molti, è più pratico così).
>
> Ora, nel campo dc, in questo modo, non salvo un bel nulla. Essendo 
> persistente, potrei utilizzarlo per salvare il risultato.
>
> Quindi dovrei modificare getDc in un qualcosa tipo:
>
> campo = self.getField('dc').get()
> if campo == None or campo == '':
>  * fai calcolo *
>  self.getField('dc').set(value=risultato) (funziona? Ogni volta devo 
> fare un sacco di prove per trovare la sintassi giusta :D )
> else:
> return campo
>
> Ha un senso?
>
> Oppure posso usare un attributo della classe che non sia un campo 
> archetype e fare i controlli su quello?
>
> _______________________________________________
> Plone-IT mailing list
> Plone-IT a lists.plone.org
> http://lists.plone.org/mailman/listinfo/plone-it
> http://www.nabble.com/Plone---Italy-f21728.html





Maggiori informazioni sulla lista Plone-IT