Ticket #12376 (closed Bug: fixed)

Opened 2 years ago

Last modified 2 years ago

manage portlets MUST NEVER show up when creating content/inside of portal_factory

Reported by: runyaga Owned by: fafhrd
Priority: critical Milestone: 4.1
Component: Templates/CSS Version:
Keywords: portlets portal_factory ux ploud Cc: runyaga, fafhrd

Description (last modified by runyaga) (diff)

How to repro:

  • If you have visible portlets on /
  • If you create a AT content, say /portal_factory/Event/...
  • On the New/Edit screen of the Event you will see 'Manage portlets' links.
  • If you click on the 'Manage portlets' link you will get a traceback.

Fixed:  https://github.com/runyaga/plone.app.portlets/commit/a394fd148600383d9492f8c424b63794cfaf2ee2

Traceback
Traceback (most recent call last):
  File ".../src/ploud.zope/ploud/zope/publisher.py", line 205, in publish_module
    response = _publish(request, 'ploud_application_%s'%name)
  File ".../eggs/Zope2-2.13.10-py2.7.egg/ZPublisher/WSGIPublisher.py", line 195, in publish
    bind=1,
  File ".../eggs/Zope2-2.13.10-py2.7.egg/ZPublisher/mapply.py", line 77, in mapply
    if debug is not None: return debug(object,args,context)
  File ".../eggs/Zope2-2.13.10-py2.7.egg/ZPublisher/Publish.py", line 46, in call_object
    result=apply(object,args) # Type s<cr> to step into published object.
  File ".../eggs/Products.CMFPlone-4.1.2-py2.7.egg/Products/CMFPlone/FactoryTool.py", line 453, in __call__
    self.REQUEST, bind=1)
  File ".../eggs/Zope2-2.13.10-py2.7.egg/ZPublisher/mapply.py", line 77, in mapply
    if debug is not None: return debug(object,args,context)
  File ".../eggs/Zope2-2.13.10-py2.7.egg/ZPublisher/Publish.py", line 46, in call_object
    result=apply(object,args) # Type s<cr> to step into published object.
  File ".../eggs/Zope2-2.13.10-py2.7.egg/Products/Five/browser/metaconfigure.py", line 476, in __call__
    return self.index(*args, **kw)
  File ".../eggs/Zope2-2.13.10-py2.7.egg/Products/Five/browser/pagetemplatefile.py", line 125, in __call__
    return self.im_func(im_self, *args, **kw)
  File ".../eggs/Zope2-2.13.10-py2.7.egg/Products/Five/browser/pagetemplatefile.py", line 59, in __call__
    sourceAnnotations=getattr(debug_flags, 'sourceAnnotations', 0),
  File ".../eggs/zope.pagetemplate-3.6.3-py2.7.egg/zope/pagetemplate/pagetemplate.py", line 132, in pt_render
    strictinsert=0, sourceAnnotations=sourceAnnotations
  File ".../eggs/five.pt-2.2.0-py2.7.egg/five/pt/engine.py", line 93, in __call__
    return self.template.render(**kwargs)
  File ".../eggs/z3c.pt-2.1.4-py2.7.egg/z3c/pt/pagetemplate.py", line 147, in render
    return base_renderer(**context)
  File ".../eggs/Chameleon-2.5.3-py2.7.egg/chameleon/zpt/template.py", line 213, in render
    return super(PageTemplate, self).render(**vars)
  File ".../eggs/Chameleon-2.5.3-py2.7.egg/chameleon/template.py", line 193, in render
    raise_with_traceback(exc, tb)
  File ".../eggs/Chameleon-2.5.3-py2.7.egg/chameleon/template.py", line 179, in render
    self._render(stream, econtext, rcontext)
  File "3c87430903806422d29d791bdd74175ec650a0f7.py", line 787, in render
  File "6f61cd8adc3eee211947d905a2427b7be121b397.py", line 2212, in render_master
  File ".../eggs/five.pt-2.2.0-py2.7.egg/five/pt/expressions.py", line 179, in __call__
    return cp.render()
  File ".../eggs/plone.app.portlets-2.1.6-py2.7.egg/plone/app/portlets/browser/editmanager.py", line 68, in render
    return self.template()
  File ".../eggs/Zope2-2.13.10-py2.7.egg/Products/Five/browser/pagetemplatefile.py", line 125, in __call__
    return self.im_func(im_self, *args, **kw)
  File ".../eggs/Zope2-2.13.10-py2.7.egg/Products/Five/browser/pagetemplatefile.py", line 59, in __call__
    sourceAnnotations=getattr(debug_flags, 'sourceAnnotations', 0),
  File ".../eggs/zope.pagetemplate-3.6.3-py2.7.egg/zope/pagetemplate/pagetemplate.py", line 132, in pt_render
    strictinsert=0, sourceAnnotations=sourceAnnotations
  File ".../eggs/five.pt-2.2.0-py2.7.egg/five/pt/engine.py", line 93, in __call__
    return self.template.render(**kwargs)
  File ".../eggs/z3c.pt-2.1.4-py2.7.egg/z3c/pt/pagetemplate.py", line 147, in render
    return base_renderer(**context)
  File ".../eggs/Chameleon-2.5.3-py2.7.egg/chameleon/zpt/template.py", line 213, in render
    return super(PageTemplate, self).render(**vars)
  File ".../eggs/Chameleon-2.5.3-py2.7.egg/chameleon/template.py", line 193, in render
    raise_with_traceback(exc, tb)
  File ".../eggs/Chameleon-2.5.3-py2.7.egg/chameleon/template.py", line 179, in render
    self._render(stream, econtext, rcontext)
  File "f7122b43f19ff877e2079d5f35bc5c352f7fcdc6.py", line 455, in render
  File ".../eggs/five.pt-2.2.0-py2.7.egg/five/pt/expressions.py", line 139, in __call__
    return base()
  File ".../eggs/plone.app.portlets-2.1.6-py2.7.egg/plone/app/portlets/browser/editmanager.py", line 290, in inherited_portlets
    assignable = getMultiAdapter((context, self.manager), ILocalPortletAssignmentManager)
  File ".../eggs/zope.component-3.11.0-py2.7.egg/zope/component/_api.py", line 109, in getMultiAdapter
    raise ComponentLookupError(objects, interface, name)
