On Thursday 01 July 2010, Manuele wrote:
> Grazie Riccardo e Silvio,
>
> per versi differenti ho trovato le risposte illuminanti, ho fatto un po'
> di ricerca anche su schemaextender, ma non ho ancora trovato una
> soluzione. Concettualmente mi andrebbe molto bene la soluzione con
> _updateSchema(), non fosse che...
>
> 2010-07-01 11:35:42 ERROR Zope.SiteErrorLog
> http://gwserver:3031/spturismo/it/prova-30062010/portal_factory/layerconf/l
>ayerconf.2010-07-01.5505173728/atct_edit Traceback (innermost last):
>    Module ZPublisher.Publish, line 119, in publish
>    Module ZPublisher.mapply, line 88, in mapply
>    Module ZPublisher.Publish, line 42, in call_object
>    Module Products.CMFPlone.FactoryTool, line 368, in __call__
>    Module Products.CMFPlone.FactoryTool, line 152, in __getitem__
>    Module Products.CMFPlone.PloneFolder, line 348, in invokeFactory
>    Module Products.CMFCore.TypesTool, line 716, in constructContent
>    Module Products.CMFCore.TypesTool, line 276, in constructInstance
>    Module Products.CMFCore.TypesTool, line 450, in _constructInstance
>    Module gisclient.conf.content.layerconf, line 5, in addlayerconf
>    Module gisclient.conf.content.layerconf, line 95, in __init__
>    Module gisclient.conf.content.layerconf, line 99, in addSchema
>    Module Products.Archetypes.BaseObject, line 893, in _updateSchema
> AttributeError: 'str' object has no attribute 'set'

Per questo non ero sicuro al 100%, quando si crea un oggetto viene chiamato 
initializeArchetype, devi fare qualche prova per capire cosa chiamare 
effettivamente.

> Il mio problema _vero_ è riuscire a passare all'oggetto creato
> informazioni sul suo "padre" (ovvero oggetto folderish che lo contiene).
> E spostando la definizione dello schema all'interno dell'__init__ avrei
> a disposizione l'oggetto "self", quindi self.__parent__ e tutti i suoi
> attributi (!!)
>
> Non mi pare che con schemaextender il problema venga risolto più
> facilmente ma rischio solo di ritrovarmelo da un'altra parte.
>
> Grazie ancora per l'attenzione
>
> a presto
>
>       Manuele
> ...

Se hai bisogno di utilizzare un valore del padre nel figlio puoi usare due 
strade ComputedField oppure definire il 'get' relativo al field:

def getMyField(self):
   field = self.getField('myfield')
   return field.get(self) or self.aq_parent.getParentField() 

Scritto a memoria quindi da controllare. Se leggi solo il campo e non lo 
modifichi meglio Computed Field.
-- 
Riccardo Lemmi                           Email:   [email protected]
Reflab S.r.l. - Plone Design, Development and Consulting
Phone: +39 349 4620820                         http://www.reflab.com

Attachment: 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

Rispondere a