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