ComponentLookupError: ((<TempFolder at /Plone/portal_factory/Event>, <plone.portlets.manager.PortletManager object at 0xadde206c>), <InterfaceClass plone.portlets.interfaces.ILocalPortletAssignmentManager>, u'')

 - Expression: "view/inherited_portlets"
 - Filename:   .../eggs/plone.app.portlets-2.1.6-py2.7.egg/plone/app/portlets/browser/templates/edit-manager-contextual.pt
 - Location:   (47:36)

 - Source:     ... lock define="portlets view/inherited_portlets;"
                                         ^^^^^^^^^^^^^^^^^^^^^^^
 - Arguments:  status: <NoneType - at 0xb72035e0L>
               repeat: {...} (0)
               template: <ViewPageTemplateFile - at 0xbd478e6cL>
               views: <ViewMapper - at 0xad5ffe0cL>
               modules: <instance - at 0xb9e33f4cL>
               args: <tuple - at 0xb6d1c02cL>
               here: <ImplicitAcquisitionWrapper event.2011-11-16.5915764975 at 0xad69252cL>
               user: <ImplicitAcquisitionWrapper - at 0xadb88c34L>
               escape: False
               nothing: <NoneType - at 0xb72035e0L>
               container: <ImplicitAcquisitionWrapper event.2011-11-16.5915764975 at 0xad69252cL>
               request: <instance - at 0xad175a0cL>
               wrapped_repeat: <SafeMapping - at 0xad7c402cL>
               traverse_subpath: <list - at 0xad8581ccL>
               default: <object - at 0xb6d3b630L>
               loop: {...} (1)
               context: <ImplicitAcquisitionWrapper event.2011-11-16.5915764975 at 0xad69252cL>
               translate: <function translate at 0xad83a87cL>
               root: <ImplicitAcquisitionWrapper Zope at 0xadb88eb4L>
               options: {...} (0)
               view: <ContextualEditPortletManagerRenderer - at 0xad5ff64cL>

 - Expression: "provider:plone.leftcolumn"
 - Filename:   .../eggs/plonetheme.sunburst-1.1.5-py2.7.egg/plonetheme/sunburst/skins/sunburst_templates/main_template.pt
 - Location:   (150:46)

 - Source:     ... k replace="structure provider:plone.leftcolumn" />
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^
 - Arguments:  repeat: {...} (0)
               template: <ViewPageTemplateFile - at 0xbd419bccL>
               views: <ViewMapper - at 0xad10a18cL>
               modules: <instance - at 0xb9e33f4cL>
               args: <tuple - at 0xb6d1c02cL>
               here: <ImplicitAcquisitionWrapper event.2011-11-16.5915764975 at 0xadb88c0cL>
               user: <ImplicitAcquisitionWrapper - at 0xadb88c34L>
               nothing: <NoneType - at 0xb72035e0L>
               container: <ImplicitAcquisitionWrapper event.2011-11-16.5915764975 at 0xadb88c0cL>
               request: <instance - at 0xad175a0cL>
               wrapped_repeat: <SafeMapping - at 0xadb88e14L>
               traverse_subpath: <list - at 0xad10a82cL>
               default: <object - at 0xb6d3b630L>
               loop: {...} (1)
               context: <ImplicitAcquisitionWrapper event.2011-11-16.5915764975 at 0xadb88c0cL>
               view: <SimpleViewClass from .../eggs/plone.app.portlets-2.1.6-py2.7.egg/plone/app/portlets/browser/templates/manage-contextual.pt manage-portlets at 0xad10aa8cL>
               translate: <function translate at 0xad204d4cL>
               root: <ImplicitAcquisitionWrapper Zope at 0xadb88eb4L>

options: {...} (0)

Change History

comment:1 Changed 2 years ago by runyaga

  • Description modified (diff)

comment:2 Changed 2 years ago by kleist

  • Priority changed from blocker to major
  • Component changed from User Experience and Interface to Templates/CSS

comment:3 Changed 2 years ago by runyaga

I disagree with this change from blocker to major. This is a major UX problem which results in a complete interruption of Flow and a nasty error. I'm unclear what the prioritization rules are for bugs but I believe anything that consistently provokes an error or ends up with a end user being locked out of the system (or being at a UI dead end) is considered blocker. Plone has to be first a Product with a rock solid user experience. Having such an obvious problem is unacceptable to me, and I would mark it a blocker.

comment:4 Changed 2 years ago by kleist

  • Priority changed from major to critical

Well, who am I to decide? Better so?

comment:5 Changed 2 years ago by runyaga

  • Owner set to fafhrd
  • Cc runyaga, fafhrd added

comment:6 Changed 2 years ago by runyaga

  • Status changed from new to closed
  • Resolution set to fixed
  • Description modified (diff)
Note: See TracTickets for help on using tickets.