portlet reference from hash code

Nicola Senno biancosteso at yahoo.it
Sat Oct 6 18:16:54 UTC 2007

Hi mates

sorry for the delay in replying but I had to put this project on hold for  a
At the moment there isn't any existing tool kit available I can use and I
kind had to start from scratch.

The solution that I've been working on so far is the following:

first I'm creating a list of empty objects

portlets= { 'login'                : login.Assignment(),
            'news'                 : news.Assignment(count=5),
            'events'               : events.Assignment(count=5),
            'navigation'           : navigation.Assignment(),
            'calendar'             : calendar.Assignment(),
            'review'               : review.Assignment(),
            'recent'               : recent.Assignment(count=5),

then I query the portlet-manager using the portlethash obtained from kss as
shown below to retrive the name of the portlet actually instantiated by
portal. At this point I can match the right object in portlets list
(objPortlet = portlets.get(item, None)) and use it to call the adapter
(portlet = IDynamicMenu(objPortlet)).

class DragSupport(PloneKSSView):

    """send a reply to browser via kss """
    def getReply(self, urlObject = None,  urlDest = None,  portlethash =
	if portlethash is not None:
		info = unhashPortletInfo(portlethash)
		for item in portlets:
			if item == info['name']:
				objPortlet = portlets.get(item, None)
		portlet = IDynamicMenu(objPortlet)

So far so good

Now when I run these pieces of code and the class  
http://www.nabble.com/file/p13076197/navigationMenu.py navigationMenu.py 
instantiates an object the following errors are posted:

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.kssdnd.browser.dragSupport, line 54, in getReply
  Module Products.kssdnd.browser.navigationMenu, line 73, in getMenu
  Module Products.kssdnd.browser.navigationMenu, line 60, in getObject
  Module Products.kssdnd.browser.navigationMenu, line 47, in getObjectRef
  Module Products.CMFCore.utils, line 123, in getToolByName
AttributeError: portal_catalog

My best guess is that the object is created whithout context, although I
can't undesrtand why this is happening. Is it because the objects in list
portlets are empty?

any help will be very much appreciated. 


Martin Aspeli wrote:
> Hi Nicola,
>> I'm now developing a little tool using plone 3 and kss, something like
>> "drag
>> and drop" behavour.
> Cool - I'm interested in that. Which toolkit are you using?
>> I need to obtain a portlet reference by its hash code.
> <snip code />
>> How to obtain this portlet reference? Varius portlet must have different
>> menu ;)
> Are you asking how to get a portlet hash, or how to turn a portlet hash 
> into an actual portlet?
> If you have a hash, you can get a portlet info dict from 
> plone.portlets.utils.unhashPortletInfo()
> With this info, you can call 
> plone.app.portlets.utils.assignment_from_key() which returns an 
> IPortletAssignment.
> Look at plone.app.portlets.browser.kss to see how it's used. If you need 
> to render the assignment, multi-adapt assignment.data to IPortletRenderer.
> The hashes themselves are stored in the page template. You can use a 
> kssAttr() type attribute to find them and send them to the server-side 
> action.
> Martin
> -- 
> Acquisition is a jealous mistress
> _______________________________________________
> Product-Developers mailing list
> Product-Developers at lists.plone.org
> http://lists.plone.org/mailman/listinfo/product-developers

View this message in context: http://www.nabble.com/portlet-reference-from-hash-code-tf4269138s20094.html#a13076197
Sent from the Product Developers mailing list archive at Nabble.com.

More information about the Product-Developers mailing list