[Plone-IT] Uso funzioni

Basa valeriofioresi a gmail.com
Lun 3 Set 2007 10:16:09 UTC


La mia situazione iniziale era la seguente:

Ho un prodotto dal nome CTY all'interno del quale ho un prodotto di nome
Increment.

Volevo estrapolare Increment portandolo all'esterno di CTY, nel farlo ho
riscontrato problemi a chiamare la funzione Increment da CTY.

Modificando Increment cosi':
security.declarePublic('Inc')
    def Inc(self,ma,mi):
        """
        """
        val = 0
        portal = getToolByName(self,'portal_url').getPortalObject()
        cat = self.portal_catalog
        query = {}
        query["Type"] = "Increment"
        results = cat.searchResults(**query)
        for result in results:
            obj = result.getObject()
            if (obj.major == ma) and (obj.minor == mi):
                    if (obj.value > val):
                        val = obj.value

        if (val == 0):
            newId = self.generateUniqueId('Increment')
            portal.invokeFactory("Increment", id = newId, title =
"Increment_Item")
            newInc = getattr(self, newId)
            newInc.major = ma
            newInc.minor = mi + str("_")
            newInc.value = 1
            return newInc
        else:
            newId = self.generateUniqueId('Increment')
            portal.invokeFactory("Increment", id = newId, title =
"Increment_Item")
            newInc = getattr(self, newId)
            newInc.major = ma
            newInc.minor = mi + str("_")
            newInc.value = val + 1
            return newInc

e CTY cosi':

security.declarePublic('at_post_create_script')
    def at_post_create_script(self):
        """
        """
        container = self.aq_inner.aq_parent
        portal = getToolByName(self,'portal_url').getPortalObject()
        uid = self.generateUniqueId('Increment')
        portal.invokeFactory("Increment", id = uid)
        valerio = getattr(self, uid)
        pid = valerio.Inc("Project",container.title)
        self.setTitle(str(pid.major) + str(pid.minor) + str(pid.value))
        pid = self.title
        self.Create_Event_Item(pid,"Create",self.getOwner())
        self.reindexObject()

posso rihiamare correttamente Increment e creare gli oggetti in modo
automatico.

Il problema principalmente verteva sull'uso improprio del comando
invokeFactory.

Adesso non è ancora perfetto ma funziona.

Thanks to all

Valerio
-- 
View this message in context: http://www.nabble.com/Uso-funzioni-tf4346895s21526.html#a12459389
Sent from the Plone - Italy mailing list archive at Nabble.com.





Maggiori informazioni sulla lista Plone-IT