Personal tools
You are here: Home Documentation Error References KeyError during restrictedTraverse
Support

Get Help

Join our chat rooms or support forums if you have more specific questions.

Plone Training
Learn how to design, build, and deploy a website in Plone through one of the numerous Plone training sessions around the world.
Find Plone training…
 
Document Actions

KeyError during restrictedTraverse

Warning: This item is marked as outdated.

This Error Reference applies to: Plone 2.1.x, Plone 2.0.x
This Error Reference is intended for: Any audience.

Page template engine is unable to find files. KeyError occuring during restrictedTraverse. E.g. KeyError: 'field'.

You have a traceback similiar to this:

Traceback (innermost last):
  Module ZPublisher.Publish, line 113, in publish
  Module ZPublisher.mapply, line 88, in mapply
  Module ZPublisher.Publish, line 40, in call_object
  Module Products.Archetypes.BaseFolder, line 57, in __call__
  Module Shared.DC.Scripts.Bindings, line 311, in __call__
  Module Shared.DC.Scripts.Bindings, line 348, in _bindAndExec
  Module Products.CMFCore.FSPageTemplate, line 188, in _exec
  Module Products.CMFCore.FSPageTemplate, line 127, in pt_render
  Module Products.PageTemplates.PageTemplate, line 102, in pt_render
   - <FSPageTemplate at /Plone/base_view used for /Plone/usability>
  Module TAL.TALInterpreter, line 206, in __call__
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 709, in do_useMacro
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 426, in do_optTag_tal
  Module TAL.TALInterpreter, line 411, in do_optTag
  Module TAL.TALInterpreter, line 406, in no_tag
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 740, in do_defineSlot
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 426, in do_optTag_tal
  Module TAL.TALInterpreter, line 411, in do_optTag
  Module TAL.TALInterpreter, line 406, in no_tag
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 688, in do_defineMacro
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 732, in do_defineSlot
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 426, in do_optTag_tal
  Module TAL.TALInterpreter, line 411, in do_optTag
  Module TAL.TALInterpreter, line 406, in no_tag
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 688, in do_defineMacro
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 426, in do_optTag_tal
  Module TAL.TALInterpreter, line 411, in do_optTag
  Module TAL.TALInterpreter, line 406, in no_tag
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 709, in do_useMacro
  Module TAL.TALInterpreter, line 250, in interpret
  Module TAL.TALInterpreter, line 477, in do_setLocal_tal
  Module Products.PageTemplates.TALES, line 221, in evaluate
   - URL: file:Archetypes/skins/archetypes/base.pt
   - Line 82, Column 8
   - Expression: standard:'field_macro | here/widgets/field/macros/view'
   - Names:
      {'container': <PloneSite at /Plone>,
       'context': <ApplicationFolder at /Plone/usability>,
       'default': <Products.PageTemplates.TALES.Default instance at 0x0145B670>,
       'here': <ApplicationFolder at /Plone/usability>,
       'loop': <Products.PageTemplates.TALES.SafeMapping object at 0x0450F120>,
       'modules': <Products.PageTemplates.ZRPythonExpr._SecureModuleImporter instance at 0x0144E800>,
       'nothing': None,
       'options': {'args': ()},
       'repeat': <Products.PageTemplates.TALES.SafeMapping object at 0x0450F120>,
       'request': <HTTPRequest, URL=http://localhost/usability>,
       'root': <Application at >,
       'template': <FSPageTemplate at /Plone/base_view used for /Plone/usability>,
       'traverse_subpath': [],
       'user': admin}
  Module Products.PageTemplates.Expressions, line 183, in __call__
  Module Products.PageTemplates.Expressions, line 171, in _eval
  Module Products.PageTemplates.Expressions, line 127, in _eval
   - __traceback_info__: here
  Module Products.PageTemplates.Expressions, line 306, in restrictedTraverse
   - __traceback_info__: {'path': ['widgets', 'field', 'macros', 'view'], 'TraversalRequestNameStack': ['view', 'macros']}
  Module OFS.ObjectManager, line 704, in __getitem__
KeyError: 'field'

Looks like something was unable to access "field" which is part of some object. Crucial information here is traceback_info:

__traceback_info__: {'path': ['widgets', 'field', 'macros', 'view'], 'TraversalRequestNameStack': ['view', 'macros']}

Here you can see page template path which was accessed. In this case, it was widgets/field.pt -> macros/view. Page template was unable to find field.pt in widgets directory, thus KeyError: "field".

This is caused by missing files in skin folders. In my case, I had created widgets folder under the skin folder of my own product. This override Archetypes internal skin folder, thus making field.pt unavailable. The solution was to rename my skins/usability/widgets folder to skins/usability/usability_widgets.

by Mikko Ohtamaa last modified October 16, 2005 - 18:43
Contributors: Mikko Ohtamaa
All content is copyright Plone Foundation and the individual contributors.

For any issues with the web site functionality, please file a ticket.

Please consult the policy on plone.org content if you want your content published on this site.

Servers and hosting by