[Plone-IT] creare una classe al volo in zope

Yuri yurj a alfa.it
Mer 5 Mar 2008 11:20:02 UTC


Fabrizio Reale wrote:
> Alle mercoledì 5 marzo 2008, Yuri ha scritto:
>   
>> Ciao,
>>
>>  nel tentativo di catalogare oggetti virtuali, in modo da usare il
>> catalogo di zope come db, in un python script ho fatto questo:
>>
>> ========
>> class Autore:
>> " classe per il catalogo "
>>
>> def set_autore(self, autore=''):
>>  """ setta l'autore """
>>  self.autore=autore
>>
>> def set_variante(self, variante=''):
>>  """ setta l'autore """
>>  self.variante = variante
>>
>> def variante(self):
>>  """ ritorna la variante """
>>  return self.variante
>>
>> def set_qualificazione(self, qualificazione=''):
>>  """ setta la qualificazione """
>>  self.qualificazione = qualificazione
>>
>> def qualificazione(self):
>>  """ ritorna la qualificazione """
>>  return self.qualificazione
>>
>>
>> un_autore = Autore()
>> un_autore.set_autore('prova')
>> un_autore.set_variante('una variante')
>> un_autore.set_qualificazione('una qualificazione')
>>
>> print un_autore.variante()
>> print un_autore.qualificazione()
>>
>> return printed
>>
>> ======
>>
>> Ovviamente non va:
>>
>> *Error Type: Unauthorized*
>> *Error Value: You are not allowed to access set_autore in this context*
>>
>> Ho visto che un zsql method può associare i risultati di una query a una
>> classe, ma non ho db relazionali (i dati li prendo da un'altra parte).
>> Un external method può caricare solo una funzione, non una classe...
>> devo per forza scrivere un prodotto?
>>     
>
> Non usare metodi, ma solo attributi per la tua classe.
> Fabry
>   

Mmmm e posso accedere agli attributi? Mi pare di no:

*Error Type: TypeError*
*Error Value: attribute-less object (assign or del)*
*
codice:

===

class Autore:
 " classe per il catalogo "

 autore = ''
 variante = ''
 qualificazione = ''

il_file = context.DataBase.fonotecapref['autori2']
autori = str(il_file)

for autore in autori.split('\n'):
 a = Autore()
 toks = autore.split('|')
 if len(toks) > 2:
  variante = toks[2].strip()
  qualificazione = toks[1]
 else:
  variante = '**'
  qualificazione = '**'
 aut = toks[0].strip()
 a.autore = aut
 a.variante = variante
 a.qualificazione = qualificazione
 context.catalogo_autori.catalog_object(a, aut)


===

creando un external method per la sola assegnazione degli attributi, può 
funzionare?
*




Maggiori informazioni sulla lista Plone-IT